AA_boegen_123rf-15145412_maxkrasnov.jpg

© maxkrasnov, 123RF

Eigene Plugins für XBMC schreiben

Organisch erweitern

Nicht immer findet sich in XBMC ein passendes Addon für die eigenen Wünsche. Kein Problem: Ein maßgeschneidertes Plugin haben Sie schnell erstellt.

Das Mediencenter XBMC hat sich zu einem machtvollen Instrument mit einer Vielzahl an Komponenten entwickelt. Je nachdem, welche Funktionalität von XBMC Sie erweitern möchten, bietet sich jeweils ein andere Sorte von Addon dazu an. Zunächst lassen sich grob die vier Hauptkategorien Plugin, Skript, Skin und Repository unterscheiden (siehe Kasten "XBMC: Addon-Typen").

Neben Skins erfreuen sich vor allem Plugins unter XBMC-Anwendern besonderer Beliebtheit. Die meisten dieser Erweiterungen bedienen Sie wie ein virtuelles Dateisystem: Sie navigieren durch Verzeichnisse und wählen Medien zum Abspielen aus. Oft liegen diese tatsächlich aber weder lokal noch als Datei innerhalb einer Hierarchie vor: Stattdessen handelt es sich vielleicht um Livestreams von Fernsehsendern, um Fotos, welche das Plugin über die API eines Bilderdienstes abruft, oder um Videos, deren Links aus einer HTML-Seite herausgefiltert ("gescraped") wurden.

Unabhängig davon, wie das Plugin an die Mediendaten gelangt: Der Nutzer bekommt von solchen Abläufen im Hintergrund nichts mit. Er bedient das Mediencenter weiter über die gewohnte Verzeichnis/Datei-Struktur. Auf diese Weise lassen sich selbst die ungewöhnlichsten Erweiterungen ohne Einlernzeit sofort nutzen.

XBMC: Addon-Typen

Plugins erweitern das Mediencenter um Funktionen, die der Benutzer direkt über ein entsprechendes Untermenü aufrufen kann. Ein Beispiel hierfür wäre etwa die Erweiterung plugin.video.youtube. Haben Sie diese installiert, erscheint sie unterhalb des Hauptmenüs im Punkt Videos. Andere Medientypen verfügen ebenfalls über entsprechende Erweiterungsmöglichkeiten, hier heißen die Subkategorien entsprechend plugin.audio.*, plugin.picture.* und plugin.weather.*.

Skripte spezialisieren sich hingegen nicht auf das Bereitstellen und Wiedergeben bestimmter Medien. Oft bieten sie dem Benutzer über den Hauptmenüpunkt Programme Funktionen an, die nicht in das Hauptanwendungsgebiet eines Mediencenters fallen, aber einen netten Zusatz darstellen – etwa ein Foren-Browser für den Fernseher oder das Starten eines externen Programms. Gelegentlich bleiben sie aber für den Benutzer unsichtbar: Die Unterkategorie script.module.* besitzt dann nur für Autoren anderer Addons Relevanz und sie stellt etwa Bibliotheken mit Funktionen bereit. Spezielleren Anwendungszwecken dient script.service.*: Solche Skripten führt XBMC beim Start aus, wo sie entweder einmalige Aktionen (wie etwa das Aktualisieren der Datenbank) vornehmen oder auf Wunsch auch regelmäßig getriggert werden.

Skins passen das Aussehen der Oberfläche an. Dabei kann der Nutzer das Äußere und die Bedienung von XBMC komplett auf den Kopf stellen. Statt den Vorgaben des Standard-Skins "Confluence" zu folgen, passen Sie Schriftart, Texte und Bilder so an, dass diese Ihrem Geschmack entsprechen. Selbst ein komplettes Verändern des Haupt- und der Untermenüs ist möglich. Soll XBMC etwa die Bedienerführung eines Apple-TV imitieren, weil etwa die Familienmitglieder noch an dessen Nutzerführung gewohnt sind, realisieren Sie das mit einem eigenen Skin.

