[xmltv-upc] tv_grab_nl_upc 1.7.0 uit.

Ian Macdonald ian at caliban.org
Mon Jan 18 15:24:08 CET 2010


Dag allemaal,

Alweer een nieuwe versie en deze keer ook alweer genoodzaakt door
verregaande wijzigingen aan de kant van UPC.

Deze keer licht ik een tipje van de sluier om te laten zien waar ik zoal
mee te maken krijg in het dagelijks bijhouden van zo'n grabber.

Ooit hadden we per zender per dag nog maar één gidspagina met alle
programmadata voor die dag. Wat was dat makkelijk, zeg.

Dat was helaas blijkbaar allemaal te overzichtelijk voor UPC, dus stapte
men vorig jaar over op een opzet waarbij elk programma werd gelinkt
vanaf de dagpagina. Deze link moest worden gevolgd om de desbetreffende
data op te halen voor dat programma, met dan ook nog de kans een tweede
link te moeten volgen als de omschrijving te lang was voor de eerste
pagina. Heel omslachtig en arbeidsintensief (ook met een browser!).

Nu is de opzet weer aangepast.

Nog steeds is elk programma gelinkt vanaf de dagpagina, maar nu leidt
deze link naar een pagina waarop ALLE nog geagendeerde uitzendingen van
het programma staan, dus ook de herhalingen.

De ellende is dat het programmatisch lastig is om de juiste uitzending
uit de lijst erbij te zoeken, want hoewel op de dagpagina elk programma
van een unieke ID is voorzien, deze is niet terug te vinden op de pagina
met geagendeerde uitzendingen.

Nog erger is dat de uitzending in kwestie er soms helemaal niet tussen
staat. Dat is bv. altijd het geval met reeds uitgezonden programma's. Op
de dagpagina staan ze er nog, want die geeft immers de programmering
weer van de hele dag, maar op de pagina met de nog uit te zenden
voorstellingen zijn ze al verwijderd, want het betreft daar immers
alleen toekomstige uitzendingen.

Om deze reden wordt voortaan --actual (hetzelfde als --ignore-old)
standaard toegepast. Het heeft immers geen zin om programma's op te
zoeken als je bij voorbaat weet dat de gegevens ervan ontbreken.

Helaas komt het in de nieuwe opzet ook zeer vaak voor dat nog uit te
zenden voorstellingen ontbreken in de lijst van geagendeerde
uitzendingen. In dat geval kan ik de eindtijd van de uitzending er niet
uit lezen, dus leid ik die af aan de hand van de starttijd (te vinden op
de dagpagina) en de duur (die gelijk zou moeten zijn voor alle
uitzendingen).

In de praktijk kan het echter voorkomen dat de op deze wijze berekende
eindtijd soms niet helemaal juist is, want zelfs twee identieke
uitzendingen kunnen in duur verschillen als er een verschillende
hoeveelheid reclame tussen wordt gepropt. Tja.

Zo kan ik nog vele zondagen slijten met de raadsels waar UPC me telkens
weer voor zet.

De site van UPC wordt overigens steeds afhankelijker van JavaScript. Als
je in een browser naar de hoofdpagina van de gids gaat
(http://tvgids.upc.nl/TV/), zie je bv. een mooie pagina met alle zenders
netjes onder elkaar en de programmering van een bestek van drie uur. Je
zou toch eens moeten onderzoeken hoeveel JavaScript er wordt aangeroepen
om dit alles bij elkaar te rapen.

Gezien de grabber in Ruby geschreven is en Ruby uiteraard geen
Javascript-interpreter heeft (evenmin als Python, Perl et al), moet ik
bij elke wijziging aan de site van UPC opnieuw uitvogelen op welke
manier welke JavaScript-functie uit welk bestand de data aanvraagt en op
welke manier die vervolgens terugkomt. Pas dan kan ik uit de brij van
ontvangen JavaScript en HTML de relevante programmagegevens tussenuit
zien te vissen.

Zo kostte het me gisteren de nodige tijd om zelfs weer uit te zoeken hoe
ik aan een volledige lijst van alle zenders kon komen. Vroeger was dit
gewoon een link vanaf de hoofdpagina naar een andere HTML-pagina. Nu is
het nog steeds een link, maar de link zit tegenwoordig diep begraven in
een vrijwel onleesbaar-geformatteerde JavaScript-functie die zelf ook
nog eens zit in een apart JavaScript-bestand dat gelinkt is vanaf de
hoofdpagina.

En als je eenmaal de link hebt gevonden, dan zie je dat er voortaan ook
parameters toegevoegd moeten worden aan de URL.

Ja hoor, het valt niet mee om auteur van deze grabber te zijn. Het is
maar dat ik hem zelf ook nog steeds gebruik. :-)

Op naar de andere veranderingen in deze nieuwe versie van de grabber:

* Een nieuwe optie, --ignore-errors. Deze zorgt ervoor dat, in het geval
  dat er onzin wordt opgehaald voor een bepaalde uitzending (als de
  server bv. een foutmelding terugstuurt i.p.v. de programmagegevens),
  het programma gewoon door blijft lopen.

  Dit gebeurt eigenlijk zeer zelden, waardoor deze optie zo lang kon
  uitblijven.

* De implementatie van --actual is veranderd. Vroeger werden programma's
  genegeerd als de eindtijd ervan eerder was dan de actuele tijd (d.w.z.
  programma reeds geëindigd). Voortaan worden ze genegeerd als het uur
  van de _starttijd_ eerder is dan het uur van de actuele tijd (d.w.z.
  programma reeds begonnen). Sommige nog lopende programma's worden door
  deze aanpak dus nog meegenomen.

* --debug laat nu gaandeweg een deel van de opgehaalde programmagegevens
  zien.

* Informatie over regisseurs en acteurs wordt in de nieuwe opzet vaker
  ingevuld door UPC. Deze zie je met --debug ook voorbij komen.
  Uiteraard komt deze data als vanouds ook terecht in de XML-uitvoer.

Zoals altijd is de nieuwste versie hier te vinden:

  http://www.caliban.org/ruby/xmltv_upc.shtml#download

Ian
-- 
Ian Macdonald               | Happiness is having a scratch for every
ian op caliban.org             | itch.   -- Ogden Nash 
http://www.caliban.org/     | 
                            | 
                            | 


More information about the xmltv-upc mailing list