Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Программирование и компиляция => Тема начата: Neyel от 28 Июль 2020, 17:56:25

Название: Скачивание видео по горячей клавише
Отправлено: Neyel от 28 Июль 2020, 17:56:25
Как в скрипте прочесть выделенный пользователем текст? Чтобы его вставить куда либо, достаточно нажать СКМ - можно ли как-то сымитировать нажатие этой кнопки в скрипте Bash и передать значение переменной?

Скрипт в работе:
(http://ipic.su/img/img7/tn/screenshot.1596613375.png) (http://ipic.su/img/img7/fs/screenshot.1596613375.png)
Скрипт (/home/live/ytdl.sh):
Код
output_dir=/home/live/Видео
param='bestvideo[height<=1080][vcodec!=vp9]+bestaudio[acodec!=opus]'
URL=$(xsel -o)
cd $output_dir
youtube-dl --no-playlist -f $param "${URL}"
sleep 5
На горячую клавишу повешено исполнение:
Код
urxvt -e sh /home/live/ytdl.sh
Как повесить хоткей на команду (http://forum.puppyrus.org/index.php?topic=22904.0)
В качестве горячей клавиши выбрано F11. Работает так - выделяем URL видео, нажимаем хоткей (в моём случае F11) - и видео скачивается
Для корректной работы скрипта нужно установить youtube-dl и xsel
Название: Re: Как выделенный текст прочесть в скрипте
Отправлено: krasnyh от 28 Июль 2020, 18:57:32
xsel -o
Пример, trans - Перевод текста по hotkey (http://forum.puppyrus.org/index.php?topic=21869.30).
Название: Re: Как выделенный текст прочесть в скрипте
Отправлено: Neyel от 28 Июль 2020, 19:18:00
xsel -o
Вроде работает, но на LFA xsel пришлось устанавливать (из коробки - нет)
Название: Re: Как выделенный текст прочесть в скрипте
Отправлено: Neyel от 28 Июль 2020, 20:58:38
Создал скрипт ytdl.sh:
Код
output_dir=/home/live/Видео
param='bestvideo[height<=1080]+bestaudio[acodec!=opus]'
URL=$(xsel -o)
cd $output_dir
youtube-dl -f $param $URL
sleep 5
На горячую клавишу повесил:
Код
urxvt -e sh /home/live/ytdl.sh
Выделяем URL видео, нажимаем клавишу - открывается терминал и видео скачивается. По-моему удобно  :)
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 28 Июль 2020, 21:39:03
Потестил - скачал десяток клипов - получилось просто изумительно  :angel: В качестве хоткея выбрал F11
Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 29 Июль 2020, 09:39:01
открывается терминал и видео скачивается
А зачем оно в скачанном виде? Посмотреть можно и без скачки
Чем на уровне идеи удобнее , чем http://forum.puppyrus.org/index.php?topic=22037.0 ?
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 29 Июль 2020, 12:17:03
А зачем оно в скачанном виде? Посмотреть можно и без скачки
Делаю подборку клипов, чтоб посмотреть их на телевизоре (в телевизор втыкается носитель - в моём случае флешка - и можно смотреть). Очень удобно :) Ещё например в моей деревне телевизор есть, а инета нет - то есть сделал подборку клипов и смотри потом сколько хочешь :) Плюс иногда приходит знакомый, который просит понакачать музыки - у него инета нет - вообщем случаев много, поэтому сделал скачивание по горячей клавише - т.е. ищещь на youtube клип, нажимаешь клавишу - и он скачивается - очень удобно...
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 29 Июль 2020, 12:27:36
Обновил строку параметров:
Код
param='bestvideo[height<=1080][vcodec!=vp9]+bestaudio[acodec!=opus]'
Так как в одном случае скачалось видео с кодеком vp9 и мой телевизор с ним не справился
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 29 Июль 2020, 12:49:06
Чем на уровне идеи удобнее , чем http://forum.puppyrus.org/index.php?topic=22037.0
Я так понял - видео там открывается в mpv. Т.е. зашёл на страницу youtube - открылся проигрываетль mpv и видео воспроизводится. Зачем мне это? Мне нужно просто скачать видео, посмотреть его (чтоб оценить) я могу и на странице youtube
Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 30 Июль 2020, 08:53:08
видео там открывается в mpv
да. Или в настройках меняется на любой другой мкедиаплеер. Например на smplayer (показывает ютуб без ytdl)
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 03 Август 2020, 16:18:45
Придумал как вырезать id видео из URL адреса (в том случае, если используется youtube):
Код
echo "${URL}" | sed 's/.*[?,&]v=//' | sed -r 's/&.+//'
Вырезает подстроку начинающиеся на "?v=" или на "&v=" и заканчивающиеся на "&". Может можно как-то покороче?
Название: Re: Скачивание видео по горячей клавише
Отправлено: krasnyh от 03 Август 2020, 16:30:54
А надо? Если какие-то проблемы с необработкой URL, то поставить его в кавычки.
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 03 Август 2020, 16:37:32
поставить его в кавычки.
Действительно, работает - спасибо за ценное замечание
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 04 Август 2020, 17:01:29
Вот пример, когда кавычки меняют логику работы:
Код
live@lfa1801:~$ youtube-dl "https://www.youtube.com/watch?v=8WYHDfJDPDc&list=RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE&index=9"
[youtube:playlist] Downloading playlist RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE - add --no-playlist to just download video 8WYHDfJDPDc
[youtube:playlist] RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE: Downloading page 1 of Youtube mix
[download] Downloading playlist: RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE
[youtube:playlist] playlist RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE: Collected 0 video ids (downloading 0 of them)
[download] Finished downloading playlist: RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE
live@lfa1801:~$
А если тот же урл вставить без кавычек - то качается видео:
Код
live@lfa1801:~$ youtube-dl https://www.youtube.com/watch?v=8WYHDfJDPDc&list=RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVM-IUbW60RkbE&index=9
[1] 11182
[2] 11183
live@lfa1801:~$ [youtube] 8WYHDfJDPDc: Downloading webpage
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Nelly - Dilemma ft. Kelly Rowland (Official Video)-8WYHDfJDPDc.f135.mp4
[download] 100% of 23.67MiB in 00:15
[download] Destination: Nelly - Dilemma ft. Kelly Rowland (Official Video)-8WYHDfJDPDc.f251.webm
[download] 100% of 4.50MiB in 00:02
[ffmpeg] Merging formats into "Nelly - Dilemma ft. Kelly Rowland (Official Video)-8WYHDfJDPDc.mkv"
Deleting original file Nelly - Dilemma ft. Kelly Rowland (Official Video)-8WYHDfJDPDc.f135.mp4 (pass -k to keep)
Deleting original file Nelly - Dilemma ft. Kelly Rowland (Official Video)-8WYHDfJDPDc.f251.webm (pass -k to keep)
Из выхлопа можно посмотреть решение:
- add --no-playlist to just download video 8WYHDfJDPDc
Ну или вырезать ид видео с помошью sed -  даже не знаю как лучше
Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 04 Август 2020, 17:11:57
url точно не разбит на 2 строки?
Название: Re: Скачивание видео по горячей клавише
Отправлено: krasnyh от 04 Август 2020, 17:40:56
Кавычки, это официальное решение (https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command) с сайта youtube-dl, чтобы убрать влияние &.
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 04 Август 2020, 17:55:06
url точно не разбит на 2 строки?
Не разбит, такое форматирование текста на форуме папируса
Кавычки, это официальное решение с сайта youtube-dl, чтобы убрать влияние &.
Добавил --no-playlist в строку параметров youtube-dl, кавычки оставил. Может в процессе тестов выявятся ещё какие-нибудь "подводные камни"
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 05 Август 2020, 10:44:46
Сделал объявление в контакте - https://vk.com/puppyrus обновил шапку
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 07 Август 2020, 14:04:12
Обнаружил ещё один кодек, неподдерживаемый моим телевизором - av1 - добавил запрет в строку параметров youtube-dl
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 07 Август 2020, 14:19:47
Поставил:
'bestvideo[height<=1080][vcodec=!vp9][vcodec!=av1]+bestaudio[acodec!=opus]'
все равно качается с кодеком av1 - как поставить запрет сразу на несколько видеокодеков,может кто-нибудь знает?
Название: Re: Скачивание видео по горячей клавише
Отправлено: krasnyh от 07 Август 2020, 22:14:04
'bestvideo[height<=1080][vcodec!=vp9][vcodec!^=av01]+bestaudio[acodec!=opus]'

