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:

NrkFS

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.

# # #

26 kommentarer til “NRK som filsystem”

  1. Erlend skriver:

    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! :D

    • Espen Klem skriver:

      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”.

      • Erlend skriver:

        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. :)

  2. Asbjørn Ulsberg skriver:

    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.

  3. Erlend skriver:

    @Asbjørn: Gjerne det, skal se til at det blir opprettet. :)

  4. 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?

  5. 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 !

  6. Carl-Erik skriver:

    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.

  7. Thomas skriver:

    Prøv å gå til nrk/Dokumentar/Brennpunkt/Brennpunkt 2009/ da får du feilmeldinger, og scriptet klarer ikke å plukke ut URLer korrekt.

  8. Terje skriver:

    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?

    • Erlend skriver:

      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.

    • Erlend skriver:

      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 0

      :)

  9. Otto skriver:

    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.

    • Erlend skriver:

      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.

      • Erlend skriver:

        Dette er ordnet i versjon 0.3, var irriterende at dette ikke fungerte når alt kom til alt… =D

  10. Audun Sæther skriver:

    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.

    • Erlend skriver:

      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.

  11. 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

    • Erlend skriver:

      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. :)

  12. Espen Klem skriver:

    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.

  13. Rune skriver:

    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?

  14. 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?

    • Erlend skriver:

      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. :)

Legg igjen en kommentar