Ladda hem från SR
Det går att ladda hem samtliga Sveriges Radios program, inte bara dem som finns i poddformat. I det här inlägget ska jag berätta hur man gör för att hämta de litet klurigare m4a-filerna, samt hur man tankar hem rtmp-strömmar. I ett påföljande inlägg kommer jag att presentera en uppdatering av mitt gamla radioskript, sedan SR gjort om sin sajt en smula.
Jag kommer att demonstrera tre metoder som går att använda när man vill ladda hem ett klipp, ett program eller spela in en stump från den direktsända webbradion.
Ladda hem med en webbläsare
Den här metoden fungerar för många klipp. De enklaste klippen att ladda hem är dem som är märkta med (MP3). Allt du behöver göra är att högerklicka och spara.

Om det inte är ett sådant MP3-klipp du ska hämta hem, så behöver du göra litet mera än bara klicka. Börja med att högerklicka på klippets länk, som kan se ut på ett par olika sätt:

Ladda hem filen och öppna den i en text-editor. Leta sedan upp <entry>-avsnittet i filen:
<entry>
<title>Ekonyheterna</title>
<abstract>Nyheter</abstract>
<ref href="http://sverigesradio.se/topsy/ljudfil/2888490.m4a" />
<duration value="00:07:02" />
</entry>
Det är den fetade raden ovan som du är intresserad av. Där har du nämligen adressen till ljudfilen. Mata in den i webbläsaren, så hämtas den hem.
Kanske fungerar det inte. Får du istället fram en irriterande mediaspelare inuti webbläsarfönstret á la QuickTime, så måste du vara litet lurig. Skapa i sådana fall ett html-dokument på exempelvis ditt skrivbord, och fyll det med följande innehåll:
<a href="http://sverigesradio.se/topsy/ljudfil/2888490.m4a">Tanka</a>
Öppna filen i din webbläsare, högerklicka på länken och välj att ladda hem den.
Med cURL istället för webbläsare
Människor som begåvats med att använda cURL kan göra så här istället:
$ curl -LO http://sverigesradio.se/topsy/ljudfil/2888490.m4a
Fast med cURL och ett vettigt skal behöver man inte ladda hem någon fil och öppna den i texteditor. Rabbla istället upp den här ramsan:
curl -LO $(curl -s "URL"|grep 'ref href'|sed 's/.*href="\(.*\)".*/\1/')
URL ska givetvis ersättas med adressen till filen som innehåller adressen till ljudfilen. Citattecknen är viktiga.
Ladda hem i MPlayer
Den här metoden bygger på att det går att spela upp filer direkt från webben i MPlayer.
Till att börja med ska du göra likadant som om du laddat hem med din webbläsare: Högerklicka på länken. Ladda dock inte hem länken, utan kopiera den.
Om du bara vill spela upp klippet i MPlayer, så gör du så här:
$ mplayer -playlist "http://sverigesradio.se/api/radio/radio.aspx?type=broadcast&id=2886735&codingformat=.m4a&metafile=asx"
För att spara klippet till hårddisken använder du följande formel:
$ mplayer -dumpstream -dumpfile "Sparat radioprogram".m4a -playlist "http://sverigesradio.se/api/radio/radio.aspx?type=broadcast&id=2886735&codingformat=.m4a&metafile=asx"
En nackdel med detta är att det tar lika lång tid att ladda hem programmet som att lyssna på det. I normalfallet finns inte heller någon fördel – det är helt enkelt bättre att använda föregående metod.
Men när det gäller SR:s äldre klipp och program, som ofta bara finns som rtsp-strömmar, så är det här ett trevligt sätt att hämta hem programmen på.
Spara ljudströmmar med RTMPDump
Den här metoden fungerar för alla rtmp-strömmar, oavsett vad de innehåller. Det finns två sätt att komma åt rtmp-adresser. Det ena är att råka ha dem i en fil sedan tidigare, som jag. :-)
Du behöver förstås installera RTMPDump. (FLVstreamer fungerar taskigt med SR:s strömmar, är min erfarenhet.) Närmare instruktioner för att installera i Windows finns i det här inlägget.
Det andra sättet är att man hittar dem någonstans. Uppenbarligen kommer de numera även som nedladdningsbara .rtmp-filer. Om du inte har någon adress som börjar med rtmp://, utan en http://-adress till en .rtmp-fil, så ladda hem filen och öppna den i en text-editor.
Även den här gången söker du det här avsnittet i filen:
<entry>
<title>P2 Musik</title>
<abstract>P2 Musik</abstract>
<ref href="rtmp://rtmp-live.sr.se/webbradio/kanaler/p2musik-aac-96" />
</entry>
Och även den här gången är det den fetmarkerade raden ovan du är intresserad av.
I det här exemplet råkar rtmp-adressen vara P2:s direktsändning:
rtmp://rtmp-live.sr.se/webbradio/kanaler/p2musik-aac-96
Du kan fuska fram en sändning av högre kvalitet genom att ändra siffran på slutet:
rtmp://rtmp-live.sr.se/webbradio/kanaler/p2musik-aac-192
Eftersom detta är en direktsändning, så fungerar RTMPDump snarare som en inspelningsapparat än ett nedladdningsprogram. Det betyder vad du tror att det betyder: När du startar programmet så börjar det spela in, och när du avslutar det (med CTRL-C) så slutar du spela in.
Nåväl, här är kommandot:
$ rtmpdump -o "Min radioinspelning".m4a -r "rtmp://rtmp-live.sr.se/webbradio/kanaler/p2musik-aac-192" -v
Hade detta inte varit en direktsändning, så skulle det inte ha varit något -v på slutet. Då hade du inte heller behövt avsluta RTMPDump manuellt, eftersom det hade slutat när filen tog slut.
Vill du lyssna på ett program samtidigt som du hämtar hem det – även om det är en direktsändning du spelar in från – så kan du göra så här:
$ mplayer -nocache "Min radioinspelning".m4a
Det var allt. Adjö!
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:
#!/bin/sh
PLAYER=mplayer
STREAMER=flvstreamer
if [ X$1 == X-bg ]; then
$STREAMER -live -r $(grep $2 $HOME/bin/data/radio.dat) | $PLAYER -- - 2>&1 > /dev/null
echo $! > ~/.radio.pid
else
rm ~/.radio-fifo
mkfifo ~/.radio-fifo
$STREAMER -quiet -o ~/.radio-fifo -live -r $(grep $1 radio.dat)&
$PLAYER ~/.radio-fifo
fi
exit 0
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:
#!/bin/sh
kill $(cat ~/.radio.pid)
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.
#!/bin/sh
PLAYER=mplayer
RECPARAMETERS="-dumpstream -dumpfile radiodump.wma"
PLAYLISTPARAMETER="-playlist"
STREAMER=flvstreamer
record=""
if [ X$1 == X'-record' ]; then
record=$RECPARAMETERS
fi
for id; do
if [ X$id != X"-record" ]; then
id=$(echo $id|sed -E 's/.*[Ii][Dd]=([0-9]+).*/\1/')
$PLAYER $record $PLAYLISTPARAMETER "http://www.sr.se/webbradio/include/CreatePlaylist.asp?Type=db&Id=$id&broadcastDate=&AudioFormat=3&AvailableAudioFormats=1;3&IsBlock=0"
if [ X"$record" != X ]; then
stamp=$(date +"%Y%m%d-%H%M")
mv -i radiodump.wma SR_id-$id-$stamp.flv
fi
fi
done
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:

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

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…
RECPARAMETERS="-dumpstream -dumpfile radiodump.wma"
PLAYLISTPARAMETER="-playlist"
…med de här:
RECPARAMETERS=""
PLAYLISTPARAMETER=""
Några frågor?