Steffest Digitale Pulptuur

Reacties
Idd zeer leuk, alleen ben je zeker dat je geen inbreuk maakt op de gebruikersovereenkomst?
Filip - 11/06/2010 09:41:06

Tja ... het staat niet echt expliciet op hun gebruiksvoorwaarden op http://www.tv.be/privacy maar het zal inderdaad niet helemaal hun bedoeling zijn dat de site zo gebruikt wordt.
Och ja: 't is een meerwaarde voor hun product hé ;-)
Steffest - 11/06/2010 11:08:03

Zeer leuk, telenet zou een officieel (open) API moeten maken!

De grootste inbreuk hier is waarschijnlijk het "leegroven" van hun databank. (tip: lees eens iets over de wet databanken van 31 aug. 1998)

Ze vermelden het zelfs expliciet:
"De site is tevens een databank beschermd door het auteursrecht en de wetgeving inzake de bescherming van databanken. Het is verboden zonder voorafgaand schriftelijk akkoord van Telenet de op en via deze website aangeboden informatie geheel of gedeeltelijk op te slaan (anders dan noodzakelijk om de website te kunnen bekijken), te reproduceren, te wijzigen, openbaar te maken, te distribueren of te verzenden, te verkopen of anderszins over te dragen of enige rechten hierop te verlenen aan derden."

Ik sta volledig achter dit initiatief, maar pas toch maar op :)
wdev - 11/06/2010 11:18:59

Bravo, sir. +2 internets to you!
Mathias Bynens - 11/06/2010 11:19:18 http://mathiasbynens.be/


Straks eens testen op Symbian...
Standaard werkt de tv.be-site niet voor mij...
Arcum - 11/06/2010 11:29:55 http://www.withouthego.com


properkes , nice work !
Native App is idd misschien zelfs niet nodig.
PDens - 11/06/2010 11:30:06 http://www.twitter.com/peterdens


Ik vind dit uitermate cool !

die android-app komt er misschien nog wel, maar een web-apps is imho nog beter.

En : data moet open zijn !
Free (as in freedom) software FTW!

Tom Hermans - 11/06/2010 11:30:26 http://www.tomhermans.com


Telenet zou mogen tevreden zijn dat er iemand zo'n mobile webapp maakt. Je bestraffen op gelijk welke manier dan ook, zou een verkeerd signaal zijn en creativiteit alleen maar inperken.

Nice job!

Vic - 11/06/2010 11:38:56 http://www.vicrau.be


misschien is Telenet zelf bezig met de ontwikkeling van mobiele applicaties en willen ze eerst hun eigen applicaties promoten.. Wel jammer, had graag API eens uitgespit!
N.M - 12/06/2010 17:57:40

+1 voor maker
- oneindig voor kut telenet die echt nog in de jaren 90 lijken te leven met hun schijte digicorders en hun toekomstvisie
Bridge_Burner - 12/06/2010 18:14:10

Wat is de stand van zaken?
Amedee Van Gasse - 30/07/2010 11:41:38 http://amedee.be


@Amedee:
Wel, Telenet ging normaal gezien al lang met hun eigen mobile client zijn uitgekomen, maar het blijft er verdacht stil rond, nietwaar?
Hun grootste probleem was dat ik telenet-login gegevens vroeg waar potentieel wel wat mee mis kan gaan (en daar heb ik zeker begrip voor) dus als ik een manier vind om hetzelfde te doen zonder zelf die login gegevens te vragen (dus eerst inloggen bij telenet, dan een 3-de partij app openen) is er voor hen geen probleem.
(En dat ik hier voor mijzelf nog gebruik, daar hebben ze ook niets op tegen, van een beetje scraping liggen ze niet wakker. tging hen louter om de paswoorden)
Steffest - 30/07/2010 12:03:16 http://blog.stef.be



Commentaar toevoegen
Je reactie
Je naam
Url
Antispam
Om zeker te zijn dat je geen Spam-robot bent, moet je even de volgende vraag beantwoorden:
De eerste letter van het woord 'blub' is ...

