NRK som filsystem
Oppdatering: Koden er kopiert over til eget prosjekt på GitHub, benytt informasjon på GitHub for å komme i gang. Denne postingen er utdatert.
Så var det laget; tilgang på NRK sin nett-TV som om tilgangen til innholdet skulle ligge lokal. I mitt forsøk på å gjøre om NRK Nett-TV til et virtuelt filsystem har jeg valgt å bedrive “screen scraping” av nettsidene, og ender opp med én spilleliste for hvert program som er lagt ut.
Jeg har valgt å benytte Python, sammen med modulene Fuse-Python og BeautifulSoup, så dette kan man sette opp på sin egen maskin som kjører Linux eller MacOS.
Filene er lagt ut i kildekodekontrollen på GitHub, og er delt opp i to filer:
- nrk.py – Bibliotek for å aksessere NRK Nett-TV
- nrkfs.py – Koden som oppretter og fórer det virtuelle filsystemet
For å montere filsystemet kjører man enkelt og greit:
./nrkfs.py nrk
Filen må være kjørbar, og “nrk” vil i dette tilfellet bli mappen som skal være monteringspunktet, denne mappen må allerede være opprettet. Gevinsten er ikke vanskelig å forestille seg:

Det er bevisst ikke opprettet noen debian-pakke eller egg-pakke av dette lille prosjektet enda, det får komme etter litt mer testing om det skulle være noen interesse for det.
Oppdatering: Debian-pakke er tilgjengelig for nedlasting fra GitHub sammen med instruksjoner for installasjon.
Håper noen har ønske om å teste dette ut og kan komme med tilbakemeldinger, er svært interessert i det som ikke måtte fungere.
2009
Informasjonen her er utdatert, følg heller instruksjonene som er å finne på Github.
Instrukser for å installere under Ubuntu (forutsetter superbrukertilgang gjennom sudo):
[Åpne en terminal i hjemmemappen]sudo aptitude install -y fuse-utils libfuse2 python-fuse python-beautifulsoup subversion
svn co http://svn.averlend.com/public/nrkfs/trunk nrkfs
chmod u+x nrkfs/nrkfs.py
mkdir nrk
./nrkfs/nrkfs.py nrk
For å montere opp etter restart kjøres kun den siste linjen. Lykke til!
2010
Dette er jo helt fantastisk Erlend! Fikk feilmelding på “sudo dpkg -i nrkfs_0_3.deb”, men det ordna seg med “sudo aptitude install nrkfs”.
2010
Jepp, det kommer en feilmelding, men siden det gjør jobben med å forberede til at pakken og avhengigheter deretter kan installeres så blir det slik. Skulle gjerne sett at det var et annet alternativ, men det får jeg se nærmere på siden.
2009
Genialt, Erlend!
Men kunne du ikke opprettet et prosjekt på github for nrkfs slik at andre kan være med på å utvikle prosjektet videre? Jeg kunne f.eks. tenke meg at man ikke bare fikk tilgang til .asx-filene, men direkte tilgang til de underliggende MMS-strømmene som man så kan mate inn i f.eks. VLC eller libmms for å lagre lokalt.
2009
@Asbjørn: Gjerne det, skal se til at det blir opprettet.
2009
Artig konsept! Testa det, og får opp filsystemet, men vlc gir meg feilmeldinger av typen:
Unable to open ‘/home/atle/nrk/Mat/Smaken av Danmark/NRK – Norsk Rikskringkasting’
Unable to open ‘/home/atle/nrk/Mat/Smaken av Danmark/’
Unable to open ‘/home/atle/nrk/Mat/Smaken av Danmark/09-07-29 Smaken av Danmark – Dansk matserie. Den danske kokken Claus Meyer tar oss med på en kulinarisk rundreise i matlandet Danmark.’
Unable to open ”
Unable to open ‘/home/atle/nrk/Mat/Smaken av Danmark/’
Unable to open ‘/home/atle/nrk/Mat/Smaken av Danmark/’
noen tips?
2009
Så var det det med å mase før man har testet… Kaffeine ser ut til å takle saken mye bedre! Dette er jo en helt genial løsning for en mediesenter pc! Takker for at du deler denne !
2009
[...] http://blog.averlend.com/2009/05/23/nrk-som-filsystem/ a few seconds ago from IdentiTwitch [...]
2009
Ooohh, finfin. Må prøve ut. Du er ferdig med studiene, er du ikke? For du står fremdeles oppført som stud.ass i IT2103.
ps. http://www.ntnutimeplan.no/ fungerer ikke.
2009
Prøv å gå til nrk/Dokumentar/Brennpunkt/Brennpunkt 2009/ da får du feilmeldinger, og scriptet klarer ikke å plukke ut URLer korrekt.
2010
Jeg har flere brukere på maskinen og ønsket derfor dette tilgjengelig for alle.
Derfor prøvde jeg dette:
- Installerte DEB pakken
- Opprettet en mappe /nrk som har full tilgang til alle (chmod 777 /nrk)
- Åpnet et terminalvindu og laget en fil med følgende kode:
#! /bin/sh
nrkfs.py /nrk
Deretter gjorde jeg den kjørbar:
sudo chmod 755 /etc/init.d/nrk
Så la jeg den inn slik at den startes hver gang maskinen starter:
sudo update-rc.d nrk defaults
Dette fungerer i og for seg helt greit bortsett fra en ting: Det er kun brukeren som kjører monteringen som får tilgang uavhengig av hvordan jeg setter rettighetene.
Er det mulig å fikse dette på noen måte?
2010
Jeg har prøvd å finne ut av dette tidlige, og da fant jeg at om jeg legger på alternativet “allow_other” vil dette fungere. Mitt forslag til hvordan montere, som testet hos meg:
nrkfs.py -oallow_other /nrk/Håper dette fungerer også for deg, si ifra om det ikke gjør det.
2010
En helt annen måte å montere NrkFS er ved å legge til denne linjen i fstab:
/usr/bin/nrkfs.py /nrk fuse allow_other,auto 0 02010
Jeg har montert opp nrkfs på en Ubuntu server, og det virker fint, men er det mulig å dele det videre til andre PC-er i huset via Samba? Jeg har prøvd men får “not accessible” og “The handle is invalid” når jeg prøver å mappe den opp fra Windows, og “Bad file descriptor” fra Ubuntu Netbook.
2010
Jeg vil tro dette problemet er relatert til problemer jeg har med å kunne gjøre filsystemet tilgjengelig for en Apache HTTP-server. Om man monterer NrkFS i en mappe under /var/www blir denne mappen usynlig og utilgjengelig, om man benytter sshfs på samme plass går det fint. Siden jeg ikke finner noen forskjell mellom filene (med siste oppdatering i dag) når jeg kjører “stat” er jeg usikker på hva det er som skiller disse fra hverandre.
2010
Dette er ordnet i versjon 0.3, var irriterende at dette ikke fungerte når alt kom til alt… =D
2010
Helt nydelig! Jeg har bare installert pakken, montert og åpnet noen få filer, men alle har så langt fungert uten problemer. Tilgang til NRK-arkiv via filsystemet er jo rett og slett konge for meg som ser ganske mye på NRK’s innhold på nett, men (som flere) alltid må krangle med NRK’s nettsider.
2010
Det gleder med at du liker programvaren, det er godt å se at stadig flere finner nytte i programmet jeg laget for å få tilgang til Dagsrevyen uten å krangle med nettleseren. Så snart jeg begynner å få overskudd av tid vil også direkte-strømmene komme på plass i programvaren slik at den kan i enda større grad erstatte nrk.no.
2010
Dette er veldig kult! Dessverre hakker strømmen veldig for meg, og det tar lang tid å buffre. Men det er vel linja mi sin skyld.
Det som hadde vært enda mye kulere hadde vært om du kunne laget en Totem-plugin for dette, så vi kunne fått NRK inn der på samme måte som vi i dag får BBC: http://people.canonical.com/~cjwatson/totem-bbc-2.png
2010
I dag er båndbredden som kommuniseres til NRK sine servere noe høy, noe det er ønskelig å kunne justere fra neste utgave. Jeg opplever også at det tidvis er hakking i streaming, til tross for veldig bred båndbredde, noe jeg tror skyldes last hos NRK eller hos nett-leverandør.
Plugin til Totem er en god idé, og jeg ser at man kan bruke Python til også dette. En del av programmet er skrevet for å kunne gjenbrukes, og dette kan brukes til dette formålet. Jeg har dessverre ikke tid til å titte på dette enda, men jeg tar det med meg som en issue på Github.
2010
Strømmen hakker ikke i det hele tatt for meg. Jeg har en liten HP-tynnklient med Ubuntu Netbook Remix som akkurat klarer å spille av en rippet DVD, men ikke HD-innhold. Båndbredden er bra, så kanskje derfor.
Kanskje et Personal Packet Archive (PPA) på Launchpad hadde vært tingen etterhvert? Så kan folk få oppdaterte utgaver etterhvert som feilfikser og utvikling går sin gang.
2010
Ja, en PPA hadde vært supert!
2010
Å få pakken inn i en pakkebrønn ville absolutt være en fordel. Skal se om jeg kan få dette på plass etterhvert.
2010
runesole@rubuntu:~$ ./nrkfs/nrkfs.py nrk
Traceback (most recent call last):
File “./nrkfs/nrkfs.py”, line 18, in
root = nrk.getRoot()
File “/home/runesole/nrkfs/nrk.py”, line 78, in getRoot
root.addChildren(getThemes())
File “/home/runesole/nrkfs/nrk.py”, line 101, in getThemes
ul = request(“http://www1.nrk.no/nett-tv/”).findAll(id=”ctl00_ucTop_themes”)[0]
IndexError: list index out of range
runesole@rubuntu:~$
Ka no?
2010
Dette var jo så lett og greit sist jeg prøvde. Men nå får jeg bare feilmelding:
The folder contents could not be displayed.
You do not have the permissions necessary to view the contents of “nrk2″.
Vet du hva som skjer?
2010
Jeg kan tenke meg at monteringen er gjort med en annen bruker enn den som aksesserer mappen. Jeg har skrevet noe om dette under installasjon om hvordan man kan montere for flere brukere på en gang. Dersom det da fortsatt ikke fungerer trenger jeg noe mer informasjon om hvordan problemet oppstår.
2010
Jeg får dette:
[root@util nrkfs]# ./nrkfs.py
Traceback (most recent call last):
File “./nrkfs.py”, line 29, in ?
import nrk
File “/root/nrkfs/nrk.py”, line 32
class Node():
^
SyntaxError: invalid syntax
Hvilken versjon av python burde dette kjøre under ? Jeg har python-2.4.3
Eller er det andre ting jeg mangler ?
2010
endret class Node(): til class Node: så gikk det bedre.
Fikk likevel ikke opp filene, da måtte jeg endre i getProject(url) metodekallet siden nrk tydeligvis bruker en annen id i div-taggen sin enn det nrkfs forventer.
Endret til ctl00_contentPlaceHolder_UcProjectInfo_menu og da fungerte alt meget bedre, genialt
2010
Hei!
Jeg kjørte “sudo aptitude install -y fuse-utils libfuse2 python-fuse python-” i terminalen på ubuntu netbook edition 10.10, og plutselig så forsvant hele startmenyen min, med mer. Tips til hvordan jeg skal få det tilbake? Er relativt fersk på Linux-fronten.
På forhånd takk
2010
Jeg kan ikke se at det er noe i den kommandoen som skal medføre endringer i desktop-oppsettet. Det er veldig interessant om det er flere som erfarer dette.
2011
Hei,
Kanskje ikke riktig å spørre, men vil det være store oppgaven å “porte” dette slik at det også fungerer under windows (evnt. under alle OSer som kjører Python)?
Har ytterst lite erfaring med python, men vil det være mulig å gjøre det ikke-os-spesifikt?
Tross alt en fantastisk idé!
2011
En av forutsetningene for programmet slik det er i dag er bruk av Fuse for å montere dette virtuelle filsystemet. Fuse finnes, såvidt jeg vet, ikke for Windows (om man søker på “fuse windows” finner man mange som ønsker dette).
Derimot er ikke alt håp ute. Programmet jeg har laget består av to deler; en fil som inneholder logikk for NRK, og en fil som “lager” filsystemet. Siden den første delen ikke er avhengig av den andre delen har jeg ingen problemer med å se for meg at man kan bruke logikk-delen til å lage alternative klienter, eksempelvis et lite program som kan installeres på Windows for å bla i nett-TV.
Om man ikke ønsker å lage noe nytt, men har tilgang på en boks med Linux, men ønsker å bruke Windows til å se TV, kan man sette opp Linux til å dele NRK-området som en delt harddisk som da blir tilgjengelig direkte fra Windows.
2011
Jeg skrev et Python-skript noen dager før jeg ble oppmerksom på dette prosjektet som direkte opprettet en mappestruktur tilsvarende nett-tv’ens løsning; Kategori -> Program -> Klipp evnt. Mappe (-> Klipp).. Dette ble imidlertid noe tungvint (tross alt hundrevis av mapper/filer som skal opprettes).
Målet var imidlertid å hele tiden ha dette synkronisert, slik at slettede/nye programmer var fjernet/tilgjengelig. Er dette noe som løses i NrkFS? Har imidlertid litt for liten erfaring med Python til å få til dette. Skal se om det evnt. er noe som kan gjenbrukes i din versjon
2011
Du er ikke den første som ønsker å ha en egen kopi av NRK sitt tilbud i stedet for å ha det virtuelt. Jeg har derfor tatt meg noen minutter for å skrive et lite program som laster ned tilbudet til en (eventuelt spesifisert som første parameter) mappe. Ta en titt på nrkdownload.py. (Deb-pakken 0.4.0-beta2 har også med denne filen.)
2011
Ser ut til å fungere i teorien, men en del encodingproblemer oppstår desverre. Har prøvd å endre encoding i selve filene, endre hvordan koden encoder, men har ikke funnet noen løsning.
2011
Jeg vet om noen problemer i forhold til tegn og tegnsett, men problemet er nok mer markant på Windows enn på Linux. Planen er å få på plass mest mulig rundt dette til versjon 0.4.0, så om du titter innom etterhvert vil flere brikker falle på plass etterhvert…
For å teste begynte jeg å kjøre hos meg, og er nå oppe i 42174 mapper og filer, men så dukket det opp en ny feil som også må håndteres.
2011
Flotte greier! Skal se om jeg får tid til å se nærmere på problemet under Windows, om det er noe spesifikt i forhold til tegnsett som må ordnes der. Ser det er noen flere referanser til hvor tegnsett settes/endres (synes dette er et særskilt problematisk felt under Python, men kanskje det ikke er det bare man kan det)
Følger med! Ikke bare bare å få dette 100% fool-proof..
2011
Hei
Jeg prøver å få dette til.
Jeg bruker Chakra (Arch lignende distro) Jeg kan jo ikke bruke .deb til å installere, men bruker ./nrkfs.py nrk til å montere filsystemet.
Alt fungerer fint frem til /underholdning
Når jeg da klikker på nytt på nytt får jeg bare melding om at folderen ikke eksisterer.
Er det noe jeg gjør galt?
Takk for et genialt program!!
2011
Hei
Jeg vet at det per i dag er en liten feil i koden som ligger i master som gjør at dersom man har hatt filsystemet montert en liten stund vil det slutte å fungere helt som tiltenkt (oppdatering av mellomlagring som ikke er helt korrekt).
Her hos meg fungerer mappen “Underholdning” helt fint. Har du prøvd å montere filsystemet på nytt?
Det er kjekt at du liker det og gir tilbakemelding, det er slik det blir bedre over tid.
2011
får fortsatt feilmelding om at folderen ikke eksisterer
Bare for å sjekke at jeg gjør det riktig.
lastet ned : klakegg-nrkfs-573b37e.zip og pakker ut filene.
Jeg “cd er” inn i folderen og kjører “./nrkfs.py /home/minbruker/nrk
Filsystemet monteres.
Men hva med de andre filene i folderen? Skal jeg kjøre “nrk.py” filen også?
Igjen
Takk!!!
2011
Det ser ut til at du gjør det helt riktig.
Filen nrk.py eksisterer som ledd i å dele kildekoden med tanke på gjenbruk, det er kun nrkfs.py som er interessant når man skal montere NRK sin nett-TV som filsystem.
2011
Ok.
Prøver igjen når jeg kommer hjem:-)
2011
Hei. Jeg har problemer med å få programmet til å kjøre på fedora (fc16). Jeg har prøvd å kjøre python-filene direkte og konvertering av deb-filen til rpm. I begge tilfeller får jeg feilmelding
ls: cannot access /media/nrk: Invalid argument
når jeg skriver ls -l på mappen over ser nrk-mappen ut som spørsmålstegn i steden for å vise rettighetene:
drwxr-xr-x. 5 root root 100 Dec 26 14:56 .
drwxr-xr-x. 21 root root 4.0K Dec 26 17:33 ..
d?????????? ? ? ? ? ? nrk
Har du noen tips for hvordan jeg kan bruke dette uten å bytte til Ubuntu?