Ko­di-pro­jec­ten met RSS-feeds

Me­dia­cen­ter Ko­di uit­brei­den met RSS­feeds en ei­gen plug-ins

C’t Magazine - - Inhoud 11/2018 - Achim Bar­c­zok

Ont­bre­ken­de bron­nen voor vi­deo's, au­dio-pod­casts en mu­ziek zijn bij het mul­ti­me­dia­cen­ter Ko­di mak­ke­lijk toe te voe­gen – het liefst als mooie zelf­ge­maak­te plug-in.

De com­bi­na­tie van Rasp­ber­ry Pi en het mul­ti­me­dia­cen­ter Ko­di maakt van el­ke tv een smart-tv die je ei­gen me­dia­ver­za­me­ling en al­ler­lei vi­deo en au­dio van in­ter­net in de woon­ka­mer af­speelt. Over hoe je de Rasp­ber­ry Pi met be­hulp van Ko­di of Li­breELEC als me­dia­cen­tra­le ge­bruikt, is op in­ter­net ge­noeg te vin­den.

In dit ar­ti­kel la­ten we zien hoe je Ko­di met ei­gen plug-ins uit­breidt met on­li­ne con­tent die bij Ko­di (nog) niet be­schik­baar is. Op die ma­nier kun je bij­na el­ke on­li­ne bron toe­voe­gen en af­han­ke­lijk van je ei­gen in­te­res­se fil­te­ren en sor­te­ren – waar­voor wel eni­ge Py­thon-voor­ken­nis no­dig is.

RSS-feeds van pod­casts zijn in Ko­di ook recht­streeks als mu­ziek- of vi­deo­bron toe te voe­gen, maar een ei­gen plug-in kan dui­de­lijk meer. Je kunt die bo­ven­dien in de of­fi­ci­ë­le Ko­di-re­po­si­to­ry zet­ten en daar­door ook an­de­ren er­van la­ten pro­fi­te­ren.

YouTu­be of RSS

Plug-ins on­der Ko­di zijn zip-pak­ket­ten met een voor­ge­de­fi­ni­eer­de da­ta­struc­tuur. Daar­in moe­ten dan min­stens een plug-in­pic­to­gram zit­ten, een ach­ter­grond­af­beel­ding, een li­cen­tie­over­een­komst, het be­stand ad­don.xml met de met­a­da­ta en de ei­gen­lij­ke Py­thon-co­de. Die co­de wordt nor­maal ge­spro­ken on­der de naam ad­don. py op­ge­sla­gen.

Va­ri­ant 1: het gaat heel een­vou­dig als de ge­wens­te vi­deo's op YouTu­be staan. Veel vlog­gers pre­sen­te­ren hun vi­deo's daar bij­voor­beeld in een ei­gen ka­naal. Ko­di heeft al een YouTu­be-plug-in, waar je in je Py­thon-co­de mee kunt be­gin­nen. Een plug-in voor de vi­deo's van Nu.nl be­staat bij­voor­beeld uit slechts drie re­gels co­de:

im­port xbmc if __­na­me__ == ‘__­main__’: xbmc.exe­cu­te­buil­tin ("Ac­ti­va­teWin­dow(10025, plu­gin://plu­gin.vi­deo.youtu­be /user/Nunl/)")

Die co­de start in het Ko­di-vi­deo­ven­ster (ven­ster-ID: 10025) de YouTu­be-weer­ga­ve van het Nu.nl-ka­naal, in­clu­sief een over­zicht van al­le af­speel­lijs­ten. Bij ad­don.xml moet in het deel re­qui­res de YouTu­be­plug-in ge­ïn­te­greerd wor­den: <im­port ad­don="plu­gin.vi­deo.youtu­be" ver­si­on="6.0.2"/>.

Als je daar een mooie thumb­nail en ach­ter­grond­af­beel­ding voor de Ko­di-in­ter­fa­ce aan toe­voegt, merkt nie­mand aan de­ze nieu­we plug-in dat hij in wer­ke­lijk­heid wel heel erg leen­tje­buur heeft ge­speeld bij een an­de­re plug-in.

Va­ri­ant 2: als vi­deo's of au­dio­be­stan­den als RSS-feed be­schik­baar zijn, kun­nen die feeds met de Py­thon-bi­bli­o­theek feed­par­ser af­ge­struind wor­den en is daar met de plug-in een over­zichts­lijst van sa­men te stel­len. Feed­par­ser zit al in Ko­di, maar moet nog wel aan ad­don.xml toe­ge­voegd wor­den met <im­port ad­don="script.mo­du­le. feed­par­ser" ver­si­on="5.1.3"/>.

De plug-in leest uit de au­dio-RSS-feed de ti­tels en de be­stands-url's van de af­zon­der­lij­ke tracks of uit­zen­din­gen ('item') in een loop uit. Feed­par­ser vindt de ge­wens­te in­for­ma­tie op de vol­gen­de ma­nier:

im­port feed­par­ser d = feed­par­ser.par­se ('http://www.bbc.co.uk/ra­dio1

/rss/rs­s_­ra­dio1.xml') for item in d['en­tries']: tit­le = item['tit­le'] url = item.en­clo­su­res[0].href Daar waar bij de eerste va­ri­ant de YouTu­be­plug-in het op­bou­wen van de GUI op zich neemt, moet je hier zelf aan de slag. Daar heb je meer­de­re al in Ko­di zit­ten­de Py­thon­bi­bli­o­the­ken voor no­dig (sys, xbm­c­plu­gin, xbm­c­gui). Eerst stel je de pro­ces-ID van de plug-in vast en dan plaats je de plug-in in het au­dio­deel van Ko­di:

ad­don_hand­le = int(sys.argv[1]) xbm­c­plu­gin.set­Con­tent(ad­don_hand­le,

'au­dio') Bin­nen de loop voegt de co­de el­ke af­zon­der­lij­ke pod­cast-link toe aan de hoofd­di­rec­to­ry van de plug-in: xbm­c­plu­gin. ad­dDi­rec­to­ryI­tem(hand­le=ad­don_hand­le, url=url, lis­ti­tem=xbm­c­gui.Lis­tI­tem(tit­le)). Na de loop moet de lijst dan nog ge­slo­ten wor­den met xbm­c­plu­gin.endOfDi­rec­to­ry(ad­don_hand­le, suc­cee­ded=True).

Dat is al vol­doen­de om al­le in een feed staan­de af­le­ve­rin­gen in Ko­di te la­ten zien en af te spe­len. Dat wordt al­leen maar mooi­er als je pre­vie­waf­beel­din­gen en an­de­re in­for­ma­tie uit de RSS-feed kunt ha­len. Een voor­beeld daar­van staat bij de link hier­on­der.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.