Geef je commentaar op:
Open Source Telenet Digicorder API

A few months ago, Telenet finally made the jump and opened up their digicorder devices to be controlled through their TV web portal TV.be.

Nice!!!
Finally you could schedule your TV recordings from anywhere using a web browser instead of a infrared remote and the dorky digicorder interface.

Controlling media devices through web interfaces happens to be one of my sweet spots so the first thing I did was firing up Firebug to see what kind of communication was going on between their various web applications.
They've done a really good job, as they created an internal API to talk to the digicorder.
Figuring out how the API works has the same attraction as seeing a crossword puzzle in a newspaper: it tickles your mind but at the same time it's not too hard and with some time and logic the puzzle is quickly solved.

So, let's get to work to create a more open API to control your TV recordings from any software package you want instead of only through the tv.be website.

First step: login
Telenet uses a single-sign-on system, providing a token that authorises you as "logged in" and that you can take with you to other sites.

It sends you on a redirect path towards multiple domains - telling each domain you have logged in.
The script just recreates that path and makes sure to collect and pass all cookies to the next step. (That's really easy in .net - just use the same cookiecontainer for each request)
After that you can use the Telenet remotePVR API from the script as an authenticated user.
One problem though: to schedule a new recording you need the eventID of the program you want to record.
That's where tv.be and some good old screenscraping comes in: a Channel listing for each day is requested on the tv.be website and the EventID codes get extracted and saved to a local cache (so we don't have to hammer the tv.be site more then we need to)
Technically that might be against Telenet's Terms of Use policy, but hey - we're all in favour of free and open data, aren't we?
That's it.
I created a more simple API as .net wrapper class with the following syntax

Dim tvbe as new tvbe
tvbe.login()
tvbe.logout()
tvbe.recordings()
tvbe.reminders()
tvbe.zenders()

In a webapp that translates to URLs as

/login
/logout
/boxes 'gets info on your digiboxes and digicorders
/recordings
'gets a list of your scheduled and completed recordings
/recordings/schedule/ID
' schedules a new recording, ID is an eventID provided by tv.be
/recordings/delete/ID
' deletes a recording, ID is an eventID provided by tvbe/recordings
/reminders/ 'gets a list of your scheduled reminders
/reminders/schedule/ID ' sets a new reminder, ID is an eventID provided by tv.be
/reminders/delete/ID
' deletes a reminder, ID is an eventID provided by tvbe/reminders
/zenders ' (short)list of available channels
/zenders/channelname ' program guide of the channel with name "channelname"
/zenders/channelname?date=dd-mm-yyyy ' program guide of the channel with name "channelname" of a given day 


The sourcecode can be found here.

Update:

After a (very friendly) request from Telenet I'm taking the sourcecode and the demo application offline.
However I do hope I can contribute following their open invitation to help unlock their digital services towards a more open communication (API?) in general and mobile devices in particular.
To be continued ...


As a demo I created a little frontend for the API for use on mobile devices.

http://tv.stef.be it is.

You can use the TV guide without login in, but if you want to manage your recorders you have to create an account at tv.be (and be a Telenet Digital TV customer of course) 
It's a bit of a trust-issue to enter your telenet credentials in a "rogue" app like this, but i can assure you it's safe: your credentials are not stored anywhere and are only used to pass through the Telenet login sequence.
If you're still hesitating to enter your login, you can grab the source and try it on your own machine.

Here are some screenshots.
image image image foto

 


The API still has some holes, mostly because not all tv.be content is easily available.
Most important i would love a simple system to convert EventID's to program names and vica versa, maybe if i ask the tv.be people nicely? :-)
Also it's not really suited if you have more then one digicorder.
A search function would be nice ... maybe I'll implement that.

Of course it works fine as long as Telenet doesn't change their internal API, which is always a risk, but well,  then the cat and mouse game can continue.
I was planning to build an Android app for it but actually http://tv.stef.be works very well on mobile devices and since you still would need a data connection to talk to your digicorder, why would you create a native app when a webapp will do?

Happy recording!