LinuxUser Backup und Restore (Vorschau)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
XBMC-Extensions programmieren<br />
Praxis<br />
über den Print-Befehl auszugeben. Diese<br />
Werte schreibt der Medienserver in die<br />
Datei ~/.xbmc/temp/xbmc.log. XBMC-<br />
Swift2 geht anders vor: Es führt Plugins<br />
auf der Kommandozeile aus, wobei es<br />
eine Bibliothek zwischenschaltet, die als<br />
Text ausgibt, was die Erweiterung innerhalb<br />
der XBMC-Struktur tun würde.<br />
Daneben enthält XBMCSwift2 weitere<br />
Ansätze, wie etwa die Möglichkeit, interne<br />
Plugin-URLs an bestimmte Unterprogramme<br />
zu „binden“. Allerdings weist<br />
das Framework Nachteile auf: Auf der<br />
Kommandozeile ausgeführt, können die<br />
Bibliotheken das Verhalten von XBMC<br />
nicht in jedem Fall richtig nachstellen.<br />
Ausblick<br />
Wir konnten hier nur auf eine kleine Auswahl<br />
der vorhandenen Möglichkeiten<br />
eingehen, <strong>und</strong> dabei wurden nur Plugins<br />
genauer betrachten, obwohl – wie<br />
anfangs dargestellt – auch noch andere<br />
Addon-Arten existieren. Besonders einfach<br />
definieren Sie auch eigene Skins, indem<br />
Sie das Aussehen des Mediencenters<br />
über XML-Definitionen anpassen û.<br />
Es kann sich daneben auch anbieten,<br />
mehrere selbst erstellte Addons miteinander<br />
zu kombinieren: Durch solche Verkettungen<br />
ergeben sich vielerlei neue<br />
Möglichkeiten für XBMC. (jlu) n<br />
Listing 3<br />
01 #!/usr/bin/env python<br />
02 # ‐*‐ coding: utf‐8 ‐*‐<br />
03 <br />
04 import urllib, urllib2<br />
05 import xbmcplugin, xbmcgui, xbmc<br />
06 import CommonFunctions<br />
07 <br />
08 common = CommonFunctions<br />
09 <br />
10 def addDir(name,url,mode,iconimage):<br />
11 u=sys.argv[0]+"?url="+urllib.quote_plus(<br />
url)+"&mode="+str(mode)+"&name="+<br />
urllib.quote_plus(name)<br />
12 ok=True<br />
13 liz=xbmcgui.ListItem(name,<br />
iconImage="DefaultFolder.png",<br />
thumbnailImage=iconimage)<br />
14 liz.setInfo( type="Video", infoLabels={<br />
"Title": name } )<br />
15 ok=xbmcplugin.addDirectoryItem(<br />
handle=int(sys.argv[1]),url=u,listitem=liz,<br />
isFolder=True)<br />
16 return ok<br />
17 <br />
18 def addLink(name,url,iconimage):<br />
19 ok=True<br />
20 liz=xbmcgui.ListItem(name,<br />
iconImage="DefaultVideo.png",<br />
thumbnailImage=iconimage)<br />
21 liz.setInfo( type="Video", infoLabels={<br />
"Title": name } )<br />
22 ok=xbmcplugin.<br />
addDirectoryItem(handle=int(sys.argv[1]),url=url,<br />
listitem=liz)<br />
23 return ok<br />
24 <br />
25 def hauptmenue():<br />
26 addDir("Hauptprogramme", '/hauptprogramme/',<br />
1, "")<br />
27 addDir("Lokalfernsehen", '/lokalfernsehen/',<br />
2, "")<br />
28 <br />
29 def menueHauptsenderWaehlen():<br />
30 addLink("ARD","rtp://@239.35.10.4:10000", "")<br />
31 addLink("ZDF","rtp://@239.35.10.5:10000", "")<br />
32 addLink("Phoenix","rtp://@239.35.10.22:10000"<br />
, "")<br />
33 addLink("KiKa","rtp://@239.35.10.19:10000",<br />
"")<br />
34 <br />
35 def lokalprogrammWaehlen():<br />
36 addLink("WDR Köln","rtp://@239.35.10.18:<br />
10000","")<br />
37 addLink("WDR Bonn","rtp://@239.35.10.37:<br />
10000","")<br />
38 addLink("WDR Dortm<strong>und</strong>","rtp://@239.35.10.38:<br />
10000","")<br />
39 addLink("WDR Duisburg","rtp://@239.35.10.39:<br />
10000","")<br />
40 <br />
41 params = common.getParameters(sys.argv[2])<br />
42 <br />
43 try:<br />
44 mode = int(params['mode'])<br />
45 except:<br />
46 mode = None<br />
47 <br />
48 try:<br />
49 name = params['name']<br />
50 except:<br />
51 name = None<br />
52 <br />
53 try:<br />
54 url = params['url']<br />
55 except:<br />
56 url = None<br />
57 <br />
58 if mode == None:<br />
59 hauptmenue()<br />
60 elif mode == 1:<br />
61 menueHauptsenderWaehlen()<br />
62 elif mode == 2:<br />
63 lokalprogrammWaehlen()<br />
64 <br />
65 xbmcplugin.endOfDirectory(int(sys.argv[1]))<br />
04.2013 www.linux-user.de<br />
47