На днях видел на форуме тему с публикацией об обновлении yt-dlp. Посмотрел а там решение на python. И не то что есть какие либо предубеждения к python, я просто в него не умею. И подумалось, а что если написать обновлялку на bash. И написал. Есть 2 решения одно простое как топор , и заключается в том чтоб обновлять каждые две недели с помощью at , используя pip. Оно работает , но не по факту, и может попасть на обновление , а может и не попасть. То есть версия yt-dlp в репе обновилась, а at еще не сработал, и можем поймать не стабильную работу yt-dlp, а это не есть хорошо,как вариант можно настроить at на обновление каждые 3дня,но мне хотелось более точного и изящного решения. Потому пошёл по другому пути. В причину того что PyPI перестал поддерживать команду pip search , пришлось парсить страницу с текущей версией yt-dlp в репе pip
https://pypi.org/project/yt-dlp/#files Чтоб долго не рассусоливать перехожу к самому скрипту а вернее скриптам ибо их 2, плюс десктоп файл для автозагрузки .
Для того чтоб скрипты заработали предварительно скопируем из архива или в каталоге ~/.local/bin создадим каталог /yt-dlp_upd_advansed .
В каталоге/.local/bin/ yt-dlp_upd_advansed/ мы увидим ( или создадим если будем этот код копировать отсюда) скрипты yt_dlp_adw.sh и yt_dlp_adw_upd_engine.sh , а также desktop файл yt_dlp_upd.desktop .
Десктоп файл необходимо скопировать в каталог ~/.config/autostart/ все скрипты должны быть отмечены как исполняемые. Теперь при прохождении 5 минут после загрузки системы , если в репе pip появится новая версия yt-dlp , скрипт проиграет соответствующую мелодию, откроет окно с эмулятором терминала xterm в котором можно будет пронаблюдать за обновлением yt-dlp с помощью pip. Если версия yt-dlp в репе будет соответствовать установленной в системе, то проиграется короткая мелодия, отличающаяся от мелодии при ситуации когда обновление в репе будет, кроме мелодии никаких других окон открываться не будет и мы услышим просто короткий звук,который будет обозначать что обновлений нет.
---------------------------
исправил код с автоматизацией ввода пароля sudo для пользователей у которых он так настроен (в большинстве случаев), код для пользователей у которых sudo не требует пароля так же сохранен в коде но закоментирован .
-------------------------------------------
скрипт для обновления yt-dlp, который можно брать помечен в теле этого поста
он более правильный ине использует pip ,
---!!!---остальные скрипты написаны по не знанию того что yt-dlp может обновляться сам,
--!!!--Этот скрипт не берем--!!!--смотрим дальше
--------------------------------------------
Привожу код скриптов и desktop файла
yt_dlp_adw.sh
#!/bin/bash
sleep 5m
#получаем версию yt-dlp с сайта https://pypi.org/project/yt-dlp/#files
irepo_ver="$(curl https://pypi.org/project/yt-dlp/#files | grep -o 'yt_dlp-[0-9.]*-py2.py3-none-any.whl' | grep -o 'yt_dlp-.*\.whl' | head -n 1)"
#чистим вывод от имени yt-dlp и оставляем только версию
export repo_ver="$(echo "$irepo_ver" | grep -oE 'yt_dlp-([0-9]+\.){2}[0-9]+' | sed 's/yt_dlp-//')"
#закоментированая repo_ver= для теста работы скрипта
#export repo_ver="2023.7.7"
#получаем установленую версию yt-dlp
export sis_ver="$(pip show yt-dlp | grep Version: | awk '{print $2}')"
#сравниваем версии и если версия из pip репы больше системной обновляем yt-dlp
if [[ $repo_ver > $sis_ver ]]; then
echo "repo_ver больше sis_ver"
export DISPLAY=:0 && xterm -e 'sh $HOME/.local/bin/yt-dlp_upd_advansed/yt_dlp_adw_upd_engine.sh'
else
paplay /usr/share/sounds/freedesktop/stereo/bell.oga
echo "версия yt-dlp актуальна"
fi
yt_dlp_adw_upd_engine.sh
#!/bin/bash
paplay /usr/share/sounds/freedesktop/stereo/service-login.oga
#вместо password вводим пароль вашего пользователя
echo "$password" | sudo -S pip3 install -U yt-dlp
#если у вас sudo настроен без ввода пароля строку выше комментируем, а строку ниже раскомментируем
#sudo pip3 install -U yt-dlp
echo "yt-dlp обновлён"
echo "c версии-->> " ". $sis_ver"
echo "до версии-->> " ". $repo_ver"
sleep 8
yt_dlp_upd.desktop
[Desktop Entry]
Type=Application
Name=yt-dlp_upd
Exec=/home/user/.local/bin/yt-dlp_upd_advansed/yt_dlp_adw.sh
Categories=System;
вместо /home/user в Exec= пишем своего пользователя
архив со скриптами скачать можно тут
https://disk.yandex.ru/d/jtAe2d-t6rfAkwПрошу тестов и критики.
upd: по дороге домой с работы, пришла мысль что если убрать интерактивщину и звуковые уведомления , то скрипт бы в тихую обновлял yt-dlp, и пользователь даже бы не знал об этом, чутка позже выложу и такую версию скрипта, может кто то желает именно такой сценарий.