Portál AbcLinuxu, 30. dubna 2025 13:48
Delší dobu jsem se trápil s hledáním vhodného řešení pro práci s Youtube v Linuxu. Chtěl jsem přehrávat videa v něčem spolehlivějším (a méně žravém na zdroje) než je flash a taky mít možnost si některá videa stáhnout. Všemu na co jsem narazil buďto chyběla stabilita, nebo integrace s Firefoxem. Hurá k řešení...
Základem jsou skripty youleech a youplay. Jde o poměrně triviální wrapery kolem youtube-dl, screen a mplayeru (volitelně je podporován i ionice).
youleech#!/bin/bash # (c) Mgr. Simon Toth 2011 # Licensed under MIT license # http://www.opensource.org/licenses/mit-license.php # determine path to store the videos path="$HOME/youtube" # default if [ "$YOUTUBEPATH" != "" ]; then path=$YOUTUBEPATH; fi if [ ! -d "$path" ]; then if [ -e "$path" ]; then echo "Download directory is set to \"$path\", but there is already a non-directory with such name"; exit 1; fi mkdir -p "$path"; if [ $? -ne 0 ]; then echo "Download directory is set to \"$path\", but does not exist and cannot be created"; exit 1; fi fi # determine if we have youtube-dl if [ ! -x "`which youtube-dl`" ]; then echo "youtube-dl script not found in path"; exit 1; fi # check for screen if [ ! -x "`which screen`" ]; then echo "screen executable not found in path"; exit 1; fi # if you have youtube login and pass, you can set them here login= pass= user="" if [ "$login" != "" ] && [ "$pass" != "" ]; then user=" -u $login -p $pass "; fi cd "$path" # if we have ionice, set low priority if [ -x "`which ionice`" ]; then screen -d -m ionice -c 3 `which youtube-dl` $user -t -R 500 "$@"; else screen -d -m `which youtube-dl` $user -t -R 500 "$@"; fiyouplay
#!/bin/bash # (c) Mgr. Simon Toth 2011 # Licensed under MIT license # http://www.opensource.org/licenses/mit-license.php # determine path to store the videos path="$HOME/youtube" # default if [ "$YOUTUBEPATH" != "" ]; then path=$YOUTUBEPATH; fi if [ ! -d "$path" ]; then if [ -e "$path" ]; then echo "Download directory is set to \"$path\", but there is already a non-directory with such name"; exit 1; fi mkdir -p "$path"; if [ $? -ne 0 ]; then echo "Download directory is set to \"$path\", but does not exist and cannot be created"; exit 1; fi fi # determine if we have youtube-dl if [ ! -x "`which youtube-dl`" ]; then echo "youtube-dl script not found in path"; exit 1; fi # check for screen if [ ! -x "`which screen`" ]; then echo "screen executable not found in path"; exit 1; fi # if you have youtube login and pass, you can set them here login= pass= user="" if [ "$login" != "" ] && [ "$pass" != "" ]; then user=" -u $login -p $pass "; fi COOKIE_FILE=$path/cookies.txt screen -d -m mplayer -cookies -cookies-file ${COOKIE_FILE} $(`which youtube-dl` ${user} -g --cookies ${COOKIE_FILE} "$@")
Tyto skripty berou jako parametr youtube URL. youleech video stáhne do cesty nakonfigurované v proměnné $YOUTUBEPATH (defaultně do ~/youtube) a youplay video přehraje v přehrávači mplayer (jako odkládací adresář používá opět $YOUTUBEPATH).
Pro integraci do Firefoxu je vhodný doplněk Flashgot. Po jeho instalaci provedeme konfiguraci obou skriptů. Nezapomeňte zaškrtnout "Zobrazit v místní nabídce".
Následovně můžeme vypnout menu samotného Flashgotu.
A pak už si můžeme užívat komfortní Youtube.
Jediným zásadním nedostatkem na který jsem zatím narazil je dlouhé čekání na začátek přehrávání v případě youplay, ale může jí i o problém mojí lokální konfigurace.
Tiskni
Sdílej:
geo@holly:~$ ps ax | grep mplayer 12141 pts/8 T 0:00 mplayer -cookies -cookies-file /home/geo/youtube/cookies.txt http://v1.lscache7.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPTVJSVF9FSkNOOV9KTFhB 12165 pts/8 T 0:00 mplayer -cookies -cookies-file /home/geo/youtube/cookies.txt http://v1.lscache7.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPTVJSVF9FSkNOOV9KTFhB 12866 ? Ss 0:00 SCREEN -d -m mplayer -cookies -cookies-file /home/geo/youtube/cookies.txt http://v12.lscache6.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPTVJSVF9FSkNOOV9KTFhB&fexp=901313%2C913103%2C901602%2C910207&algorithm=throttle-factor&itag=35&ip=0.0.0.0&burst=40&sver=3&signature=CFDBD175AD3E57E2E4DC96BF87B78F484CDA6562.D46ED09A706DE57210A53BD3897AA0BF86DA2E3B&expire=1308276000&key=yt1&ipbits=0&factor=1.25&id=8b2cdaf19680610d 12867 pts/9 SLs+ 0:09 mplayer -cookies -cookies-file /home/geo/youtube/cookies.txt http://v12.lscache6.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPTVJSVF9FSkNOOV9KTFhB&fexp=901313%2C913103%2C901602%2C910207&algorithm=throttle-factor&itag=35&ip=0.0.0.0&burst=40&sver=3&signature=CFDBD175AD3E57E2E4DC96BF87B78F484CDA6562.D46ED09A706DE57210A53BD3897AA0BF86DA2E3B&expire=1308276000&key=yt1&ipbits=0&factor=1.25&id=8b2cdaf19680610d 12868 pts/9 S+ 0:00 mplayer -cookies -cookies-file /home/geo/youtube/cookies.txt http://v12.lscache6.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPTVJSVF9FSkNOOV9KTFhB&fexp=901313%2C913103%2C901602%2C910207&algorithm=throttle-factor&itag=35&ip=0.0.0.0&burst=40&sver=3&signature=CFDBD175AD3E57E2E4DC96BF87B78F484CDA6562.D46ED09A706DE57210A53BD3897AA0BF86DA2E3B&expire=1308276000&key=yt1&ipbits=0&factor=1.25&id=8b2cdaf19680610dTo je normalni chovani nebo bug?
# jako root najdeme kandidaty s videem find /proc/*/fd/ -ls | grep Flash # nebo find /proc/*/fd/ -ls | grep '(deleted)' # nebo find /proc/*/fd/ -ls | grep Flash | grep '(deleted)' # jeden soubor si vybereme a zkopirujeme # (pro snazsi vyber je dobre mit spustene jen to po kterem touzime) cp /proc/3434/fd/16 /tmp/test.flv # nastavime prava k souboru chown mirek:mirek /tmp/test.flv chmod 660 /tmp/test.flv # a zkusime ho prehrat mplayer /tmp/test.flv # pripadne zkonvertovat mencoder -oac lavc -ovc lavc -lavcopts acodec=mp2:vcodec=mpeg4 /tmp/test.flv -o /tmp/test.avi # nebo mencoder -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4 /tmp/test.flv -o /tmp/test.avi
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.