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.
Praxis<br />
XBMC-Extensions programmieren<br />
3 Diese Meta-Informationen zu unserem<br />
Plugin stammen aus der Datei addon.xml.<br />
Weitere Infos <strong>und</strong><br />
interessante Links<br />
www. linux‐user. de/ qr/ 28019<br />
testet das Skript, welches Untermenü aktiv<br />
ist, <strong>und</strong> ruft dazu passende Funktionen<br />
auf (Zeilen 63 bis 67). Nachdem Letztere<br />
das Menü mit Punkten befüllt haben,<br />
schließt Zeile 69 die Auswahlseite ab.<br />
Hier terminiert das Skript fürs Erste.<br />
Wenn der Nutzer nun innerhalb des von<br />
XBMC dargestellten Menüs wieder ein<br />
unter- oder übergeordnetes virtuelles<br />
Verzeichnis auswählt, startet das Skript<br />
mit den entsprechenden Parametern erneut<br />
<strong>und</strong> generiert wieder eine dazu<br />
passende Auswahl.<br />
Das Unterprogramm hauptmenue() ruft<br />
für die beiden Menüpunkte jeweils add‐<br />
Dir() auf. Dabei übergibt es:<br />
• die Werte für den Namen der jeweiligen<br />
Menüpunkte,<br />
• die interne (frei gewählte) URL für den<br />
fiktiven Unterordner,<br />
• den mode-Wert, der als Hilfswert speichert,<br />
in welchem Menü der Nutzer<br />
sich befindet, <strong>und</strong><br />
• einen leeren Wert für die Thumbnail-<br />
Grafik, was bewirkt, dass der Nutzer<br />
die Standard-Grafik für Ordner zu sehen<br />
bekommt.<br />
Die Funktion addDir() macht dabei<br />
nichts anderes, als die Variablen zu einem<br />
Parameterstring zusammenzusetzen,<br />
damit das Skript diese bis zu seinem<br />
nächsten Aufruf mittransportiert (Zeilen<br />
11 <strong>und</strong> 15 ), sowie über die passenden<br />
XBMC-internen Funktionen die benötigten<br />
Werte zu setzen. Ähnlich läuft<br />
der Funktionsaufruf von addLink() ab.<br />
Da hier aber der Nutzer nach dem Abspielen<br />
eines Videos in die aktuelle Verzeichnishierarchie<br />
zurückkehrt <strong>und</strong> diese<br />
nicht wechselt, brauchen Sie keinen<br />
neuen mode-Wert übermitteln. Außerdem<br />
setzt das Unterprogramm den Wert<br />
isFolder nicht wie addDir() auf True.<br />
Die Funktionen addDir() <strong>und</strong> add‐<br />
Link() stammen ursprünglich aus der<br />
XBMC-Dokumentation, finden sich jedoch<br />
aufgr<strong>und</strong> Ihrer einfachen Anwendbarkeit<br />
in vielen kleineren Plugins wieder.<br />
Wollen Sie Videolinks aus einer Webseite<br />
herausscrapen? Dann extrahieren<br />
Sie die Links entweder mittels diverser<br />
Stringfunktionen (oder ressourcenaufwendiger<br />
mittels eines regulären Ausdrucks<br />
<strong>und</strong> dem Modul re) <strong>und</strong> stellen<br />
diese anschließend über addDir() <strong>und</strong><br />
addLink() dem Nutzer zur Verfügung.<br />
Falls Sie die API eines Webdienstes<br />
nutzen, um URLs zu Mediendateien zu<br />
erhalten, bietet sich oft ein anderes Vorgehen<br />
an. Handelt es sich um Youtube-<br />
Links, so können Sie sich Funktionen anderer<br />
Addons zunutze machen. Für Youtube<br />
existiert bereits ein Plugin. Geben<br />
Sie dann die Abhängigkeit dazu in der<br />
addon.xml mittels des Strings an.<br />
Nun spielt die Plugin-URL<br />
plugin://plugin.video.youtube/?paU<br />
th=/root/video&action=play_video&U<br />
videoid=VideoID<br />
das angegebene Video des fraglichen<br />
Anbieters ab, wenn Sie sie als Ziel von<br />
addDirectory() angeben.<br />
Komplexere Plugins<br />
Je weniger statische Daten Ihr Script<br />
nutzt <strong>und</strong> je komplizierter die verwendeten<br />
Datenstrukturen ausfallen, desto<br />
eher sollten Sie von der oben dargestellten<br />
Struktur abweichen.<br />
Für komplexere Plugins lohnt es sich<br />
oft, XBMCSwift2 û einzubinden. Das erleichtert<br />
zunächst einmal das Debugging.<br />
Die einfachste Form der Fehlersuche<br />
besteht in XBMC-Addons normalerweise<br />
darin, mehrere Variablenwerte<br />
46 www.linux-user.de<br />
04.2013