Исправил две ошибки и добавил параметр ^ (начинается с).
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 08 Август 2020, 09:09:07
Всё заработало, спасибо +
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 08 Август 2020, 09:18:38
И ещё один вопрос - при скачке длительных видео (когда качаются видео с относительно большим размером) - закачка иногда обрывается (по-моему ошибка "хост не отвечает") - но если запустить закачку заново - то она начинается с места обрыва. В связи с этим вопрос - какие кода youtube-dl возвращает (и возвращает ли) в случае успешной закачки? Тогда закачку можно было бы повесить на цикл while, который продолжается до тех пор, пока youtube-dl не вернёт нужный код (код успешной загрузки)
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 08 Август 2020, 10:29:36
Проверил - echo "$?" показывает 0 в случае успешной закачки и 1 - в случае обрыва - сделаю цикл на основе этой информации
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 08 Август 2020, 11:23:36
Переделал скрипт:
Код
output_dir=/home/live/Видео
param='bestvideo[height<=1080][vcodec!=vp9][vcodec!^=av01]+bestaudio[acodec!=opus]'
URL=$(xsel -o)
cd $output_dir
return_code=1
while [ "$return_code" != "0" ]
do
youtube-dl --no-playlist -f $param "${URL}"
return_code=$?
done
sleep 5
Может будут какие-то замечания?
Название: Re: Скачивание видео по горячей клавише
Отправлено: totiks2012 от 31 Август 2020, 08:57:05
Neyel спасибо, скрипт очень пригодился, качаю с ютюбчика клипы, для старого нетбука который совсем плохо держит  интернет, а так фоном иногда глазом посмотреть пока я паяю ваяю там что то, еще раз спасибо!
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 31 Август 2020, 14:41:53
Пользуйтесь на здоровье :)
А говорили:
А зачем оно в скачанном виде?
Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 31 Август 2020, 15:37:00
для старого нетбука который совсем плохо держит  интернет,
Не очень понятно что именно имеется ввиду
Если слабое железо - вряд ли комп вывезет и воспроизведение видео

