Как в скрипте прочесть выделенный пользователем текст? Чтобы его вставить куда либо, достаточно нажать СКМ - можно ли как-то сымитировать нажатие этой кнопки в скрипте 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
Создал скрипт 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 видео, нажимаем клавишу - открывается терминал и видео скачивается. По-моему удобно :)
Обновил строку параметров:
param='bestvideo[height<=1080][vcodec!=vp9]+bestaudio[acodec!=opus]'
Так как в одном случае скачалось видео с кодеком vp9 и мой телевизор с ним не справился
Придумал как вырезать id видео из URL адреса (в том случае, если используется youtube):
echo "${URL}" | sed 's/.*[?,&]v=//' | sed -r 's/&.+//'
Вырезает подстроку начинающиеся на "?v=" или на "&v=" и заканчивающиеся на "&". Может можно как-то покороче?
Вот пример, когда кавычки меняют логику работы:
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 - даже не знаю как лучше
Переделал скрипт:
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
Может будут какие-то замечания?
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 выбрать папку, может кто-нибудь знает?