Portál AbcLinuxu, 1. května 2025 19:00

down-youtube-video - a ještě jednou tohle téma

23.3.2009 21:18 | Přečteno: 1262× | Stahovaci skripty | poslední úprava: 23.12.2010 17:19

Také jsem zahlídnul info o tom, že Twibright Labs udělal "přehrávač" youtube videí do konzole.

Twibright Labs "beru", používám Links2, obdivuju Ronju, ale když jsem viděl ten skriptík na přehrávání videí z youtube, tak jsem se zhrozil. Ono to má 1036 řádků v pythonu!!! Ano, je tam hodně komentářů, ale i tak. Na začátku se importuje 14 knihoven (nebo čeho, nejsem pythonista). Tak jsem si řekl, že hodím odkaz do mého blogu na svůj skript. Ale sakra, nemůžu ho najít. Asi jsem ho do blogu ani nedával, protože se mi zdál trapně jednoduchý. No ale pro ty, kterým se ten od Twibright Labs zdá taky zbytečně složitý, přidávám do svojí sbírky stahovacích skriptíků i ten na youtube.

Použití by mělo být jednoduché, prostě down-youtube-video URL/CODE ... a na STDOUT to pošle URL videa, které pak lze stáhnout wgetem, curlem nebo přímo přehrát v mplayeru.

Někdy bych chtěl dodělat možnost stáhnutí videa v lepším rozlišení, když je k dispozici. Když jsme to hledal naposled, nějak jsem to správné URL nemohl najít.

Update 2010/12/23: Script aktualizovanán podle změn Youtube. Přidána podpora výběru formátu videa.

#!/bin/bash

defaultfmtlist="18 5 22 37 38 34 35"
verb=0

function usage() {
  cat <<HelpEnd
Usage: $0 [ -v ] [ -v ] [ -v ] [ -f fmt,fmt ] {URL|video ID} ...

-f format-list ... download specified format, default priority is $defaultfmtlist
see http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs
HelpEnd
}

function urlcleanup() {
  perl -pe 's,\\,,g;s/%(..)/chr(hex($1))/ge;'
}

function msg() {
  if [ $# -ge 2 ] && [ $verb -ge $1 ] ; then
    printf "%$((${1}*2))s%s\n" " " "$2"
  fi
}

if [ $# -eq 0 ]; then
  usage
else

  while [ $# -gt 0 ];do
    case "$1" in
      "-v" ) shift ; verb=$(($verb+1)) ;;
      "-f" ) shift ; if [ $# -lt 2 ] ; then echo "Options -f requires a value" ; usage ; exit 1 ; else defaultfmtlist="$2" ; shift ; fi ;;
      * ) 
        p="$1"
        shift

        if echo "$p" | grep -qE '^http';then
          url="$p"
        else
          url="http://www.youtube.com/watch?v=$p"
        fi

        msg 2 "Getting data from URL $url"
        vdata="$(
          wget -q -O - "$url" \
          | perl -ne '
              print "$u\n$i\n"
                if ($u)=(/PLAYER_CONFIG.*"fmt_url_map"\s*:\s*"([^"]+)"/)
                  and ($i)=(/PLAYER_CONFIG.*"video_id"\s*:\s*"([^"]+)"/);
            '
        )"
        lurl="$( echo "$vdata" | sed -n '1p;' )"
        vid="$( echo "$vdata" | sed -n '2p;' )"
        selurl=""
        while [ -z "$selurl" ] ; do 
          for rfmt in $defaultfmtlist ; do
            msg 3 "Looking for URL in format $rftm"
            selurl="$( echo "$lurl" | tr ',' '\n' | grep -E "^$rfmt\|" | cut -f2- -d'|' | urlcleanup )"
            ffmt="$rfmt"
            if [ -n "$selurl" ] ; then break 2 ; fi
          done
          msg 3 "Preferred format not found, using the first one available"
          selurl="$( echo "$lurl" | tr ',' '\n' | head -n1 | cut -f2- -d'|' | urlcleanup )"
          ffmt="$( echo "$lurl" | tr ',' '\n' | head -n1 | cut -f1 -d'|' )"
          msg 4 "Found format $ffmt"
        done

        msg 1 "Downloading video $vid to file youtube-video-${vid}-${ffmt} from URL"
        wget -c -O "youtube-video-${vid}-${ffmt}" "$selurl"
      ;;
    esac

  done

fi
       

Hodnocení: 91 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

23.3.2009 21:26 mic130
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma
Odpovědět | Sbalit | Link | Blokovat | Admin

ja na stahovani pouzival programek clive, ten umi zatim jenom HQ videa na HD mam plug-in do FF "Download YouTube Videos in HD and MP4"