А вообще народное творчество - главная фишка нашего проекта  ;)
Название: Re: Скачивание видео по горячей клавише
Отправлено: totiks2012 от 31 Август 2020, 18:08:42
sfs он показывает видео и из ютюба через интернет но чтоб, добится этого нужно снизить качество на минималках, и подождать минут пять чтоб закешировался видос, но мой панове не хочет так, ему и качество подавай и и ждать он не хочет, а вот через smplayer как ни странно 720р показывает даже перематывать можно, в общем послужит еще старичёк, у меня Acer aspire one. А насчет народного творчества,bash довольно таки сильная штука, я себе и плеерок для радио написал (украл идею в одном дистрибутиве линукс, там консольное радио скармливало mpv ссылку, так вот мне не понравилось организация плейлиста, и я написал всё по своему как смог, и чтоб мне было удобнее и проще добавлять радиостанции и ссылки к ним,написал в начале на lua так как bash тогда совсем не знал, но пришел период самоизоляции делать было нех... нефиг и переписал его на bash, и как мне кажется в bash многое реализовать оказалось проще), и напоминатель питья таблеток, мне их два раза в день пить нужно, и скрипт исправно это делает, ничего особеного, но написание скриптов это самое интересное и приятное время провождение!
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 31 Август 2020, 22:28:48
написание скриптов это самое интересное и приятное время провождение!
Полностью с вами согласен :)
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 21 Сентябрь 2020, 14:26:10
Так как скриптом пользуюсь часто, решил написать ещё один вспомогательный скрипт.

