Skripti ylen sarjojen tallennukseen

Yleiset ongelmat, ohjelmien kääntäminen, kernel, lirc jne.

Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja Rene » 07.09.2014 15:12

Väsäsin äsken skriptin joka lataa pojalle automaattisesti tiettyjä sarjoja Yle Areenasta. Skripti lataa sarjan rss-syötteen, ja vertaa mitä on aikaisemmin haettu. Jos jotain puuttuu tai tulee uusi jakso, tämä pätkä tallennetaan. Sarjat päätyvät omaan hakemistoon, joten esim Galaxy tabin oma soitin näyttää ohjelmat omissa kansioissaan. Tabiin taas siirrän ohjelman joko BotSync SSH SFTP tai rsync backup for Android ohjelmilla

Käytössä on viimeisin yle-dl skripti joka löytyy täältä: http://aajanki.github.io/yle-dl/index.html

Skriptiin laitoin croniin, ja se tarkistaa säännöllisin väliajoin mitä uutta on ilmestynyt.

Ohjeet ovat aika helpot: Etsi Areenan hakukentässä sarja jonka haluat tallentaa, esim Late Lammas. Hakutuloksessa näkyy linkki sarjaan, joka näytää esim. tältä: http://areena.yle.fi/tv/2193715. Käytä numeroa 2193715, ja lisää se urls-hastableen (mikäköhän se nyt onkaan suomeksi) näin: ["Shaun"]="2193715". Annettu nimi käytetään hakemiston nimenä mihin jaksot tallennetaan.

Koodi on väsätty eri erissä, joten se on varmaan hieman sekava.. ;-)
Koodi: Valitse kaikki
#!/bin/bash
declare -A urls

urls=( ["Garlfield"]="2213192" ["Hupsis"]="1819331" ["Pate"]="771331" ["Shaun"]="2193715" ["Viiru"]="1234329" )
dir="/data/tallenteet"

useragent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 Lightning/3.3"

for url in "${!urls[@]}"
do
  donefile="$dir/$url/.done"
  if [ ! -f $donefile ]; then
    touch $donefile
    echo "\"Clip id\";\"Local filename\";\"Original filename\"" > $donefile
  fi
  if [ ! -d "$dir/$url" ]; then
    mkdir -p "$dir/$url"
  fi

  #På svenska
  #wget http://arenan.yle.fi/api/search.rss?id=${urls["$url"]} -q -O "/tmp/${urls["$url"]}.xml" --user-agent="$useragent"

  #Suomeksi
   wget http://areena.yle.fi/api/search.rss?id=${urls["$url"]} -q -O "/tmp/${urls["$url"]}.xml" --user-agent="$useragent"

  links=$(cat "/tmp/${urls["$url"]}.xml" |grep link |grep -v rss|tr -d ' '|cut -c7-|rev|cut -c9-|rev)
  for link in $links
  do
    clipid=$(echo "$link" |rev|cut -d "/" -f1|rev)
    if [ $(cat $donefile |grep $clipid|wc -l) -eq 0 ];then
      ylefilename="$(yle-dl -q --showtitle $link).flv"
      filename=$(echo $ylefilename|sed -s 's/:/-/g')
      #if [ ! -f "$dir/$url/$filename" ];then
      yle-dl --quiet $link -o "$dir/$url/$filename"
      #fi
      RETVAL=$?
      if [ $RETVAL -eq 0 ]; then

        if [ $(cat $donefile |grep "$clipid"|wc -l) -eq 0 ];then
          echo "\"$clipid\";\"$filename\";\"$ylefilename\"" >>  $donefile
        fi
        fdate=$(echo $filename|rev| cut -c14-23|rev)
        ftime=$(echo $filename|rev| cut -c5-12|rev|sed -s s'/-/:/g')
        tstamp="$(date -d "$fdate" +'%d %b %Y') $ftime"
        touch -d "${tstamp}" "$dir/$url/$filename"
      fi
    else
        echo "File already exists: $clipid "
    fi
  done
