Detaljar om lagring av Internett-radio

2. juli 2003 (oppdatert 25. august 2005)

Introduksjon

Eg har tidligare skriva om korleis ein kan lagra Internett-radio lokalt på harddisken for seinare bruk/lytting/arkivering. I den artikkelen nemnte eg at eg har sett opp eit sinnrikt system for å ta opp favorittprogramma mine automatisk. På oppfordring skal eg her gå i detaljar om systemet.

Sjølve systemet

Systemet er laga for Windows XP og Linux, men vil trulig fungera i andre Windows-versjonar òg. Det er ganske greitt å setta opp, og kjører heilt av seg sjølv deretter. Oppskrift følgjer:

Ingrediensar

For Windows treng treng me følgjande gratisprogram:

For Linux har me trulig det me treng allereie.

Nedlasting og lagring

Installer først cygwin. Me treng òg programmet wget, so pass på at det er kryssa av for dette under installeringa. Målet vårt no er å laga eit bittelite skript for nedlasting av lyd frå valfri kanal, i valfri tidslengd, og lagra denne med eit fornuftig filnamnm, med dato og klokkeslett. Alt dette skal veljast med parametrar til skriptet.

Mi løysing vart sånn:

#!/bin/sh
filename=`/usr/bin/date +%Y-%m-%d-%H-%M-`$3.mp3
wget -T 25 -t 0 -O /cygdrive/c/radio/$filename http://radio.hiof.no:8000/nrk-$2-128 &
wgetpid=$!
sleep $1
kill $wgetpid

Bytt ut /cygdrive/c/radio/ ovanfor med noko anna i Linux. Fila kallar me hent-radio.sh, og legg ho i mappa skript i heimemappa, typisk:

No kan me testa om dette fungerer. Kjør cygwin (Windows) eller logg inn og start ein konsoll (Linux). Skriv so følgjande:

cd skript
./hent-radio.sh 20 p2 Test

Dette skal lagra 20 sekund med opptak frå NRK P2, med filnamnet «Test» og i mappa c:\radio\ (eller kor du no har valt å lagra lydfilene i skriptet ovanfor). Me kan ta opp frå andre kanalar ved å bytta ut p2 med:

Viss dette ikkje fungerer, er det ingen grunn til å gå vidare. Sjå på feilmeldingar og rett opp!

Automatisk opptak

No er det tid for automatisering, slik at maskina kan ta opp program på eiga hand, etter fast timeplan. Til dette brukar me programmet nnCron LITE (Windows) eller cron (Linux). Begge programma brukar nøyaktig same filformat.

Sørg for at nnCron LITE startar automatisk ved oppstart av Windows. Rediger so fila cron.tab i programmappa (Windows), eller kjør crontab -e (Linux), og legg til linjer på denne forma (for Windows):

38 18 * * 1-5 c:\programfiler\cron\a.bat 1500 p1 Barnetimen

Eller på denne forma (for Linux):

38 18 * * 1-5 /home/brukarnamn/skript/hent-radio.sh 1500 p1 Barnetimen

Denne seier at me skal ta opp frå P2 i 25 minutt (1500 sekund), frå klokka 18:38, måndag til fredag. Filnamnet skal vera «Barnetimen» (pluss datoinformasjon). Obs! Filnamnet kan ikkje innehelda mellomrom. Bruk heller bindestrekar (sånn-er-livet). Sjå gjerne mi cron.tab for eksempel.

Fila a.bat nemnt ovanfor treng me berre i Windows, og for å starta cygwin rett. Ho skal sjå sånn ut (legg fila i c:\programfiler\cron\):

cd c:\cygwin\bin
bash --login -i skript\hent-radio.sh %1 %2 %3

Finjustering og arkivering

Heilt til slutt kan me i Windows bruka mp3DirectCut til å kutta av uønskja lyd i begynnelsen og slutten av opptaket, før arkivering på brennbare CD-ar (som lydfiler, ikkje CD-lyd).

Oppsummering

Som sagt, når alt først er sett opp, so fungerer det heile perfekt. Det er veldig lett å legga til nye program for opptak, og elles treng ikkje systemet noko vedlikehald. Det går av seg sjølv!

