I dag vil jeg fortælle lidt om de ting jeg undersøger og forbereder inden jeg går igang med en ny addon. Det er faktisk oftest på forberedelser jeg bruger mest tid, det egentlig arbejde med at programmere en addon har jeg efterhånden sat på samlebånd 🙂
Det første jeg altid finder ud af er hvordan jeg får XBMC til at afspille en videofil fra den webside jeg vil lave en addon til. Nogle gange er det så simpelt som at bruge Vis kilde og/eller Firebug i Firefox til at finde linket i HTML koden og så ellers blot lave et regulært udtryk til at finde URL’en. Det kan også være man er heldig at finde en playliste med URL’en, mens andre gange har det være nødvendigt at decompile en flash afspiller for at finde frem til informationerne. Hvis der har været tale om RTMP URL’er, fremfor HTTP, så har jeg gjort flittigt brug af min foretrukne netværkssniffer Wireshark og RTMPDump/RTMPSuck til at teste med.
Efterhånden som man får gravet sig gennem websiden lykkedes det som regel af finde strukturen bag og kan herefter opbygge nogle regler for hvordan man finder frem til video URL’en. Når afspilningen er på plads er det sådan set bare at lave nogle regulære udtryk der kan trække de tilgængelige informationer ud fra HTML, så som titel, beskrivelse, mv. om de individuelle videoklip. Også her kan man være heldig at finde fx et XML eller JSON feed der indeholder oplysningerne – det er nemlig meget simplere at læse informationer herfra end fra HTML.
Der er også en hel anden tilgang til måden at finde informationerne på fremfor at trække dem ud af HTML’en, nemlig at få adgang til et API. Et API definerer klart hvordan man får informationer om titel, beskrivelse, mv. og vigtigst af alt en simpel måde hvorpå videoen kan afspilles. Desværre er det sjældent der er et API til rådighed, men fx DR NU har et ganske fint API jeg bruger til DR NU Playeren.
Når alle de nødvendige informationer er kortlagt er der kun tilbage at programmere addon’en. Her har jeg lært på den hårde måde at ordsproget less is more holder hele vejen. Det er efter min mening bedre at have lidt duplikeret kode mellem dine addons fremfor at lave et bibliotek med hjælpekode. Selvom det måske er modsat hvad man ellers siger om god kodestil, så er det mere praktisk at have alt samlet i den enkelte addon. Det skal også sige at mange addons er under 100 linjers python kode, så der er heller ikke meget at genbruge alligevel.
Sidder du nu og tænker det der det gad jeg sku’ godt at prøve, så synes jeg bare du skal kaste dig ud i det! Husk dog på; en ting er helt sikkert: men skal have kendskab til en hel række web teknologier og have mod på at grave sig igennem måske flere megabytes af HTML, JavaScript, XML og måske flash. Det lyder måske umiddelbart langhåret, men for mig er det en udfordring – en udfordring som er umådeligt tilfredsstillende at vinde over 🙂
Det er sindsygt du kan 🙂
Jeg læser med glæde din blog, hver dag. Derudover bruger jeg dagligt mange af dine add-ons. Tusind tak fordi du gider lave dette store stykke arbejde gratis.