done
chmod -R go=rx $dir/*
Viimeksi muokannut Rene päivämäärä 07.09.2014 15:41, muokattu yhteensä 1 kerran
Syy: Unohtui ohjeet :-)
Avatar
Rene
Yli-ihminen
 
Viestit: 637
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 21.09.2014 12:44

Kiitos! Tuunasin ja muokkasin tätä jonkin verran omaan käyttööni, mutta varastin kumminkin perusajatuksesi. Onko jossain muuten jotain selitystä sille, miten tuota search.rss-syötettä pitäisi käyttää ja parsia? Virittelin oman versioni siten, että se hakee ohjelman nimellä automaattisesti areenan käyttämän numerosarjatunnuksen, jolloin niitä ei tarvitse itse syöttää tuohon sanakirjaan. Tällä hetkellä tämä on kuitenkin aikamoinen purkkaviritys ylen Ohjelmat A-Ö -listauksen päällä.
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja Rene » 22.09.2014 13:43

Onko sulla esimerkkilinkki tuohon search.rss sivuun?
Avatar
Rene
Yli-ihminen
 
Viestit: 637
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 23.09.2014 9:19

Tarkoitan, että kun haet tuossa skriptissä ohjelmia numerotunnuksen perusteella näin:
Koodi: Valitse kaikki
http://areena.yle.fi/api/search.rss?id=${urls["$url"]}

niin onko mahdollisesti muitakin hakuperusteita käytettävissä kuin 'id' tai onko ehkä muitakin rss-virtoja käytettävissä ohjelmien hakemista varten. Varsinainen kysymykseni oli siis, perustuuko tuo käyttämäsi hakumenetelmä yritykseen ja erehdykseen vai onko Yle mahdollisesti antanut jossain ohjeet tuohon.
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja Rene » 23.09.2014 15:24

antoine kirjoitti:Tarkoitan, että kun haet tuossa skriptissä ohjelmia numerotunnuksen perusteella näin:
Koodi: Valitse kaikki
http://areena.yle.fi/api/search.rss?id=${urls["$url"]}

niin onko mahdollisesti muitakin hakuperusteita käytettävissä kuin 'id' tai onko ehkä muitakin rss-virtoja käytettävissä ohjelmien hakemista varten. Varsinainen kysymykseni oli siis, perustuuko tuo käyttämäsi hakumenetelmä yritykseen ja erehdykseen vai onko Yle mahdollisesti antanut jossain ohjeet tuohon.

Tuo ${urls["$url"]} on vain sitä varten mihin nimiseen kansioon sarja tallennetaan, ja mikä sarja-id sieltä ladataan. Sarjan taakse ilmestyy aina uudet jaksot, joten parsin vain sarjan sivusta jaossa ja ladattavissa olevat ID:t. Haun joutuu siis tehdä manuaalisesti. Huomasin myös että yle ei aina käytä samaa nimeä ohjelmalle kun mitä sarjan nimi on. Silloin haku joka perustuu sarjan nimeen saattaa mennä pieleen..
Avatar
Rene
Yli-ihminen
 
Viestit: 637
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 05.10.2014 18:10

Kehittelin tosiaan ajatusta eteenpäin ja lisäsin tähän
-tuen myös Ruudun ja Katsomon* ohjelmille
-ohjelmien haun ja tallentamisen säännöllisellä lausekkeella
-aineiston muuntamisen MP4-muotoon tekstityksineen ja metatietoineen

* tallentaminen onnistuu vain videoleikkeiden, ei kokonaisten jaksojen, osalta

Siirsin valtaosan omista DVB-tallentimistani tämän skriptin päälle; kaikkia kotimaisilla kanavilla pyöriviä tv-sarjoja ei kuitenkaan valitettavasti ole kanavien omien netti-tv-palvelujen kautta saatavilla ainakaan ilmaiseksi.

3.6.2017 - versio 1.4.1: Ruutu-päivitys
Liitteet
vhs-1.4.1.tgz
(9.65 KiB) 12 kertaa
Viimeksi muokannut antoine päivämäärä 03.06.2017 17:14, muokattu yhteensä 7 kertaa
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 20.12.2014 11:59

vhs.sh on nyt saatavilla myös githubista: https://github.com/an7oine/vhs. Julkaisen uusia versioita jatkossakin myös täällä sikäli kuin kerkiän ja jaksan.
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja phelin » 29.12.2014 13:19

antoine kirjoitti:vhs.sh on nyt saatavilla myös githubista: https://github.com/an7oine/vhs. Julkaisen uusia versioita jatkossakin myös täällä sikäli kuin kerkiän ja jaksan.


Kokeilin skriptiäsi ja ainakin Ubuntu 14.04:n AtomicParsley ei tue kaikkia käyttämiäsi parametreja, kuten hdvideo, rating ja longdesc. Tämän takia mitään ei jäänyt jäljelle, kun flv-tiedsto poistettiin eikä m4v-tiedoston kokoaminen valmistunut. Lisäksi ainakin Pasila-ohjelman lisääminen a-vipua käyttäen ei toimi, koska nimessä on ikäraja mukana (eli "(12)"). Mutta kivaltahan tuo vaikuttaa. :)
Avatar
phelin
Yli-ihminen
 
Viestit: 1256
Liittynyt: 09.02.2005 3:00
Paikkakunta: Helsinki

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 30.12.2014 0:38

Täytynee lisätä apuohjelmavaatimuksiin noita versionumeroita - omat AP-versioni ovat 0.9.5 (OS X) ja 0.9.6 (Linux). Mahtaako ubuntun pakettivarastoista löytyä mercurial-versiota (https://bitbucket.org/wez/atomicparsley)?

Voitko tarkentaa ongelmaa tuon tallentimen lisäämisen suhteen? Minulla './vhs.sh a Pasila' toimii.
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja Critter » 30.12.2014 10:32

Heh.. Kokeilin ./vhs.sh r Pasila

Tuloksena:
Koodi: Valitse kaikki
Pasila (12)  (1438300: METATIETOVIRHE)  (6011: METATIETOVIRHE)  (2284: METATIETOVIRHE)  (1567: METATIETOVIRHE)  (1027481: METATIETOVIRHE)  (1013130: METATIETOVIRHE)  (995712: EI SAATAVILLA)  (958604: METATIETOVIRHE)  (962924: METATIETOVIRHE)  (968834: METATIETOVIRHE)  (988672: METATIETOVIRHE)  (1004888: METATIETOVIRHE)  (1774978: METATIETOVIRHE)  (952004: EI SAATAVILLA)  (1816453: METATIETOVIRHE)  (1407694: EI SAATAVILLA)  (1400266: METATIETOVIRHE)  (1430463: METATIETOVIRHE)  (1816452: METATIETOVIRHE)  (1353174: METATIETOVIRHE)  (1461434: METATIETOVIRHE)  (1792989: METATIETOVIRHE)  (1414894: METATIETOVIRHE)  (1422581: METATIETOVIRHE)
* FFmpeg-yhteensopivaa AAC-koodekkia (libfaac/libfdk_aac/libvo_aacenc) ei löydy


Ennen viimeistä herjaa kaikki ko. ladatut jaksot olivat ns. valmiita, mutta tuon herjan seurauksena kaikki katosivat.

Ei taida oma ffmpeg sitten tukea noita aac audioita.
Koodi: Valitse kaikki
~$ ffmpeg -codecs | grep aac
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 26 2014 09:49:36 with gcc 4.6.3
  configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
 DEA D  aac             Advanced Audio Coding
 D A D  aac_latm        AAC LATM (Advanced Audio Codec LATM syntax)


Ehkä ei olisi pitänyt laittaa tuollaista miljuunan jakson könttiä ensitestiin. :)
RIP VDR
VU+ DUO2 (OPENVIX 5), 2xDual T2/C viritin, La Digital CI+ CAM, 1 TB HD, LG 60PN650T, Chromecast 2
LG 55UH770V + PS4 + Wetek Play
Critter
Yli-ihminen
 
Viestit: 868
Liittynyt: 16.12.2008 19:25

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja phelin » 30.12.2014 13:13

antoine kirjoitti:Voitko tarkentaa ongelmaa tuon tallentimen lisäämisen suhteen? Minulla './vhs.sh a Pasila' toimii.


Ehkä esitin asian väärin. a-vipu lisää kyllä Paslan, mutta nimeen tulee mukaan (kuten kokonaisesa nimessä onkin) se ikäraja suluissa, minkä seurauksena sarjan tallentaminen taas ei onnistunut. Kun vaihdoin tekstitiedoston nimeksi Pasila.txt, tallennus toimi. Tosin kyseinen sarja on kyllä tosi hankala testiväline, sillä sitä on lisäilty Areenaan monella eri tavalla (jaksojen numerot ja nimet ainakin kolmella eri syntaksilla yms).
Avatar
phelin
Yli-ihminen
 
Viestit: 1256
Liittynyt: 09.02.2005 3:00
Paikkakunta: Helsinki

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja phelin » 30.12.2014 13:19

Critter kirjoitti:Heh.. Kokeilin ./vhs.sh r Pasila

Tuloksena:
Koodi: Valitse kaikki
Pasila (12)  (1438300: METATIETOVIRHE)



En muista oliko virhenumero sama, mutta minulle noita tuli AtomicParsleysta yllä mainittujen versioriippuvaisten parametrien takia.
Avatar
phelin
Yli-ihminen
 
Viestit: 1256
Liittynyt: 09.02.2005 3:00
Paikkakunta: Helsinki

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 30.12.2014 20:52

Koodi: Valitse kaikki
Pasila (12)  (1438300: METATIETOVIRHE) - -
* FFmpeg-yhteensopivaa AAC-koodekkia (libfaac/libfdk_aac/libvo_aacenc) ei löydy

Liian vanha AtomicParsley ei, kuten phelin jo ylempänä totesikin, ymmärrä kaikkea sille syötettyä metatietoa ja aikaansaa näkemäsi virheen. Vanhojen ffmpegien kertoma informaatio koodekeistaan puolestaan ei ole yhteensopivaa uudempien kanssa. Nykyiset ffmpeg-versiot tuottavat seuraavanlaisen informaation, josta merkkijono 'libfdk_aac' poimitaan ja tunnistetaan kelvolliseksi AAC-koodekiksi:
Koodi: Valitse kaikki
$ ffmpeg -codecs 2>/dev/null |grep aac
 DEA.L. aac                  AAC (Advanced Audio Coding) (decoders: aac libfdk_aac ) (encoders: aac libfdk_aac )
 D.A.L. aac_latm             AAC LATM (Advanced Audio Coding LATM syntax)

Tätä tietoa kuitenkin tarvitaan vain radiolähetyksiä tallennettaessa; kaikki nuo muut jaksot epäonnistuvat ainoastaan AP:n takia. Yritän joululomien jälkeen selvittää, mitkä versionumerot pitäisi asettaa minimivaatimukseksi näille apuohjelmille.
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja rofafor » 30.12.2014 21:50

antoine kirjoitti:Vanhojen ffmpegien kertoma informaatio koodekeistaan puolestaan ei ole yhteensopivaa uudempien kanssa.

Koodi: Valitse kaikki
ffprobe -print_format json
Avatar
rofafor
Optikkoliikkeen kopiovastaava
 
Viestit: 1365
Liittynyt: 26.03.2004 3:00
Paikkakunta: Internet

Re: Skripti ylen sarjojen tallennukseen

ViestiKirjoittaja antoine » 31.12.2014 10:49

Mitä tuon pitäisi tehdä?
tvheadend @arch linux @rpi → itunes @imac → apple tv
antoine
Asiantuntija
 
Viestit: 129
Liittynyt: 20.04.2009 18:29
Paikkakunta: Hämeenkyrö

Seuraava

Paluu Linux

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 1 vierailijaa