youtube-dl-grabber, Упрощение скачивания видео в live-sysv |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
youtube-dl-grabber, Упрощение скачивания видео в live-sysv |
Поделиться |
5.2.2018, 15:49
Сообщение
#1
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
Пакет простых скриптов youtube-dl-grabber предназначен для упрощения скачивания youtube видео в терминале live-sysv без использования подсистемы X.
Запущеный из терминала, скрипт скачивает youtube видео в текущий каталог: youtube-dl-grab Код youtube-dl -f 18 $(grep -E 'youtube.com/watch' ~/.elinks/globhist | tail -n1 | rev | awk '{print $2}' | rev | awk -F '&' '{print $1}') То же, но для скачивания плейлиста целиком youtube-dl-grab-playlist Код youtube-dl -ciwf 18 -o "%(autonumber)s-%(title)s.%(ext)s" $(grep -E 'youtube.com/watch' ~/.elinks/globhist | grep list | tail -n1 | rev | awk '{print $2}' | rev) Зависимости. Depends: Код youtube-dl grep elinks coreutils util-linux gawk Код Использование youtube-dl-grab, youtube-dl-grab-playlist: - Использование браузера elinks обязательно: скрипты используют его globhist. - Через браузер elinks зайдите на страницу youtube с понравившимся видео. - Закройте браузер не уходя со страницы. - Если открывали страницу с видеороликом, запускайте youtube-dl-grab. Если открывали страницу с плейлистом, запускайте youtube-dl-grab-playlist. - youtube-dl-grab скачивает или одиночное видео или первый ролик плейлиста в текущий каталог. youtube-dl-grab-playlist скачивает весь плейлист в текущий каталог. Видео скачивается в качестве 360p. - После скачивания, находясь в этом текущем каталоге, запустите space2lowline: скрипт во всех файлах текущего каталога заменит пробелы на символ lowline (подчёркивание). - Для просмотра всех видео в этом каталоге, запустите просмотр командой mplayer-vc ./*.mp4 Путь к файлу и имя файла не должны содержать пробелов. Просмотр в полноэкранном режиме. Масштабирование видео в mplayer-vc автоматическое - автоподстройка под разрешение монитора. Громкость - клавиши 9,0 Включить/выключить отображение времени - клавиша o Клавиши курсора, PgUp, PgDn - перемотка. Ещё один скрипт утянутый не помню откуда: Скрипт запущенный в текущем каталоге, не рекурсивно, заменяет в именах файлов текущего каталога, пробел на символ lowline (подчёркивание), что в свою очередь позволяет просматривать эти видеоролики через mplayer-vc, по возможности сводя количество ручных действий до минимума: Код #!/bin/sh OLDIFS=$IFS IFS=$'\n' for x in `find . -name "* *"` do IFS=$OLDIFS mv "$x" ${x// /_} done (под public domain?) Работа скриптов проверена в live-sysv-v3 Сообщение отредактировал speccyfighter - 5.2.2018, 16:15 |
|
|
5.2.2018, 22:08
Сообщение
#2
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Отлично, Юра будешь их пакетить ? Я конечно могу их закостылить в хомяк altlinux-у но это будет наверное не совсем правильно. Насчет help-ов тоже надо подумать они начинают накапливаться
|
|
|
6.2.2018, 3:27
Сообщение
#3
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
На заметку:
How can I add a help method to a shell script? Цитата The first argument to a shell script is available as the variable $1, so the simplest implementation would be if [ "$1" == "-h" ]; then echo "Usage: `basename $0` [somestuff]" exit 0 fi You should make a habit of wrapping the if in [[ ... ]] for conditionals to avoid a bad parsing of a variable, source: github.com/bahamas10/bash-style-guide#bashisms – JREAM Mar 19 '17 at 15:38 Yes, although the OP didn't specify bash, and [ is the POSIX-compliant version. – seb Mar 20 '17 at 16:16 Note - For using inside function: You should replace exit 0 with return if you don't want to terminate your shell after run your function. (I've done it before 😂) – Illuminator Sep 7 '17 at 16:19 man bash Код return [n] Causes a function to exit with the return value specified by n. Вызывает выход функции с возвращаемым значением, заданным параметром n. Также: [SOLVED] how can i add a help method into a shell script? Сообщение отредактировал speccyfighter - 6.2.2018, 3:40 |
|
|
6.2.2018, 11:22
Сообщение
#4
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
Набросал заготовку вывода help.
Теоретически, можно следовать логике: если root, выводить help на английском; если не root, на русском Код if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then if [ $UID = 0 ]; then echo echo "Usage: `basename $0` [options]" echo echo "Options:" echo " -h, --help - this help" echo else echo echo "Использование: `basename $0` [опции]" echo echo " Опции:" echo " -h, --help - этот help" echo fi exit 0 fi youtube-dl -f 18 $(grep -E 'youtube.com/watch' ~/.elinks/globhist | tail -n1 | rev | awk '{print $2}' | rev | awk -F '&' '{print $1}') Работать будет так: Код # /home/altlinux/youtube-dl-grab.sh -h Usage: youtube-dl-grab.sh [options] Options: -h, --help - this help Код $ ./youtube-dl-grab.sh -h Использование: youtube-dl-grab.sh [опции] Опции: -h, --help - этот help Но основные языки (кроме английского), это русский, украинский, татарский. Первые два потяну, остальные нет. Кто его знает какой ещё может понадобится. Да и не хочется мне расписывать один хэлп на десятке локалей. Останавливаюсь на выводе хэлпа только на английском: язык международный, общепринятый по-умолчанию на компьютерах, со времён спектрума и микрош, и это сократит и объём работы и объём скрипта, а отдавать предпочтение одному языку, кроме общепринятого дефолта, плохая идея. Код if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then echo echo "Usage: `basename $0` [options]" echo echo "Options:" echo " -h, --help - this help" echo exit 0 fi youtube-dl -f 18 $(grep -E 'youtube.com/watch' ~/.elinks/globhist | tail -n1 | rev | awk '{print $2}' | rev | awk -F '&' '{print $1}') Хэлп дополнится описанием использования скрипта. Чёрт... Но есть проблема, языковая, на предмет хэлпа: - Современные пользователи компьютера, нулевые, где-то на уровне плинтуса. Ожидать от них уровня пользователей 90-тых, безнадёжная затея. А вворачивать в скрипт ещё одну проверку по /etc/sysconfig/i18n у меня желание близкое к нулю. В глубоком раздумье... |
|
|
7.2.2018, 12:39
Сообщение
#5
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
Окончательный вариант.
Скрипт притерпел существенные изменения: - Два скрипта сведены в один, - youtube-dl-grabber. - Если системная локаль ru_RU.UTF-8 и пользователь не root, help выводится на русском языке. Иначе, на английском. - Если браузер elinks закрывался на странице с видеороликом, будет скачан видеоролик. Если браузер elinks закрывался на странице с плейлистом, будет скачан плейлист. Листинг скрипта Код #!/bin/sh if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then SYSLANG=`grep "^LANG=" /etc/sysconfig/i18n | cut -f2 -d '='` if [ $UID != 0 ] && [ "$SYSLANG" = "ru_RU.UTF-8" ]; then echo echo "Использование: `basename $0` [опции]" echo echo "Опции:" echo " -h, --help этот help" echo echo "- Браузером elinks зайдите на страницу youtube с видео." echo "- Использование браузера elinks обязательно:" echo " скрипты используют его globhist." echo "- Закройте браузер не уходя со страницы." echo "- Если в elinks открывали страницу с видеороликом," echo " скачается видеоролик в текущий каталог." echo " Если открывали страницу с плейлистом, скачается" echo " плейлист" echo " Видео скачивается в качестве 360p." echo echo "- После скачивания, находясь в этом текущем каталоге," echo " запустите space2lowline:" echo " скрипт в файлах текущего каталога заменит пробелы" echo " на символ lowline (подчёркивание)." echo "- Рекомендуемый просмотр:" echo " mplayer-vc ./*.mp4" echo " Путь к файлу и имя файла не должны содержать пробелов." echo " Просмотр в полноэкранном режиме." echo " Масштабирование видео в mplayer-vc автоматическое -" echo " автоподстройка под разрешение монитора." echo " Громкость - клавиши 9,0" echo " Включить/выключить отображение времени - клавиша 'o'" echo " Клавиши курсора, PgUp, PgDn - перемотка." echo else echo echo "Usage: `basename $0` [options]" echo echo "Options:" echo " -h, --help this help" echo echo "- Browser elinks, go to the youtube page with the video." echo "- Use elinks browser necessarily:" echo " scripts use its globhist." echo "- Close the browser without leaving the page." echo "- If the page with the video was opened in elinks, the video" echo " is downloaded to the current directory." echo " If you have opened the page with a playlist, the playlist" echo " will be downloaded." echo " The video is downloaded as 360p." echo echo "- After downloading, being in this current directory," echo " start space2lowline:" echo " the script in the files of the current directory will" echo " replace spaces on the Lowline character." echo "- Recommended viewing:" echo " mplayer-vc./*.mp4" echo " The file path and file name must not contain spaces." echo " Viewing in full screen mode." echo " Video scaling in mplayer-vc automatic -" echo " this action is under the resolution of the monitor." echo " The volume keys 9,0" echo " To turn on/off the time display - key 'o'" echo " Cursor keys, PgUp, PgDn - rewinding." echo fi exit 0 fi VLINK=`grep -E 'youtube.com/watch' ~/.elinks/globhist | tail -n1 | rev | awk '{print $2}' | rev` IFPLS=`grep -E 'youtube.com/watch' ~/.elinks/globhist | tail -n1 | rev | awk '{print $2}' | rev | grep '\&list=' | wc -l` if [ $IFPLS = 0 ]; then youtube-dl -f 18 $VLINK else youtube-dl -ciwf 18 -o "%(autonumber)s-%(title)s.%(ext)s" $VLINK fi Остаётся вопрос: Стоит ли включать в этот же пакет, скрипт space2lowline или его следует положить отдельно? Сообщение отредактировал speccyfighter - 7.2.2018, 12:44 |
|
|
7.2.2018, 13:02
Сообщение
#6
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
Отлично, Юра будешь их пакетить ? Я конечно могу их закостылить в хомяк altlinux-у но это будет наверное не совсем правильно. Я не пакажер-асс и это займёт неопределённое время. Насчет help-ов тоже надо подумать они начинают накапливаться Под хэлпы и прочее, надо выделять отдельный каталог. Неплохую идею про /opt предложил Юра. Ну и ИМХО: Плохо и халатно написанный хэлп, хуже его полного отсутствия. Помощь, должна помогать пользователю, а не порождать ещё больше вопросов. Шэлл может быть простым и для повседневных задач. Нужно просто повернуться к пользователю лицом, а не... |
|
|
7.2.2018, 21:17
Сообщение
#7
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
1) Я тоже ни разу не асс , если надо - постараюсь тебе с этим делом помочь
2) Давай подумаем над структурой всего этого безобразия: a) Каталог для help-ов /opt/help ? б) Формат help -ов текстовой или html ? В html можно вставить картинки и открывать его в том же netsurf-fb ( когда-то мы так и делали с help-ами по wmsmall-у и wmchildren-у). Вопрос в другом - нужны ли здесь картинки ? в) Каталог меню делаем в /home/altlinux/menu/ или /home/altlinux/.0_menu/ или в /opt/menu ? г) язык меню русский или английский ? д) скрипты пихаем в /usr/bin в /opt или еще куда ? |
|
|
7.2.2018, 23:59
Сообщение
#8
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
2) Давай подумаем над структурой всего этого безобразия: a) Каталог для help-ов /opt/help ? Пробежался по FHS: FHS допускает /opt/doc, /opt/info, /opt/man Склоняюсь к /opt/info, - на мой взгляд, наши хэлпы не doc и не man. 2) б) Формат help -ов текстовой или html ? В html можно вставить картинки и открывать его в том же netsurf-fb ( когда-то мы так и делали с help-ами по wmsmall-у и wmchildren-у). Я не противник html-а, но на мой взгляд ascii предпочтительнее: он читается даже тогда, когда полсистемы вдрыск улетело. Но я одновременно и против академических заумностей в хэлпах и хауту: help (англ.) помощь (а не геморрой) В моём понимании, это нечто среднее между технически правильным, но без заворота кишок, и при этом не принимая пользователя за дебила по-умолчанию. 2) б) Вопрос в другом - нужны ли здесь картинки ? Моё сугубо личное: Если документации нужны картинки, то написана она, хреново. Кстати, любые выбросы можно снять из /dev/vcs в ascii, если в той консоли нет кириллицы. А потом затолкать это в хэлп. Это в смысле man vcs на предмет fold (сграббить весь текст из 3-ей виртуальной консоли): Код fold -w N /dev/vcs3 >file Сделает перевод строк через каждые N символов. Где N, это columns (символов в строке) из Код stty -a|head -n1 чтобы это правильно отображалось как не скриншот терминала, а терминал в виде ascii текста. в) Каталог меню делаем в /home/altlinux/menu/ или /home/altlinux/.0_menu/ или в /opt/menu ? Я бы предпочёл, чтобы меню с хэлпами лежало в одном месте, как группа файлов относящихся к неофициальной документации. Но не в $HOME, - пусть это будет общесистемно, для всех. г) язык меню русский или английский ? Сложный вопрос: С одной стороны русскоязычному пользователю проще читать на русском. С другой, мои компьютерные амбиции выходят далеко за рамки русскоязычных пользователей. Но как сделаешь так и будет д) скрипты пихаем в /usr/bin в /opt или еще куда ? Для скриптов не входящих в пакеты, я бы предпочёл не отходить от FHS и /usr/local счёл бы предпочтительным, но bin и sbin должны быть описаны не только у root Код # cat ./root/.bashrc # пакет rootfiles # .bashrc # User specific aliases and functions alias cp='cp -i' alias mv='mv -i' alias rm='rm -i' alias d='ls' alias s='cd ..' alias p='cd -' # Read /etc/inputrc if the variable is not defined. [ -n "$INPUTRC" ] || export INPUTRC=/etc/inputrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi PATH=/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin ENV=$HOME/.bashrc USERNAME="root" export USERNAME ENV PATH но и /usr/local/bin в переменной PATH пользователя. 1) Я тоже ни разу не асс , если надо - постараюсь тебе с этим делом помочь Я обычно подглядываю куда ни попадя и сваливаю в свой спэк всё, что там должно быть. Иногда это долгие поиски. Например дэскрипшн на русском и английском в одном спэке. При сильно ограниченном дисковом. Сообщение отредактировал speccyfighter - 8.2.2018, 0:05 |
|
|
9.2.2018, 21:13
Сообщение
#9
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Юра , держи в качестве посильной помощи :
http://altlinuxclub.ru/repo/Repo_P8/SRPMS.....1-alt1.src.rpm http://altlinuxclub.ru/repo/Repo_P8/i686/R...1-alt1.i686.rpm Запихал оба скрипта в один пакет ( ибо шибко ленив ) , они устанавливаются в /usr/bin. В общем - дальше пакет твой, это только первоначальные наброски . Если все нормально попроси Дана пересобрать под 64-бита, да biuldreq вовсю гадит 3-им питоном - поэтому если хочешь собрать под p7 сборочные зависимости надо будет менять. Сообщение отредактировал kostyalamer - 9.2.2018, 21:14 |
|
|
11.2.2018, 18:37
Сообщение
#10
|
|
Крупный специалист Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1 |
Юра , держи в качестве посильной помощи : http://altlinuxclub.ru/repo/Repo_P8/SRPMS.....1-alt1.src.rpm http://altlinuxclub.ru/repo/Repo_P8/i686/R...1-alt1.i686.rpm Запихал оба скрипта в один пакет ( ибо шибко ленив ) , они устанавливаются в /usr/bin. В общем - дальше пакет твой, это только первоначальные наброски . К сожалению не помогло, а так хотел успеть до сборки лайва... Твой спек что сделал: Он положил скрипт youtube-dl-grabber, затем взял этот же скрипт и положил его с именем space2lowline. А настоящий space2lowline даже не попал в пакет. Смотри, у них одинаковая длинна в байтах: Код # rpm -qpvl youtube-dl-grabber-0.1-alt1.i686.rpm -rwxr-xr-x 1 root root 4271 фев 9 19:00 /usr/bin/space2lowline -rwxr-xr-x 1 root root 4271 фев 9 19:00 /usr/bin/youtube-dl-grabber Спек собирал дедовским методом: по кускам из других спеков. Ушло часов пять на поиск взрыва и сборку по своему спеку. К сборке лайва не успел. Код # rpm -qpvl /home/wilder/RPM/SRPMS/youtube-dl-grabber-0.2-alt1.src.rpm -rw-r--r-- 1 builder builder 1060 фев 11 12:55 space2lowline -rw-r--r-- 1 builder builder 4271 фев 9 19:00 youtube-dl-grabber -rw-r--r-- 1 builder builder 1325 фев 11 17:11 youtube-dl-grabber.spec Код # rpm -qivl youtube-dl-grabber Name : youtube-dl-grabber Version : 0.2 Release : alt1 Architecture: i586 Install Date: Вс 11 фев 2018 16:51:08 Group : Video Size : 5331 License : public domain Signature : (none) Source RPM : youtube-dl-grabber-0.2-alt1.src.rpm Build Date : Вс 11 фев 2018 16:49:28 Build Host : speccyfighter.hasher.altlinux.org Relocations : (not relocatable) Packager : Speccyfighter <ALT Linux Active Users Club> Vendor : ALT Linux Team Summary : Скрипт для скачивания видео с youtube. Description : Скрипты для скачивания видео с youtube и замены пробелов на подчёркивание в файлах. -rwxr-xr-x 1 root root 1060 фев 11 16:49 /usr/bin/space2lowline -rwxr-xr-x 1 root root 4271 фев 11 16:49 /usr/bin/youtube-dl-grabber noarch.rpm+src.rpm youtube-dl-grabber для скачивания и пересборки |
|
|
11.2.2018, 19:29
Сообщение
#11
|
|
Профессионал Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20 |
Вот блин, накосячил . Не переживай следующая пересборка live-а будет наверное в течении 2-х недель, а пакет сейчас перезалью.
|
|
|
Текстовая версия | Сейчас: 24.4.2024, 1:25 | |