Etwas ungewöhnlich wirkt auf den ersten Blick, dass auch Paketquellen (englisch: "repositories") zu den Addons zählen. Dies liegt daran, dass XBMC in der Standardeinstellung erstmal nur auf die eine offizielle Paketquelle der Community zurückgreift. Die weist zwar einen beträchtlichen Umfang auf, nimmt jedoch nicht jedes Addon auf. Es fehlen etwa solche, die der Ersteller nicht unter einer Open-Source-Lizenz gestellt hat oder in deren Metadaten ein englischer Beschreibungstext fehlt. Aufgrund seiner offenen Philosophie erlaubt XBMC auch fremde Paketquellen, aus denen sich Fremdpakete genauso leicht nachinstallieren lassen wie aus dem Standard-Repository.

Planung

Für unser Beispiel nehmen wir an, Sie hätten von der Deutschen Telekom einen "Entertain"-Telefonanschluss, über den die gängigsten deutschen Sender per IPTV-Multicast übertragen werden. Zwar versieht der Telefonanbieter die privaten Fernsehstationen dabei mit einer proprietären Verschlüsselung, alle öffentlich-rechtliche Sender lassen sich barrierefrei als Stream abrufen. Was liegt da näher, als dafür auf dem XBMC-Mediencenter einen eigenen Menüpunkt einzurichten?

Die hierfür nötigen Streaming-URLs finden sich bei ARD  [1] und ZDF [2]. Ein Blick in die offizielle XBMC-Paketquelle verrät jedoch, dass für die Entertain-Streams bisher kein Plugin existiert. Kein Problem: Dann schreiben wir eben unser eigenes. Gerade bei Entertain fällt das aufgrund der geringen Komplexität der Anbindung recht leicht – und ermöglicht eine übersichtliche Einführung in die Grundstruktur und den Aufbau eines Plugins. Dies ist auch der Grund für die Wahl dieses Beispiels.

Das Endprodukt soll wie folgt aussehen: Zuerst erscheint ein Hauptmenü, in dem Sie entscheiden, ob Sie ein lokales Fernsehprogramm (also eines der Dritten) oder eines mit bundesweitem Schwerpunkt anschauen möchten. Entscheiden Sie sich für Letzteres, stehen ARD, ZDF, Phoenix und der Kinderkanal zur Wahl. Bei den lokalen Sendern soll XBMC die verschiedenen Regionalfenstern des WDR anbieten (Abbildung 1). In dieser Auflistung fehlen einige öffentlich-rechtliche Fernsehstationen, wie etwa Eins Plus, Arte und zahlreiche Dritte Programme: Die Vielzahl weiterer Streaming-URLs würde hier die Listings nur aufblasen, ohne zusätzlich zum Lernziel dieses Artikels beizutragen.

Abbildung 1: Das Hauptmenü unseres Plugins offeriert die Wahl zwischen den bundesweit empfangbaren öffentlich-rechtlichen Sendern und deren lokalen Ablegern. Je nach Auswahl des Menüpunkts verzweigt die Auswahl dann zu den Haupt- beziehungsweise Regionalsendern.

Plugins für XBMC schreibt man üblicherweise in Python. Dabei gilt es zu beachten, dass XBMC einen internen Python-Interpreter der Version 2.4 verwendet. Sie können also keinen Python-Code mit der Syntax der neueren Python-3.x-Versionen verwenden.

Grundlagen

Im ersten Schritt müssen Sie die benötigte Mindeststruktur an Verzeichnissen und Dateien erstellen. Wechseln sie dazu in das Unterverzeichnis ~/User/.xbmc/addons. Dort erstellen Sie den Ordner plugin.video.Plugin-Name, in diesem Fall also plugin.video.entertain. Innerhalb dieses Verzeichnisses benötigt XBMC wiederum die in Abbildung 2 gezeigte minimale Datei- und Verzeichnisstruktur.