Если вы обратили внимание - ролики скачиваются в /home/live/Видео - и постоянно я вручную перекидываю их в какую-либо папку на флешке (не обязательно в одну и ту же).

Т. е. нужно написать скрипт, который при запуске предалагает выбрать папку, в какую перекачивать файлы, далее следует список видеофайлов в /home/live/Видео с галочками (ntf -k) - выбираем нужные - нажимаем Ok и они копируются в соответствующую папку.

Выбор папки хотел реализовать следующим образом - открывается окошко с полем для редактирования, в нём прописан путь по умолчанию - его можно изменить вручную,или - справа от этого поля кнопка с многоточием - можно нажать кнопку и выбрать папку с помощью средств ntf. Как сделать окошко:

0)Две кнопки - Ok и Отмена
1)В нём поле для редактирования с путём по умолчанию или с путём, выбранном при предыдущем запуске
2)Справа от этого поля кнопка выбора папки
3)Если папка  была выбрана с помощью кнопки, то соответствующий путь должен появиться в поле для редактирования

Возможно ли такое на bash'е? Если нет - как сделать подобное с помощью Си?

Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 21 Сентябрь 2020, 14:35:04
Возможно ли такое на bash'е?
На голом - нет. Там нет вообще средств вывода в Хы. Только в консоль
как сделать подобное с помощью Си?
Изучить Си или gtkdialog\yad (они попроще, вдохновляться можно моим sfs-get).
Название: Re: Скачивание видео по горячей клавише
Отправлено: DdShurick от 21 Сентябрь 2020, 19:10:55
Gtkdialog примеры (http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde02-GtkdialogExamples/single/)
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 22 Сентябрь 2020, 09:28:21
Код
export MAIN_DIALOG='
 <vbox>
  <frame Widgets>
    <entry>
      <input>date</input>
      <variable>ENTRY</variable>
    </entry>
  </frame>
  <frame Button actions>
    <hbox>
      <button>
        <label>fileselect</label>
        <action type="fileselect">ENTRY</action>
      </button>
    </hbox>
  </frame>
  <hbox>
   <button ok></button>
   <button cancel></button>
  </hbox>
 </vbox>
'

