Разработки проекта PuppyRus > Программирование и компиляция

Обновление yt-dlp с помощью bash скриптами

(1/5) > >>

totiks2012:
На днях видел на форуме тему с публикацией об обновлении 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, и пользователь даже бы не знал об этом, чутка позже выложу и такую версию скрипта, может кто то желает именно такой сценарий.

totiks2012:
вот версия скрипта которая тихо обновит yt-dlp, звуковые уведомления оставил, ну чтоб как то ориентироваться в том что происходит
-------------------------------------------
--!!!--Этот скрипт не берем--!!!--смотрим дальше
-------------------------------------------
upd : Установил libnotify-bin, добавил строки для вывода  уведомлений о событиях через notify-send, сообщит если версия актуальна и выведет версию, если обновится уведомит и покажет с какой до какой версии был обновлен
---------------------
исправил код с автоматизацией ввода пароля sudo для пользователей у которых он так настроен (в большинстве случаев), код для пользователей у которых sudo не требует пароля так же сохранен в коде но закоментирован .
--------------------

скачать тут https://disk.yandex.ru/d/HLCjHpQd-kOJmw
--------------------
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 и оставляем только версию
repo_ver="$(echo "$irepo_ver" | grep -oE 'yt_dlp-([0-9]+\.){2}[0-9]+' | sed 's/yt_dlp-//')"

#закоментированая repo_ver= для теста работы скрипта
# repo_ver="2023.7.7"
#получаем установленую версию yt-dlp
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"
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
notify-send "yt-dlp" "ОБНОВЛЕН--с версии $sis_ver--до--$repo_ver"
   
    else
    paplay /usr/share/sounds/freedesktop/stereo/bell.oga
    notify-send "yt-dlp" "ВЕРСИЯ  АКТУАЛЬНА-- $sis_ver"
fi
--- Конец кода ---

десктоп файл тот же , но для удобства повторю его код тут , напоминаю его нужно поместить в ~/.config/autostart/
вместо /home/user в Exec= пишем своего пользователя

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;
--- Конец кода ---

totiks2012:
я совершено упустил из внимания один немаловажный факт. У меня система с настроеным без парольным sudo. То есть если у вас sudo требует пароль то в скрипте  строка sudo pip3 install -U yt-dlp , должна быть echo "$password" | sudo -S pip3 install -U yt-dlp, вместо password пароль вашего пользователя, знаю что не хорошо светить паролем в скриптах, но мне автоматизация дороже. Сейчас займусь заменой этой строки в опубликованых скриптах.

sfs:

--- Цитата: totiks2012 от 08 Сентябрь 2023, 13:35:46 ---На днях видел на форуме тему с публикацией об обновлении yt-dlp. Посмотрел а там решение на python. И не то что есть какие либо предубеждения к python, я просто в него не умею. И подумалось, а что если написать обновлялку на bash
--- Конец цитаты ---
На питоне сам yt-dlp. Мой обновлятор на bash. небольшая обвязка вокруг yt-dlp --update. Без pip
Т.е. Вы явно изобретаете велосипед и при этом перемудрили  ;)

imp:

--- Цитата: sfs от 11 Сентябрь 2023, 10:55:39 ---Без pip
--- Конец цитаты ---
Вполне солидарен. Лучше без него.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии