Ladda hem från Youtube

Tidigare har jag berättat hur man kan ladda hem från SVTPlay, och nu är det dags för Youtube. Jag tänker även berätta hur du kan göra för att konvertera en video till en ljudfil, genom att helt sonika lyfta över det i en egen fil.

Precis som tidigare, så är anledningen till att jag själv gör så här att jag kör ett 64-bitars OpenBSD, och då går det inte att använda Flash. Youtube kommer framöver att gå över till HTML5, och då slipper jag det här krånglet. Du kan pröva deras testversion detta här.

Det absolut enklaste sättet att tanka hem Youtube-videor är att använda sajten KeepVid.com. Det gör du så här:

  1. Gå till videon på Youtube.
  2. Kopiera adressen ur adressfältet.
  3. Klistra in adressen på KeepVid.com och klicka på Download-knappen.
  4. Högerklicka på länken som visas och välj Spara som…

Men detta fungerar inte felfritt! Dessutom är det skönt att kunna genomföra samma grej från ett terminalfönster eller i ett script, åtminstone för mig. Nu kommer jag först att berätta hur du laddar hem en video på det viset, och sedan hur man kan göra för att automatisera litet grand.

Ladda hem videon

Du behöver programmet youtube-dl, som i själva verket är ett Python-script. Se alltså till att ha Python installerat.

Windowsbrukare kan också använda det, och lätt övermäktiga instruktioner för hur scriptet kan installeras finns här.

På *nix-system måste youtube-dl.py dessutom vara körbar. Eftersom det är bra att hålla ordning på sin hemkatalog, så lägger vi scriptet i mappen ~/bin.

$ chmod +x youtube-dl.py
$ mkdir ~/bin
$ mv youtube-dl.py ~/bin/

Nu kollar vi att den går att köra:

$ youtube-dl.py
ksh: youtube-dl.py: not found

Hoppsan! Händer detta mumlar du följande trollformel, så är problemet omedelbart löst på obestämd tid.

$ echo 'export PATH=$PATH:$HOME/bin' >> .profile; export PATH=$PATH:$HOME/bin

Du kan även få permission denied när du kör filen. Lösningen är att köra scriptet så här istället:

$ python ~/bin/youtube-dl.py

Resten är lätt. Surfa till Youtube-sidan med videon, kopiera adressen, och kör scriptet med den enligt följande:

$ youtube-dl.py -bt "http://www.youtube.com/watch?v=yek2D4Kjwgc"

Glöm inte citat-tecknen! Eller snarare: Om du inte vet när de egentligen behövs, så använd dem alltid. (Just här behövs de egentligen inte.)

Youtube på volley

Har man inte Flash kan man inte se videon i webbläsaren. Om man bara vill slå en flukt på videon men inte tanka hem den, är det omständigt att behöva ladda hem den först.

Då kan man använda sig av samma lösning för nedladdning som ovan, men fånga videon »i luften« och spela upp den direkt istället! Så här skapar du ett script som fixar biffen:

Ersätt "mplayer" med kommandot för den mediaspelare du föredrar.

Nu kan du spela upp videor direkt, busenkelt:

$ youtube.sh http://www.youtube.com/watch?v=yek2D4Kjwgc

Scriptet kan spela upp flera videor på rad om du klistrar in adresserna efter varandra.

Hur du plockar loss ljudet

Först och främst ska du se till att du har FFmpeg installerat.

Sedan måste du bestämma om du vill ha en mp3-fil eller en m4a-fil. Vill du ha ljudet i mp3-format, börja med att tanka hem videon så här:

$ youtube-dl.py -o dummy.flv http://www.youtube.com/watch?v=yek2D4Kjwgc

När nedladdningen är färdig så plockar du loss ljudspåret enligt det följande:

$ ffmpeg -vn -acodec copy -i dummy.flv ljudfil.mp3

Strax har du en fil som heter ljudfil.mp3.

Vill du istället ha ljudet i m4a-format, får du ändra parametrarna något.

$ youtube-dl.py -bo dummy.mp4 http://www.youtube.com/watch?v=yek2D4Kjwgc
$ ffmpeg -vn -acodec copy -i dummy.mp4 ljudfil.m4a

Och det var faktiskt det hela.