gtkdialog --program=MAIN_DIALOG
(http://ipic.su/img/img7/tn/screenshot.1600756010.png) (http://ipic.su/img/img7/fs/screenshot.1600756010.png)
Тут выбор файла, а мне нужен выбор папки - как на gtkdialog выбрать папку, может кто-нибудь знает?
Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 22 Сентябрь 2020, 09:51:28
мне нужен выбор папки
ntf -c
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 14 Март 2022, 17:20:14
'bestvideo[height<=1080][vcodec!=vp9][vcodec!^=av01]+bestaudio[acodec!=opus]'
Сейчас качаю вручную, но строка пригодилась - по умолчанию видео скачивается с кодеком vp9, а мой телевизор его не умеет
Название: Re: Скачивание видео по горячей клавише
Отправлено: Neyel от 14 Март 2022, 17:27:12
А зачем оно в скачанном виде? Посмотреть можно и без скачки
Телевизор 2011 г выпуска, youtube на нём не работает. Ставил как-то forkplayer - глючил. Вообщем плюнул и качаю длинные видосы на флешку и смотрю на телевизоре (длинные видосы удобнее смотреть на телевизоре чем на компе ИМХО)
Название: Re: Скачивание видео по горячей клавише
Отправлено: krasnyh от 14 Март 2022, 17:35:17
Сто лет назад, когда еще интернет не был безлимитным, так же делал. Сейчас фильмы смотрю только онлайн. Речь о компе.

тавил как-то forkplayer - глючил.
Как говорили умные люди, покупая СмартТВ вы столкнетесь с проблемами в будущем, когда прошивка безнадежно устареет. А поддержка будет перенацелена на новые версии ТВ.
Название: Re: Скачивание видео по горячей клавише
Отправлено: sfs от 14 Март 2022, 17:41:34
купите твбокс
Название: Re: Скачивание видео по горячей клавише
Отправлено: knn от 15 Март 2022, 12:57:49
качаю вручную,
может кому линк (https://github.com/knstntnn/klishe-dialog/blob/main/.config/klishe/ytdl-MPlayer_Formats.sh) пригодится ( не всегда именно бэстовое видео необходимо...)
---------
зы
не всё чего хотелось бы там  на данный момент доделано, и т.д. т.п. ...
Название: Re: Скачивание видео по горячей клавише
Отправлено: krasnyh от 15 Март 2022, 13:25:03
может кому линк пригодится
Может будет интересно, как реагирует скрипт ytdl-MPlayer_Formats.sh на системы (prar21.10-x86_64-04.iso), где yt-dlp вместо youtube-dl и yad вместо Xdialog, и mpv вместо mplayer.

Код
live@roll2110 % ./ytdl-MPlayer_Formats.sh
./ytdl-MPlayer_Formats.sh: строка 21: Xdialog: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 16: Xdialog: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 21: youtube-dl: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 23: Xdialog: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 35: Xdialog: команда не найдена


./ytdl-MPlayer_Formats.sh: строка 51: Xdialog: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 56: mplayer: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 56: youtube-dl: команда не найдена
./ytdl-MPlayer_Formats.sh: строка 56: youtube-dl: команда не найдена
ffmpeg version n4.4 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.1.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
: No such file or directory
rm: невозможно удалить '/tmp/stderrFile': Нет такого файла или каталога


p.s. Давал ссылку давненько на easybashgui (https://forum.puppyrus.org/index.php?topic=23518.msg179024#msg179024), который является усредненным вариантом, позволяя писать гуи независимо от того, какая именно библиотека dialog, yad, zenity, kdialog, xdialog, gtkdialog установлена на конкретной сборке. Жаль что разрабы не увидели в easybashgui преимуществ унификации.
Название: Re: Скачивание видео по горячей клавише
Отправлено: knn от 15 Март 2022, 13:38:57
на нескольких системах у меня по-простому : youtube-dl = link --> yt-dlp
--------------------
в последнее время нет компьютерного комп-времени, но если что-то делаю - прибиваю к dialog/Xdialog/ [ хз почему их где-то нет . когда-то примерз к ранееупомянутым]
-----------
т.к. железо у меня сколько-то времени как даунгрейдилось - тем паче души не чаю в 'mplayer'
Название: Re: Скачивание видео по горячей клавише
Отправлено: krasnyh от 15 Март 2022, 13:51:13
yad вместо Xdialog
Dialog есть, в скрипте он упомянут.
Название: Re: Скачивание видео по горячей клавише
Отправлено: knn от 15 Март 2022, 14:20:57
-- извиняюсь - получается ранее не ту ссылку дал - если для "скачивания в различных форматах" , то -
https://github.com/knstntnn/klishe-dialog/blob/main/.config/klishe/ytdl-Load_Formats.sh
Название: Re: Скачивание видео по горячей клавише
Отправлено: totiks2012 от 14 Октябрь 2023, 07:50:09
не знаю если еще актуально но я использую для выбора и создания каталога скачивания, peco, чистая консоль,peco лучше всего брать с github  https://github.com/peco/peco/releases , из архива поместить руками в /usr/bin, скрипт весьма интересным  получился ,универсальный вот он https://disk.yandex.ru/d/LC0V3-1SLFfIdw , в зависимостях xsel, yt-dlp,то есть перед тем как нажать загрузить видео, нужно скопировать ссылку в буфер, ну там по интерактивностям скрипта всё понятно, есть нечто подобное и для wget.