LINUX.ORG.RU

Избранные сообщения Imker

Проблема свободного места на диске под UBUNTU

Форум — Admin

Добрый вечер. Столкнулся с проблемой нехватки места на основном дисе. Стоит 1 тр жесткий диск, программ установлено Server Ubuntu 22.04? Posgress и 1C Сервер. Всего на 20 гб. В системе показывает, что свободно 50 гб, 800 гб занято непонятно чем. Пробовал очищать от логов и удаленных файлов, не помогло. может 1с логами заваливает? Папок больше 5-6 гб нет. Может кто подскажет что делать. Просьба не умничать а предложить решение. Я в линуксе новичёк. Спасибо.

 

Essen
()

Хочу говорить про Bash

Форум — General

Для себя уже навалял кучку полезных скриптиков и походу изучения bash периодически их перечитываю, и что-то там допиливаю, но понял, что надо что-то посложнее попробовать и этакое поближе к программированию.

Решил попробовать написать программку, которая удаляет дубликаты строк из .bash_history (там более 7000 строк у меня). Мне это показалось достойной задачкой для начинающего башиста, хотя и (может быть) довольно бесполезной. Кстати, есть такая программа shell-history-cleaner (кажется на расте написана, давно себе собрал, работает, но видимо заброшена автором), я пользуюсь, но попробовать свои силы надо было.

В результате мне удалось сделать задуманное, но хочется поговорить и о «неудачных» вариантах, которые может быть были бы более удачными, если бы я больше знал о bash и linux вообще, так что категорически приветствуется критика и подсказки более правильных решений или каких-нибудь хитростей командной строки.

Так как-то сложилось, что я упорно откладывал изучение массивов на потом, и когда наконец более-менее разобрался с индексированным массивом, то сразу приступил к делу, чтобы заодно закрепить прочитанное в книжках, поэтому первый «неудачный» вариант будет об этом.

Программа рабочая, делает дело, но долго. Мой файл перемалывает за минуту с небольшим, при этом нагружая одно виртуальное ядро процессора на 100%. Зная лоровские нарративы об ущербности bash как языка программирования, я подумал, что вот и столкнулся с подобной ущербностью, поэтому просто искал возможность хоть как-то оптимизировать процесс.

Я не знаю никаких алгоритмов, так что рассудил так: надо взять (последнюю) строку, удалить дубликаты, строку положить в файл и так по кругу.