Abbildung 2: Für das Erstellen eines XBMC-Plugins benötigen Sie als Grundlage die hier gezeigte Verzeichnisstruktur innerhalb des Home-Verzeichnisses.

TIPP

Unter OpenELEC lautet der XBMC-Nutzername schlicht openelec, bei RaspBMC ist es der Nutzer Pi. Soll das Plugin später auf einem Raspberry Pi laufen, kann es sinnvoll sein, dieses erst einmal auf schnellerer Hardware zu entwickeln und erst das Endprodukt auf dem Kleinrechner zu nutzen.

In addon.xml definieren Sie ein paar grundlegende Meta-Informationen wie zum Beispiel Name und Beschreibung des Plugins. Zusammen mit dem 256x256 Pixel messenden Vorschaubild icon.png zeigt XBMC diese Informationen später im Plugin-Auswahlmenü (Abbildung 3). Eigentlich liegt es in unserem Beispiel nahe, als Icon das Telekom-Logo einzusetzen, was jedoch rechtlich problematisch sein könnte. Also behelfen wir uns mit einer lizenzfreien Grafik eines Fernsehers und fügen dieser mit Gimp noch den Schriftzug Entertain-Streams hinzu. Das eigentlich Python-Skript wird XBMC später in entertain.py vorfinden.

Abbildung 3: Diese Meta-Informationen zu unserem Plugin stammen aus der Datei addon.xml.

Auf dieser Verzeichnisebene können noch zwei weitere Dateien lagern, die aber technisch nicht zwingend notwendig sind. Die changelog.txt, die der Nutzer bei der Installation zu sehen bekommt, enthält eine Liste der Veränderungen gegenüber der letzten Version. In der fanart.jpg lagert ein Bild, welches das Plugin automatisch im Hintergrund seiner Menüs anzeigt.

Das Unterverzeichnis /resources/lib/ enthält eventuell benötigte Zusatzmodule, die XBMC nicht automatisiert über die Standard-Paketquelle beziehen kann – eine solche eine Konstellation kommt jedoch eher selten vor. Die Datei strings.xml ermöglicht mehrsprachige Plugins: Hier weist der Programmierer für jede unterstützte Sprache Strings einer Nummer zu, wobei das Python-Skript später nur die Nummer als Platzhalter für Textausgaben verwendet.

Im brandneuen XBMC 12 "Frodo" haben die Entwickler die strings.xml durch eine Datei namens strings.po ersetzt. In unserem Beispiel spielt Mehrsprachigkeit aber ohnehin keine Rolle, so dass wir in die strings.xml nur den Namen des Plugins hineinschreiben (Listing 1).

Listing 1

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
  <!--<string id="30000">Entertain-Streams</string>-->
</strings>

Die Metadaten in der Datei addon.xml (Listing 2) fallen zum Großteil selbsterklärend aus. Den Wert bei provider-name in Zeile 2 zeigt XBMC später in der Plugin-Übersicht als Autorenname an. Selbst in den Erweiterungen der offiziellen Paketquelle steht dort manchmal nur ein Pseudonym anstatt eines Realnamens. Die Angaben summary und description können Sie optional auch für verschiedene Sprachen mehrfach anlegen. Zeile 5 signalisiert, dass wir die Funktionen der praktischen Bibliothek parsedom verwenden möchten – dazu später mehr.

Listing 2

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.entertain" name="Entertain" version="1.0" provider-name="Ich">
  <requires>
    <import addon="xbmc.python" version="2.0"/>
    <import addon="script.module.parsedom" version="0.9.1"/>
  </requires>
  <extension point="xbmc.python.pluginsource" library="entertain.py">
    <provides>video</provides>
  </extension>
  <extension point="xbmc.addon.metadata">
    <language>de</language>
    <platform>all</platform>
    <summary lang="de">IPTV für Telekom Entertain</summary>
    <description lang="de">Eine subjektive Auswahl öffentlich-rechtlicher Livestreams. Dieses Plugin funktioniert nur an Telekom-Entertain-Anschlüssen.</description>
  </extension>
</addon>

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...