2010-05-01

Om att skriva en app till Boxee

Det stör mig lite att det inte finns någon SVTPlay-app till Boxee, så jag tänkte att jag skulle skriva en. Det finns en till Plex, så jag tänkte att det inte borde vara så svårt att porta den. Det visade sig vara lite svårare än vad jag hade tänkt.

Boxee har ett eget API för att skriva appar: man specificerar sitt UI i XML och drar in lite Python-kod här och där för att göra saker, t.ex. skrapa info från SVTPlays HTML. XML-en i sig är ganska knölig att jobba med. En enkel kontroll kan se ut så här:

<control type="image">
<posx>0</posx>
<posy>0</posy>
<width>1280</width>
<height>720</height>
<texture>background.png</texture>
</control>

Det blir ganska mycket XML. Det kan man klara, även om XML:en blir ganska rörig. Ännu rörigare blir det när man börjar embedda Python-kod i den.

SVTPlay-appen till Plex är skriven helt i Python. Jag måste alltså plocka ut delar ut Plex-appen och använda i min. Där dyker nästa problem upp. I Plex finns det Python-API:er för att manipulera XML, t.ex. så finns xpath implementerat. Boxee har inget sådant, och dessutom så kör Boxee Python 2.4, som inte har stöd för xpath. Så jag får skriva om all kod från Plex-appen och gjorde en egen ful-implementation av xpath. Jag läser in HTML:en från SVTPlay som ett DOM-träd och söker själv igenom det.

Det här kanske hade varit enkelt om jag hade kunnat Python, men det gör jag ju inte. Så efter ett par timmars kodande så har jag slutligen klarat av nummer ett på min TODO-lista, att kunna visa upp en lista med program-kategorierna (Barn, Nyheter, Live etc.). Förhoppningsvis går det lite lättare nu när jag har lärt mig hantera DOM-trädet, unicode etc.

Med lite mer vana så borde det vara ganska smidigt att skriva sådana här appar, fast det kommer nog vara uppförsbacke ett tag till.

1 kommentar:

allanman123 sa...

I iPhone-generationen är alla app-utvecklare.