Sveriges Radio från terminalen

Uppdatering 5 februari 2011. Instruktioner för att ladda ned klipp och program, samt spela in till fil från den direktsända webbradion, finns i det här inlägget. Eftersom Sveriges Radio gjort en del förändringar av sin sajt sedan det här inlägget skrevs, så behöver även skriptet uppdateras. Jag återkommer i frågan.

* * *

Det är på tiden att jag delar med mig av mitt fantastiska lilla skalskript för Sveriges Radios webbradio.

SR har två olika typer av webbradio, vid sidan av sina poddradio-arkiv. Dels en liveström, och dels arkiverade klipp.

För att köra skripten behöver du rtmpdump eller flvstreamer, och så förstås en mediaspelare. Jag använder MPlayer.

För att lyssna på live-radion behöver du två filer – själva skriptet och en fil med direktadresser till strömmarna. Filen med adresser ska heta radio.dat och ligga i samma mapp som scriptet. Den ser ut så här:

rtmp://rtmp-live.sr.se/webbradio/kanaler/p1-aac-192
rtmp://rtmp-live.sr.se/webbradio/kanaler/p2-aac-192
rtmp://rtmp-live.sr.se/webbradio/kanaler/p2musik-aac-192
rtmp://rtmp-live.sr.se/webbradio/kanaler/p3-aac-192
rtmp://rtmp-live.sr.se/webbradio/kanaler/p4skaraborg-aac-192
rtmp://rtmp-live.sr.se/webbradio/kanaler/p4orebro-aac-192

Som du ser så finns det flera möjliga adresser till P4, eftersom de har lokala sändningar.

Skriptet ser i sin tur ut så här:

Döp skriptfilen till radio och se till att den är körbar. Nu kan du köra en radiokanal så här:

$ radio p3

Om du istället skulle välja att köra kanalen p4 så skulle den första adressen som innehåller p4 att köras, så för att köra P4 Örebro, som är den andra P4-kanalen i adressfilen, är jag tvungen att göra så här:

$ radio p4orebro

Vidare så går det att spela radio »i bakgrunden«, frikopplat från terminalen. Det är oerhört smidigt om man har datorn påslagen nattetid och vill bli väckt av den. Du kan ställa väckarklockan på 09.30 så här:

$ echo "radio -bg p2" | at 09:30

Men för att smidigt kunna stänga av uppspelningen behöver du ett skript till! Det heter radiotystnad och är litet och simpelt:

Det var allt om live-radio. Att spela upp radioklipp är en helt annan historia. Dessutom är den mera intressant.

Uppdatering 9 dec 2010: OBS! Det följande fungerar inte längre, i och med en ändring som SR gjort på sin sajt. Finurligt nog har de genomfört en förenkling, vilket gör dem ovanliga och fantastiska i världen. :-)

En snabbfix finns i min kommentar nummer 2 nedan, och en mera ingående uppdatering kommer i ett eget blogginlägg så småningom.

Det här skriptet är finurligt, tycker jag åtminstone själv. Döp filen till vad du känner för; själv kallar jag det för webbradio.

Observera att där var en mycket lång rad mitt i alltsamman, som blivit radbruten här i bloggen.

Gör skriptet körbart. Sedan kan du helt enkelt kopiera adressen till webbradioklippet, genom att högerklicka på den här knappen och välja Kopiera länk:

Exempel 1

Den kan också se ut så här:

Exempel 2

När du kopierat länken, så kör du den genom skriptet.

$ webbradio "LÄNK"

Citattecknen är oerhört viktiga. Skulle du få för dig att vilja spara klippet till hårddisken, så kör du istället skriptet så här:

$ webbradio -record "LÄNK"

Filen kommer att sparas med ett filnamn enligt följande format:

SR_[id-nummer]-[datum]-[klockslag].flv

Om du skulle använda en annan mediaspelare än MPlayer, så kan du antagligen ersätta de följande två raderna…

…med de här:

Några frågor?