I historisk perspektiv

Opphavlig brukte eg (det utmerka) programmet Streamripper til lagring, samt eit mykje meir komplisert og uelegant system for resten av det praktiske. Men etter at dei gjekk over til tenaren Icecast 2 for utsending av NRK-radio, fungerte ikkje dette lenger. Takk til Lasse G. Dahl for løysinga med bruk av wget.

Kommentarar

Av Lasse G. Dahl på 2004-01-20:

Min løsning er kanskje ikke like anvendelig som din, men IMHO langt enklere å sette opp:

http://www.lassedahl.com/b/20040120_1

Av Karl Ove Hufthammer på 2004-02-15:

Og no brukar eg eit liknande system som deg, Lasse!

Av Lars Brede Johansen på 2004-04-18:

Jeg har jobbet litt for å få dette til å funke hos meg i Windows XP. Erfaringene kan kanskje hjelpe andre på mitt nivå.

Utgangpunktet mitt er en installasjon av Cygwin med de nødvendige programmene.

Første problem var at de nødvendige miljøvariablene av en eller annen grunn ikke lå inne. Derfor måtte jeg legge til:
";C:\cygwin\bin;C:\cygwin\home\Lars_Brede\bin;C:\Program Files\cron" under Settings --> Control Panel --> System Properties --> Env. Variables --> Path
(La her til nnCron LITE for å lette commandolinjeoperasjoner.)

a.bat-fila mi endte som:
bash --login -i -c "hent-radio.sh %1 %2 %3" (trenger ikke full path her, og trengte vel aldri "cd C:\cygwin").

Eks. på cron.tab - uten overraskelser:
29 13 * * 7 "c:\Program Files\cron\a.bat" 5500 p2 Ord-Film-Popfront

Håper dette kan hjelpe noen.

Takk for VELDIG nyttig script.

Av Marius Andersen på 2005-06-09:

Dette hører kanskje ikke helt hjemme her, men nå og i tiden framover kan du laste ned Beethovens 9 symfonier i MP3-format gratis (og helt lovlig) fra BBC. Så nå er du iallfall informert.

Av Marius Andersen på 2005-06-10:

Vil bare legge til at man kan angi varigheten av et opptak i minutter, timer eller dager i stedet for sekunder ved å bruke henholdsvis suffiksene m, h og d. Barnetimen-opptaket kan altså også automatiseres slik (testet med sleep versjon 5.3.0):

38 18 * * 1-5 c:\programfiler\cron\a.bat 25m p1 Barnetimen (for Windows)
38 18 * * 1-5 /home/brukarnamn/skript/hent-radio.sh 25m p1 Barnetimen (for Linux)

Man kan også bruke desimaltall om man ønsker det (skrevet på engelsk vis, altså med punktum i stedet for komma), f.eks. for å ta opp i halvannen time:

38 18 * * 1-5 c:\programfiler\cron\a.bat 1.5h p1 Test (for Windows)
38 18 * * 1-5 /home/brukarnamn/skript/hent-radio.sh 1.5h p1 Test (for Linux)

Dette er nok enklere enn å regne om til sekunder hver gang.

Av Anne Marie Heidenreich på 2005-08-10:

Jeg har prøvd oppskriften over for å få til automatisk opptak fra radio. Dessverre funket ikke testen. Jeg fikk følgende feilmelding:

/cygdrive/c/radio/2005-08-10-20-38-Test.mp3: No such file or directory

og litt etterpå denne meldingen:

./hent-radio.sh : line6 : kill: - No such process

Kunne du hjelpe meg videre ?

Da jeg installerte Cygwin krysset jeg BARE av for web-pakken. Det var jo så veldig mange pakker (packages), og da jeg prøvde å installere alle først tok det enormt lang tid.

Skriptet skrev jeg i notisblokk.

