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
kanal=$2
if [ "$kanal" == "p1" ]
then
kanal=p1_hordaland
fi
filename=$(date +%Y-%m-%d-%H-%M)-$3.mp3
wget -T 25 -t 0 -O /felles/radio/uferdig/$filename http://lyd.nrk.no/nrk_radio_${kanal}_mp3_h &
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:
- c:\cygwin\home\brukarnamn\skript\ (i Windows)
- ~/skript/ (i Linux)
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
p1
p3
super
gull
alltid_nyheter
klassisk
jazz
folkemusikk
eller nokon av dei andre kanalane som står nemnt på kanaloversikta. Merk at opptak frå P1 brukar Hordaland-versjonen av kanalen. Endra skriptet for å bruka ein annan versjon som standard, eller spesifiser heile kanalnamnet, for eksempel p1_ostlandssendingen
.
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, for arkivering. Programmet fungerer for øvrig òg utmerka i Wine.
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, med unntak av justering når NRK endrar programtidspunkta.
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
. Denne baserte seg på nedlasting av radiostraumar frå Høgskolen i Østfold, men denne vart lagt i 2010. Heldigvis overtok NRK med ei liknande løysing, som lett kan brukast til automatisk nedlasting.
Min løsning er kanskje ikke like anvendelig som din, men IMHO langt enklere å sette opp:
http://www.lassedahl.com/b/20040120_1
Og no brukar eg eit liknande system som deg, Lasse!
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 aldricd C:\cygwin
).Eksempel 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 et VELDIG nyttig script.
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.
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
ogd
. Barnetimen-opptaket kan altså også automatiseres slik (testet medsleep
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.
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
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, ikkjeweb
-pakken.Takk for rask tilbakemelding!
Jeg lastet ned sh-filen fra internett istedet. Så avinstallerte jeg
web
-pakken fra Cygwin og installerte barewget
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
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
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
radio
påc:\
før du kjører skriptet.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.
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 avwget
i katalogenC:\Programfiler\wget
. I tillegg har jeg lagt til baneneC:\msys\bin
ogC:\Programfiler\wget
i miljøvariabelenPATH
, 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 somhent-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.mp3wget -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 egena.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ådehent-radio.sh
oga.bat
i katalogenC:\Programfiler\cron
(hvor jeg har installert nnCron LITE). Så er det bare å sette oppcron.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 forwget
.Løysinga mi med lagring av Internett-radio er kanskje litt utdatert no, sidan NRK sjølv legg ut nedlastbare versjonar av radioprogramma sine, sokalla podkastar. Men ikkje alle programma er tilgjengelige som podkastar (for eksempel Radioteateret), so det kan vera greitt å ha eit alternativ som dette i bakhand likevel.
Til orientering vart Høgskolen i Østfold si teneste vart lagt ned i 2010, men eg har no oppdatert skriptet til å fungera med NRK si eiga radioteneste.