Kommentarer till inlägget

  1. Magnus Berg, 9 december 2010, 12.02Gravatar

    Hej!

    Jag tänkte spela in alla avsnitten av uppläsningen av 'Mannen utan egenskaper' från http://sverigesradio.se/sida/artikel.aspx?programid=1111≤

    -----
    magnus@debian:~/Dokument/Media/Mannen_utan_egenskaper$ /home/magnus/Dokument/Linux/Program/Spela_in_SR -record "http://sverigesradio.se/api/radio/radio.aspx?type=db∨
    [: 11: X-record: unexpected operator
    Resolving www.sr.se for AF_INET6...
    Couldn't resolve name for AF_INET6: www.sr.se
    Resolving www.sr.se for AF_INET...
    Connecting to server www.sr.se[134.25.4.140]: 80...
    Resolving sverigesradio.se for AF_INET6...
    Couldn't resolve name for AF_INET6: sverigesradio.se
    Resolving sverigesradio.se for AF_INET...
    Connecting to server sverigesradio.se[134.25.4.140]: 80...
    Cache size set to 320 KBytes
    Error while parsing playlist
    Warning: empty playlist
    Error parsing option on the command line: -playlist
    MPlayer 1.0rc3-4.4.4 (C) 2000-2009 MPlayer Team
    -----

  2. Jesper, 9 december 2010, 13.13Gravatar

    Hej Magnus!

    Jag har goda nyheter. SR har fantastiskt nog gått i rätt riktning sedan jag skrev det här inlägget, och gjort det lättare att komma åt webbradio-strömmarna för oss som inte har Flash (eller vill spela in).

    Dina adresser verkar ha blivit förstörda i och med postningen här. Det är en bugg i kommentarfiltreringen som inte blivit fixad ännu, så det är inte du som tokat till det. (Man måste skriva & istället för &.) Jag tror du syftar på den här serien, inte sant? I så fall har vi att göra med den här webbradio-länken:

    http://sverigesradio.se/api/radio/radio.aspx?type=db&id=2736754&codingformat=.m4a&metafile=asx

    Numera är det faktiskt så enkelt att du kan göra så här:

    $ mplayer -dumpstream -dumpfile inspelat.m4a -playlist "http://sverigesradio.se/api/radio/radio.aspx?type=db&id=2736754&codingformat=.m4a&metafile=asx"

    För skriptets del innebär den förändringen att någon rader ska bort, liksom att ett par andra behöver ändras, innan det fungerar som det ska igen. Jag kommer att posta om detta relativt snart.

    Ha det gott!

  3. Magnus Berg, 9 december 2010, 13.50Gravatar

    Jag hittade en bättre lösning på mitt problem.

    Klicka på ljudlänken och välj spara som. Då sparas en radio.aspx-fil. Öppna den i lämplig texteditor och letar reda på raden: <ref href="http://sverigesradio.se/topsy/ljudfil/xxxxxx.m4a">. Klistra in ljudfilens adress i browsern och ladda ner.

    Nu har jag alla 20 avsnitt av "Mannen utan egenskaper".
    Nu har jag hela Mannen utan egewnskaper oi

  4. Magnus Berg, 9 december 2010, 13.53Gravatar

    Jag såg inte dina post innan jag skrev det ovan. Tack i alla fall. Det kan komma väl till pass vid andra tillfällen när inte ljudfilerna är lika lättåtkommliga som i mitt fall.

  5. Jesper, 9 december 2010, 14.05Gravatar

    Ah. :-)

    Det där var faktiskt ett rätt vettigt tips. Kände inte alls till att filerna var tillgängliga över HTTP; har ju inte hunnit titta särskilt noga på hur de där förändringarna hos SR ser ut ännu.

    Din metod är att föredra, eftersom filen borde komma ner mycket snabbare då, än om man dumpar den genom MPlayer. Ett snabbkommando för att göra samma sak torde se ut så här:

    $ curl -LO $(curl -s $URL|grep 'ref href'|sed 's/.*href="\(.*\)".*/\1/')

    Där $URL givetvis är adressen man får om man högerklickar på ljudlänken och väljer att kopiera adressen, istället för att ladda hem filen så som du gjorde.

  6. Magnus Berg, 9 december 2010, 14.55Gravatar

    Jag trodde också att SR:s filer var uppdelade i småbitar och omöjliga att ladda ner med vanligt filnedladdningsprogram. Nu går det fint att köra flera nedladdningar samtidig och på så vis spara tid, eftersom flödet är väldigt långsamt.

  7. Anders Lugnér, 6 mars 2013, 21.55Gravatar

    Hej, använder Ditt script på en raspberry PI, funkar fint på den analoga utgången. Jag undrar var man hittar kanallistan Du har i radio.dat. Det borde finnas fler kanaler. Tack för en nyttig blog!

  8. Jesper, 13 april 2013, 13.29Gravatar

    Anders: Ursäkta saktfärdigt svar. Faktum är att kanallistan är hemkokt. Det var ett tag sedan jag använde skriptet eller behövde någon ny kanal, så jag minns faktiskt inte exakt hur man går till väga för att leta upp adresserna. Men det ska inte vara krångligare än att du letar upp länkarna för externa spelare till live-sändningarna direkt på sr.se.

Lämna en kommentar