Amarok avatar 24.3.2009 18:19 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma
Odpovědět | Sbalit | Link | Blokovat | Admin
Je to dobry, dik, to si ulozim, taky mam radsi jednodussi reseni. Pouzivam to takhle, snad se to jinak ani pouzit neda (?):
mplayer `downyoutube http://www.youtube.com/watch?v=8WaMGIzYvzg`

Divim se docela, ze se v tom da i skakat dopredu/dozadu, jak je to mozne?
Pri pouziti wget misto mplayer mi to ulozi video na disk ve formatu flv, takze taky dobry. Ta moznost ulozeni HD videa by se ale fakt hodila. Mimochodem jsem zil v domeni, ze youtube ten primy odkaz uz tak dobre schovalo, ze se to neda ani takhle vytahnout pro stahnuti.
GNUniverse - May the source be with you...
24.3.2009 19:32 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma

No, dalo by se jeste mozna neco jako down-youtube-video URL1 URL2 URL3 | mplayer -playlist -, ale s tim si nejsem jistej. Jinak urcite by to slo tak, ze ten vystup z down-youtube-video ulozis do souboru, a pak bud prehravas jako playlist nebo wget -i FILE stahnes. Pripadne jde jeste pouzit down-youtube-video URL1 URL2 URL3 | wget -i -. Prave proto jsem tam ja necpal mplayer primo, protoze takhle si muze kazdej udelat co chce, treba ten playlist otevrit i v necem jinym.

Proc jde skakat, to fakt netusim, mozna je to nejaka nova featura mplayeru, nebo to proste mplayer pri prehravanym video souboru dela normalne, jen to nejde pri klasickym streamu. Ale to jsou moje dohady, presne to fakt netusim.

Na to HD mrknu, hodilo by se.

David Watzke avatar 24.3.2009 19:03 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma
Odpovědět | Sbalit | Link | Blokovat | Admin
Když za video URL přidáš &fmt=18, tak se to tváří jako že se přehrává HD verze, ale je to nějaký divný... zkuste si to sami.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
24.3.2009 19:32 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma

Tak z toho URL http://www.youtube.com/watch?v=8WaMGIzYvzg to po pridani &fmt=18 udela MP4. Tipuju, ze to bude spis neco jako FLV (bez fmt) a original (s fmt=18). Ale mrknu na to. Nektery veci by v lepsi kvalite byly fakt dobry.

Stahnul jsem obe videa a tady je, co o tom rika mplayer

vid-a: ISO Media, MPEG v4 system, version 2
VIDEO:  [avc1]  480x272  24bpp  25.000 fps    0.0 kbps ( 0.0 kbyte/s)

vid-b: Macromedia Flash Video
VIDEO:  [FLV1]  320x240  0bpp  25.000 fps  331.8 kbps (40.5 kbyte/s)
Amarok avatar 24.3.2009 19:41 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma

Tak to je taky skvely, samozrejme radsi stahnu puvodni video, nez podruhe prekonvertovane do FLV. Jinak to video, ktere jsem tim skriptem stahoval, zrovna v HD verzi ani neni k dispozici, takze zkuste nejake jine, kde je ten symbol HD pod videem.

Jinak se pripojuju k tomu prvnimu komentari, ten plugin pro FF mam taky a je fakt nejlepsi, co jsem zatim pro FF testoval, naprosto jednoduche pouzivani a funguje dobre.

GNUniverse - May the source be with you...
24.3.2009 19:42 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma

No, mrknul jsem ted na to, zkusil jsem jeste par dalsich hodnot a vypada to jenom na format, ve kterym to youtube posle:

vid-base:   Macromedia Flash Video
vid-fmt-13: ISO Media, MPEG v4 system, 3GPP
vid-fmt-17: ISO Media, MPEG v4 system, version 2
vid-fmt-18: ISO Media, MPEG v4 system, version 2
vid-fmt-34: Macromedia Flash Video
vid-fmt-5:  Macromedia Flash Video

Ale samozrejme diky tomu MP4 to muze byt kvalitnejsi obraz i zvuk, nevim.

Amarok avatar 24.3.2009 19:49 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma
Ze by jako kazde video bylo ulozeno hned v tolika formatech? To se mi nejak nezda, ale mozna mista maji dost. A konvertovani "za behu" asi nepripada v uvahu. To by chtelo nejake kontakty na zamestnance youtube :)
GNUniverse - May the source be with you...
23.12.2010 17:24 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-youtube-video - a ještě jednou tohle téma
Odpovědět | Sbalit | Link | Blokovat | Admin
Aktualizace skriptu podle změn Youtube.

Přidána podpora formátů.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.