file=$1
mapfile -t list < <(grep -v '^$' $file)
while ((${#list[*]})); do
    line=${list[-1]}
    unset list[-1\]
    for i in ${!list[*]}; do
        [[ $line == "${list[i]}" ]] &&
            unset list[i\]
    done
    final+=("$line")
done
printf '%s\n' "${final[@]}" | tac > $file

Для таких же любителей как я поясню идею кода. На его краткость отлично повлиял тот факт, что в истории командной строки надо сохранять последние уникальные строки, то есть работать надо с конца файла, а у индексированных массивов как раз есть стабильная ссылка на последний индекс: array[-1]. То есть не надо ничего переворачивать.

Как я понимаю, самое тугое место в скрипте — сравнение строк, и что-то более быстрых вариантов походу нет. Далее надо думать о многопоточности, но я пока до этого не дозрел.

Поскольку на данном этапе я застрял и вроде бы ясно, что тема с массивами как-то всё усложняет, то решил написать скриптик в стиле unix-way, и искренне полагал, что это будет правильным решением задачки, ведь утилиты все написаны суровыми дядьками на Си, и там всё без дураков — быстро и надёжно. Пришла идея отбросить всю эту возню с поиском и удалением, а просто взять всё — и отфильтровать.

file=$1
list=$(tac $file | grep -v '^$')
while [[ $list ]]; do
    read -r line <<< $list
    list=$(grep -Fxv "$line" <<< $list)
    echo "$line"
done | tac > $file

Чтобы уважаемый лорчанин не хельпал ключи -F -x, напомню: F — читает regex буквально, а x — помещает выражение между ^$, иначе пришлось бы использовать ключ -P (perlre) и выражение выглядело бы как говно: "^\Q$line\E$", а работало бы ещё медленней, возможно, но это не точно. (кстати, я был весьма разочарован узнать, что с sed такое вообще не провернуть — никак не заставить подстановку читать буквально).

Итак, на короткой дистанции (разумеется, у меня был короткий вариант файла для тестов) этот скрипт почти в два раза обогнал предыдущий, но — что было для меня полнейшим разочарованием! — он совершенно заткнулся даже на средней дистанции (нагружая процессор на четверть, но размазано по потокам), то есть я его тупо прервал на какой-то там 10-ой минуте, так что о проверке на полном файле речи уже не шло. Как это понимать — не знаю, поясните. 1000 строк он смолол где-то за секунду с небольшим, а 3000 — уже застрял.

Ладно, пока не было новых идей, прочитал главу про ассоциативные массивы и сразу почуял, что это походу то, что мне надо, но я не ожидал, что настолько! Свойство хеша не дублировать индексы как будто специально создано для решения этой задачки. Быстро стало понятно, что надо просто переложить строки из обыкновенного массива в индексы хеша, а в значения хеша — номера индексов строк из обыкновенного массива.

file=$1
mapfile -t list < <(grep -v '^$' $file)
declare -A hash
for i in ${!list[*]}; do
    hash[${list[i]}]=$i
done
for i in "${!hash[@]}"; do
    final[${hash[$i]}]="$i"
done
printf '%s\n' "${final[@]}" > $file

Это было круто! Нет смысла даже говорить о времени выполнения этой программы, она работает почти мгновенно, менее двух десятых секунды.

Получается на bash таки можно что-то программировать и оно может работать быстро.


UPD

Наконец подсказали, что во втором скрипте у меня ошибка: read -r очищает строку от пробельных символов по краям, поэтому grep её не находит и получается бесконечный цикл. Спасибо @mky: Хочу говорить про Bash (комментарий)
Теперь этот скрипт переваривает тот же файл за 15-16 секунд!

file=$1
list=$(tac $file | grep -v '^$')
while [[ $list ]]; do
    IFS=$'\n' read -r line <<< $list
    list=$(grep -Fxve "$line" <<< $list)
    echo "$line"
done | tac > $file

UPD2

Спасибо анону, подкинул идею отфильтровать хешем в один проход: Хочу говорить про Bash (комментарий)

file=$1
mapfile -t list < <(tac $file | grep -v '^$')
declare -A hash
for i in "${list[@]}"; do
    [[ ${hash[$i]} ]] && continue
    hash[$i]=added
    final+=("$i")
done
printf '%s\n' "${final[@]}" | tac > $file

UPD3

Продолжаю благодарить анона, что замотивировал таки раскурить sort. Итак, почти самый шустрый вариант:

file=$1
list=$(< $file \
    grep -vn '^$' |
    tac |
    sort -t: -k2 -u |
    sort -t: -k1,1n |
    cut -d: -f2-)
echo "$list" > $file

На моём компе меньше трёх сотых секунды!


UPD4

Дошли руки до AWK и это походу победитель на скорость в стиле unix-way (анон давал такой рецепт в треде).

file=$1
list=$(tac $file |
    grep -v '^$' |
    awk '!added[$0]++')
tac <<< $list > $file

На моём компе — девять тысячных секунды!

 

papin-aziat
()

Как проверить количество использованного трафика в amazon ec2?

Форум — General

Я создал инстанс t2 micro, недавно узнал что там ограничение трафика в 15гб на месяц. Вопрос, как и где посмотреть сколько уже было использовано данных или сколько осталось?

Может существуют на самом Линуксе программы, которые показывают, сколько ушло с сервера трафика?

 , ,

truebin
()

vokoscreenNG 4.4.0

Новости — Мультимедиа
vokoscreenNG 4.4.0
Группа Мультимедиа

1 января состоялся выпуск vokoscreenNG 4.4.0 — кроссплатформенной программы для записи видео c экрана и веб-камеры. Приложение написано на языке C++ с использованием фреймворка Qt 6.6 и распространяется по лицензии GNU GPLv2.

( читать дальше... )

>>> Больше скриншотов

>>> Список всех изменений

 , , , ,

dataman
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 1

Статьи — Desktop

ВСТУПЛЕНИЕ

Звуковая система PipeWire принесла, без преувеличения, революцию в мир десктопно-мультимедийного Linux. Наконец то эта ОС получила продуманную, сделанную по уму понимающими в теме людьми, и сделанную качественно звуковую систему. Многие ее возможности присутствовали и раньше, в других более старых звуковых системах, но в PipeWire они собраны воедино и сформировали целую единую платформу, на которой можно реализовать огромное количество самых разных задач.

Но в пользовательской среде, эта революция практически не заметна, часто можно встретить мнение вида «ну играет ютуб и играет, мне хватает». Поэтому я решил сделать небольшой цикл статей, посвященный более продвинутому использованию PipeWire, раскрывающему его, без преувеличения, поразительные возможности. (Ну и чтобы изучить их самому в процессе, хехехе).

( читать дальше... )

 , ,

James_Holden
()

Профессиональный видеомонтаж в Davinci Resolve под Linux — начало работы

Статьи — Desktop

Davinci Resolve/Davinci Resolve Studio — это профессиональная проприетарная программа для полного цикла видеомонтажа с обвесом. Прямой конкурент Adobe Premier + After Effects + Audition. Именно так, включает в себя функциональность всех трёх пакетов. Сильные стороны: чуть ли не единственное решение для работы с цветом в принципе, активное использование видеоадаптера, приятная ценовая политика — бесплатной версии хватит всем, платная стоит $300 единоразовым платежом. И конечно поддержка Linux, которой у Adobe кажется будет никогда.

( читать дальше... )

 ,

Dispetcher14
()

MacOS внедряет запрет на запуск стороннего софта

Форум — Talks

Привет, ЛОР!

Не знаю, как местные макоюзеры об этом ещё не отписались, но в общем сабж. Начиная c MacOS 15.1, из системы по-умолчанию убрана поддержка запуска неподписанных программ и, что важно, из настроек убрана даже опция, отключавшая такое поведение. Пока что проверку подписи всё можно можно отключить, выполнив spctl --master-disable из под рута, но общая тенденция показывает, что скоро запуск Emacs на макбуке будет фантастикой, а не реальностью. Такие дела :(

Найдено тут: https://www.osnews.com/story/141055/bug-or-intentional-macos-15-1-completely-removes-ability-to-launch-unsigned-applications/

 , , ,

hateyoufeel
()

Дедупликация в Btrfs

Статьи — Администрирование
Дедупликация в Btrfs

Btrfs — это замечательная файловая система, главными фишками которой являются легковесные снапшоты, реализуемые через Copy-On-Write (COW), и сжатие. Она показала высокую надежность и стабильность, и именно поэтому она включена в ядро Linux. Однако, даже наличие COW не позволяет избежать избыточности данных на уровне блоков.

( читать дальше... )

 ,

rtxtxtrx
()

Готовый рецепт по настройке спящего в ОЗУ (s3) режима на ноутбуке MAIBENBEN x558

Форум — Linux-hardware

По умолчанию ноутбук идет с установленной Ubuntu 22.02 на m2 накопителе. Проблема в том что вроде все работает кроме режима сна (S3) .
Но в этой модели внедрили новинку -режим S0iX ,который сейчас еще плохо потдерживаеться в Linux .По умолчанию при работе на встроенной AMD интегральной карте -при нажатии на кнопку сон -засыпает но не просыпаеться,черный экран,на клавиши вообще не реагирует.

Решение -сносим предустановленный дистрибутив,переходим на более свежую версию *untu LTS 24.04. В свежеустановленном дистрибутиве удаляем установленный по умолчанию пакет xserver-xorg-video-nouveau и возможно xserver-xorg-video-nouveau-hwe-18.04 ,а так как остаються конфликтные libdrm-nouveau2 (их из за зависимостей трудно удалить) вносим в /etc/modprobe.d/ blacklist-nouveau.conf :
blacklist nouveau
options nouveau modeset=0
Также блокируем конфликтный драйвер vesafb. В /etc/modprobe.d/blacklist framebuffer.conf редактируем (убираем #) blacklist vesafb
Разрешаем AMD микрокод чистим файл ,(оставляем пустым) /etc/modprobe.d/amd64-microcode-blacklist.conf .Переписываем загрузочный файл initrd.img ,даем команду от root update-initramfs -u .Перезагружается и затем ставим метапакет nvidia-driver-550-open и все ОБЯЗАТЕЛЬНЫЕ зависимости + пакет switcheroo-control .Через приложения nvidia-settings,nvidia-smi и по желанию любой 3д тест убеждаемся что все работает (при необходимости переключаемся на NVIDIA командой switcherooctl ) и если всё нормально перезагружаемся. Заходим в UEFI и переключаемся на nvidia карточку [dGPU only].
Теперь по идее должно засыпать и просыпаться от кнопки по умолчанию Zz.
На работу вентиляторов не обращайте внимание, отключатся где то через 3-5 минут.

 , , решено

maximnik0
()

Делаем из Vim IDE

Статьи — Разработка
Делаем из Vim IDE

В стародавние времена когда деревья были большими, трава зеленее, а мороженное стоило по 10 копеек, на Земле жили динозавры, и эти динозавры программировали в Vim.

( читать дальше... )

 , ,

rtxtxtrx
()

смена курсора при смене раскладки

Форум — General

привет. реально ли менять курсор при смени раскладки в linux?

например DMZ-Black на DMZ-White

 , ,

adeptubuntovec
()

Настройка VS Code для работы с Python

Статьи — Разработка
Настройка VS Code для работы с Python

VS Code — это мощный инструмент для разработки на Python, который легко настроить для работы с такими полезными утилитами, как pylint, black и isort. Эти инструменты помогут поддерживать чистоту кода, единый стиль и упорядоченность импортов. Для поиска и устранения ошибок пригодится встроенный отладчик debugpy, обеспечивающий удобный процесс дебага. В дополнение ко всему можно подключить искусственного помощника для ускорения написания кода. В этой статье мы рассмотрим установку и настройку этих инструментов, а также их интеграцию с VS Code.

( читать дальше... )

 , , , ,

rtxtxtrx
()

Что такое Flatpak и какие проблемы он решает

Статьи — Desktop

Flatpak - это универсальная система упаковки приложений для Linux, которая стремится решить проблему множества форматов пакетов. Она позволяет разработчикам создавать единый пакет приложения, который может быть установлен на различных дистрибутивах Linux без необходимости перекомпиляции.

( читать дальше... )

 , , , ,

rtxtxtrx
()

Исчезновение текущего каталога в пути к файлу в Bash-скрипте

Форум — General

Пытаюсь перевести библиотеку звуковых файлов в WAV-формат. Для этого написал простой скрипт:

#!/bin/bash
     
find \( -name \*.mp3 \
     -or -name \*.MP3 \
     -or -name \*.Mp3 \
     -or -name \*.ogg \
     \) -print0 \
     | while IFS= read -r -d '' file; 
do
    fileWithoutExt="${file%.*}"
    command="ffmpeg -loglevel quiet -i \"${file}\" -y -ar 44100 \"${fileWithoutExt}.wav\""
    echo "Команда: ${command}"
done

Этот скрипт выдает следующую последовательность команд, и эти команды правильные:
Команда: ffmpeg -loglevel quiet -i "./Last love jam.mp3" -y -ar 44100 "./Last love jam.wav"
Команда: ffmpeg -loglevel quiet -i "./WindJam/Minus 4.mp3" -y -ar 44100 "./WindJam/Minus 4.wav"
Команда: ffmpeg -loglevel quiet -i "./WindJam/Minus 3.mp3" -y -ar 44100 "./WindJam/Minus 3.wav"
Команда: ffmpeg -loglevel quiet -i "./WindJam/Minus 2.mp3" -y -ar 44100 "./WindJam/Minus 2.wav"
Команда: ffmpeg -loglevel quiet -i "./WindJam/Minus 1.mp3" -y -ar 44100 "./WindJam/Minus 1.wav"
Команда: ffmpeg -loglevel quiet -i "./Thrash-electronics JAM.mp3" -y -ar 44100 "./Thrash-electronics JAM.wav"
Команда: ffmpeg -loglevel quiet -i "./Jingle Bells - Backing Track.mp3" -y -ar 44100 "./Jingle Bells - Backing Track.wav"
Команда: ffmpeg -loglevel quiet -i "./Road  Jam minus2.mp3" -y -ar 44100 "./Road  Jam minus2.wav"
Команда: ffmpeg -loglevel quiet -i "./Chamba Jam/1.ogg" -y -ar 44100 "./Chamba Jam/1.wav"
Команда: ffmpeg -loglevel quiet -i "./Chamba Jam/5.ogg" -y -ar 44100 "./Chamba Jam/5.wav"
...

Осталось дело за малым: выполнить эти команды. Добавляю в конец цикла строку:
eval "${command}"

И наблюдаю такую дичь:
Команда: ffmpeg -loglevel quiet -i "./Last love jam.mp3" -y -ar 44100 "./Last love jam.wav"
Команда: ffmpeg -loglevel quiet -i "WindJam/Minus 4.mp3" -y -ar 44100 "WindJam/Minus 4.wav"
Команда: ffmpeg -loglevel quiet -i "/WindJam/Minus 3.mp3" -y -ar 44100 "/WindJam/Minus 3.wav"
Команда: ffmpeg -loglevel quiet -i "./WindJam/Minus 2.mp3" -y -ar 44100 "./WindJam/Minus 2.wav"
Команда: ffmpeg -loglevel quiet -i "/WindJam/Minus 1.mp3" -y -ar 44100 "/WindJam/Minus 1.wav"
Команда: ffmpeg -loglevel quiet -i "./Thrash-electronics JAM.mp3" -y -ar 44100 "./Thrash-electronics JAM.wav"
Команда: ffmpeg -loglevel quiet -i "/Jingle Bells - Backing Track.mp3" -y -ar 44100 "/Jingle Bells - Backing Track.wav"
Команда: ffmpeg -loglevel quiet -i "./Road  Jam minus2.mp3" -y -ar 44100 "./Road  Jam minus2.wav"
Команда: ffmpeg -loglevel quiet -i "/Chamba Jam/1.ogg" -y -ar 44100 "/Chamba Jam/1.wav"
Команда: ffmpeg -loglevel quiet -i "./Chamba Jam/5.ogg" -y -ar 44100 "./Chamba Jam/5.wav"
...

Тут видно, что по неизвестным причинам в командных строках перед именем файла, вместо ожидаемых символов "./", могут быть следующие варианты:

- "./"
- «/»
- «»

Соответственно, обрабатываются не только лишь все файлы.

Я пробовал вместо eval и такие варианты для выполнения сконструированной команды:
"${command}"
и
${command}

Но тогда вообще другая дичь происходит: в первом варианте лезут ошибки (запускал с set -x):
Команда: ffmpeg -loglevel quiet -i "./Last love jam.mp3" -y -ar 44100 "./Last love jam.wav"
+ 'ffmpeg -loglevel quiet -i "./Last love jam.mp3" -y -ar 44100 "./Last love jam.wav"'
./soundConvert05.sh: строка 22: ffmpeg -loglevel quiet -i "./Last love jam.mp3" -y -ar 44100 "./Last love jam.wav": Нет такого файла или каталога

А во втором варианте команда вроде как выполняется, никакой ошибки не показывается, но WAV-файла не появляется:
Команда: ffmpeg -loglevel quiet -i "./Last love jam.mp3" -y -ar 44100 "./Last love jam.wav"
+ ffmpeg -loglevel quiet -i '"./Last' love 'jam.mp3"' -y -ar 44100 '"./Last' love 'jam.wav"'

Хотя опять же, если ручками выделить команду и выполнить ее в консоли, она выполнится правильно и WAV-файл будет сгенерирован.

Вопрос: как в этих ваших линуксах просто выполнить сконструированную команду, которая лежит в переменной?

 , , ,

Xintrea
()

Приложения и утилиты, которые стоит попробовать

Статьи — Администрирование
Приложения и утилиты, которые стоит попробовать

Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…

( читать дальше... )

 , ,

rtxtxtrx
()

Колонки фонят

Форум — Multimedia

Фонят колонки. При загрузк системы (вероятно после прогрузки ядра) появляется фон, в процессе загрузки происходит щелчок в динамиках и фон на секунду исчезает, затем появляется снова.

Если включить какое-нибудь воспроизведение (браузер или плеер) - фон исчезает, даже если поставить воспроизведение на паузу. Стоит закрыть плеер или закрыть воспроизводящую звук вкладку браузера - фон появляется снова. Т.е. как-будто если некая программа захватила звуковое устройство - фон пропадает, а как освободило - снова фонит.

В винде все работает нормально.

Что с этим можно сделать& Звук alsa, если это имеет значение. Ну и snd-hda-intel

 , ,

Chord
()

Ютуб у меня перестал лагать :)

Форум — Desktop

Обновление:

-Способ более не работает или будет работать не у всех.

Короче в firefox 115 ESR килобиты и вечная подгрузка раз в секунду (ну не всегда, но один фиг периодические ожидания), в firefox 127 такая же херня.

  • about:config network.http.http3 влючен

Просто ради эксперимента открыл chromium

  • Version 126.0.6478.126 (Official Build) built on Debian trixie/sid, running on Debian trixie/sid (64-bit)

Принудительно включил этот tcp over udp

И стало как раньше, скачки 20+ мегабит подгрузки на несколько секунд и мои 1080p видосики не лагают больше.

Оно походу идёт в обход кеширующих серверов ибо у http3 с этим мягко говоря проблемы. Но я даже смотреть не буду откуда именно сейчас трафик мне по нормальному летит. А то накаркаю ещё и каркуши его сломають. Кому интересно сами ковыряйтесь :)

А сначала я хотел CDNы у себя заблокировать дабы оно пыталось трафик откуда то ещё брать, а оно вот так расчехлилось.

 , видосики, ,

LINUX-ORG-RU
()

Настраиваем и используем ZSH вместо Bash, или превращаем терминал в раскраску

Статьи — Администрирование
Настраиваем и используем ZSH вместо Bash, или превращаем терминал в раскраску

Я не буду расписывать преимущества ZSH над Bash, отмечу лишь то, что ZSH используется по дефолту во многих дистрибутивах Linux, а также с недавних пор и в macOS (тут должна быть шутка про Торвальдса и его макбук). Главной причиной повсеместной замены bash на zsh является встроенный механизм модулей, поверх которого было навалено такое великолепие, как Oh My Zsh.

( читать дальше... )

 , ,

rtxtxtrx
()

M3U плейлисты на вашем ПеКа

Форум — Talks

Сидел свою коллекцию ссылок разбирал, в том числе на видео по разной тематике, оно разбросано по разным плейлистам и хуже того по разным площадкам, вопщем проще было тематические плейлисты из разных мест объединить в один M3U файлик, выкинуть ненужное и смотреть уже на локальном плеере, а не прыгать в браузере туда сюда. Для этой специфической хотелки вот утилитка, может кому надо , это просто обёртка над yt-dlp.

Пример

m3u-tube 'https://youtube.com/playlist?list=PL4FxkpKzI-TpB2seZeP4IZ8_NSad7G9hm&feature=shared' 

Вывод

#EXTM3U
#EXTINF:-1,'Bill Gates - Deposition Part 4 of 12:'
https://www.youtube.com/watch?v=HhdDZk45HDI
#EXTINF:-1,'Bill Gates - Deposition Part 5 of 12:'
https://www.youtube.com/watch?v=n_yI27mVHc4
#EXTINF:-1,'Bill Gates - Deposition Part 6 of 12:'
https://www.youtube.com/watch?v=GDjAYvnKL8c
#EXTINF:-1,'Bill Gates - Deposition Part 7 of 12:'
https://www.youtube.com/watch?v=aqNE7qGHiLQ
#EXTINF:-1,'Bill Gates - Deposition Part 8 of 12:'
https://www.youtube.com/watch?v=v8QbaOvFHyk
#EXTINF:-1,'Bill Gates   Deposition Part 9 of 12:'
https://www.youtube.com/watch?v=odJNphz9GPg
#EXTINF:-1,'Bill Gates   Deposition Part 11 of 12:'
https://www.youtube.com/watch?v=YBPITEcCYb0
#EXTINF:-1,'Bill Gates   Deposition Part 12 of 12:'
https://www.youtube.com/watch?v=is0LVBlYPsM

Справка

[Usage: m3u-tube -u [URL] -o [FILENAME]

This simple util generate M3U playlist from
youtube, rutube playlists or maybe other web sites.
Multiple playlists can be combined into one M3U playlist.
yt-dlp does all the work, m3u-tube just generates the output.

Argsuments:

    -                       Read one or more URL from pipe
    -h --help               This help message
    -u --url     [URL]      One or more playlist URL links
    -i --input   [FILENAME] Filename for read URL links
    -o --output  [FILENAME] Falename for save M3U playlist
    -v --verbose            Show processing log, and enable yt-dlp warnings
    [URL]                   One or more playlist URL links, divide space

    If use multiple URL links, they combine in single M3U playlist.
    Multiple links are separated by a space or new line. Bad links or
    links without playlists ignored with information message.

Examples:

    m3u-tube -i urls.txt -o play.m3u    # create M3U from file with URL links
    m3u-tube 'url' -v > out.m3u         # create M3U from link, show processing
    m3u-tube 'url1' 'url2' 'url3'       # concat three playlists to one M3U
    cat urls.txt | m3u-tube -           # create M3U from pipe data
    cat urls.txt | m3u-tube url1 - url2 # combine pipe and argumens

Notice:

    If playlists not collected... Well, sometimes websites broken,
    You need update yt-dlp to latest or add changes in yt-dlp for support.
    For check what is broken try run it:

    yt-dlp --flat-playlist --print url 'your_url_playlist'

See also:

    yt-dlp(1)


Исходники

git clone https://gitflic.ru/project/blogdron/m3u-tube.git

Всё я спать. В 5 утра огород копать :(
Досвиданья

 , ,

LINUX-ORG-RU
()

Шрифты с отличающейся кириллицей

Форум — Development

Лет 5 ждал, пока кто-то сделает, и в итоге сам сделал. Задача состояла в том, чтобы сделать шрифт, в котором визуально отличаются пары букв, которые обычно выглядят одинаково, например, „с“ и „c“. Тогда при любой работе с двуязычными текстами в программировании можно будет избегать ошибок, связанных с перепутыванием этих букв.

https://tvoygit.ru/budden/dr_cyr

Сделан необходимый минимум, один моноширинный шрифт - модифицированный Ubuntu Mono, и один пропорциональный - модифицированный Golos Text, одно начертание для каждого. Проигнорировано всё, кроме русской кириллицы и основной латиницы, возможны косяки. Идея, заложенная в шрифты, немного отличается.

Художники обругали, простой народ похвалил, на данный момент порядка 4 внедрений.

 , ,

den73
()