I skriptet henvises det til web-radioen til Høyskolen i Østfold (http://radio.hiof.no). Men jeg finner ikke denne siden på internett. Er det det som skaper problemer ?

mvh,
Anne Marie

Av Karl Ove Hufthammer på 2005-08-10:

Det tyder på at noko er feil med skriptet. Prøv å lasta det ned direkte frå denne sida, i staden for å redigera det i Notisblokk. Og det er altso wget-pakken du skal ha, ikkje web-pakken.

Av Anne Marie Heidenreich på 2005-08-10:

Takk for rask tilbakemelding!

Jeg lastet ned sh-filen fra internett istedet. Så avinstallerte jeg web-pakken fra Cygwin og installerte bare wget isteden. Så gjorde jeg testen.

Men jeg får de samme feilmeldingene som tidligere (bare at nå er feilen i linje 7, ikke linje 6).

Noen flere tips?

mvh,
Anne Marie

Av Anne Marie Heidenreich på 2005-08-11:

Nå fikk jeg feilmelding ved oppstart av PC-en (på grunn av nylige programvareendringer …). Noe sier meg at jeg er for grønn til å få til dette uten mye styr.

Men, kanskje du vet om noen i Oslo-området som kunne hjulpet meg med å installere dette (firma/konsulent/privat, etc.)?

mvh,
Anne Marie

Av Karl Ove Hufthammer på 2005-08-12:

Det kan vera nødvendig å starta maskina på nytt etter at du har installert Cygwin. Og det er òg veldig viktig at du har oppretta mappa radioc:\ før du kjører skriptet.

Av Øyvind Hoven Oftedal på 2005-10-28:

Det går så det suser på den bærbare maskinen som kjører XP, men ikke fullt så greit på den stasjonære (Win 2000). Det er den automatiserte starten av programmet som ikke fungerer. På det aktuelle tidspunktet kommer bare et blink når Cygwin skulle startet. Men testinga går greit, så hva problemet er skjønner jeg ikke helt. Nå spiller det ikke noen rolle egentlig, for jeg bruker jo helst den bærbare maskinen, men det kunne vært interessant å hørt hva som er problemet.

Av Marius Andersen på 2007-10-09:

Jeg har forresten fått systemet til å fungere under Windows med MSYS i stedet for Cygwin. Jeg har installert MSYS i katalogen C:\msys og Windows-utgaven av wget i katalogen C:\Programfiler\wget. I tillegg har jeg lagt til banene C:\msys\bin og C:\Programfiler\wget i miljøvariabelen PATH, slik at de kjørbare filene i disse katalogene blir direkte tilgjengelige fra kommandolinjen som kommandoer.

Nå kan jeg kjøre hent-radio.sh fra kommandolinjen ved å plassere meg i samme katalog som hent-radio.sh og skrive:

sh hent-radio.sh 20 p2 Test

Det er imidlertid nødvendig med noen små justeringer av selve skriptet for få det til å fungere uten Cygwin. Min modifiserte hent-radio.sh-fil ser slik ut:

#!/bin/sh

filename=`c:/msys/bin/date +%Y-%m-%d-%H-%M-`$3.mp3
wget -T 25 -t 0 -O c:/radio/$filename http://radio.hiof.no:8000/nrk-$2-128 &
wgetpid=$!
sleep $1
kill $wgetpid

Denne lagrer opptakene i katalogen C:\radio. I tillegg har jeg min egen a.bat-fil, som ser slik ut:

sh hent-radio.sh %1 %2 %3

Denne må ligge i samme katalog som hent-radio.sh, så jeg legger både hent-radio.sh og a.bat i katalogen C:\Programfiler\cron (hvor jeg har installert nnCron LITE). Så er det bare å sette opp cron.tab slik det er beskrevet i artikkelen!

For øvrig opplyser jeg om at siste utgave av Streamripper fungerer med Icecast 2, for dem som måtte ønske å bruke det i stedet for wget.

Legg til kommentar





Du kan bruka dei vanligaste elementa og attributta i HTML. Avsnitt lagar du med vanlige linjeskift. Eg kan komma til å gjera typografiske og ortografiske endringar i innlegg (men vil aldri endra sjølve innhaldet), samt fjerna upassande innlegg.

 

Skriven av Karl Ove Hufthammer og driven med Movable Type 3.34. Du kan abonnera på innleggs-RSS eller kommentar-RSS.