Mediatheken-Plugin für Kodi



  • Hallo,

    da mit der Zeit die von mir bisher verwendeten Mediatheken-Plugins in Kodi ihren Dienst quittiert hatten, habe ich mir dazu entschlossen selber ein kleines Plugin zu schreiben. Als Ziel hatte ich mir gesetzt, dass es auch auf einem Raspberry Pi 1 mit OpenELEC/Libreelec schnell genug läuft und gut per Fernbedienung gesteuert
    werden kann. Es nutzt nicht die neue Webapi, sondern läd den Datensatz von MediathekView herunter und reduziert die Daten auf ein Minimalmaß.

    Projektseite bei Github: https://github.com/YggdrasiI/plugin.video.simple_mediathek_de

    Da im Hintergrund ein kleines CLI-Programm läuft, dass die Hauptaufgaben erledigt, muss man Teile des Addons ggf. kompilieren. Binaries für x86_64 (Linux) und armv6l (Raspberry PI) sind im Anhang dieses Beitrags enthalten.
    0_1491855445402_plugin.video.simple_mediathek_de.zip (Letzte Aktualisierung: 10. April 2017, 22:20)

    Das Addon enthält wahrscheinlich noch ein paar Fehler und ist in keinen Addon-Repository enthalten. Daher kann man es bisher nur per Hand installieren.
    Fehlermeldungen und Feedback gerne hier oder auf Github. (Bei der Nachfrage nach Features bitte beachten, dass ich nicht plane, es zu einem „vollumfänglichen Client“ auszubauen.)

    Installationsanleitung (für das Zip aus dem Anhang):
    Es sollte ausreichen das Zip in das Addon-Verzeichnis von Kodi, […]/.kodi/addons/ zu entpacken.

    Installationsanleitung für das Git-Repo:

    1. Git klonen
    2. ‘make native’ baut (im Idealfall ;)) CLI-Programm
    3. ‘make addon’ erstellt Addon-Zip für Kodi

    Screenshots:
    0_1487283209637_addon1.jpg 0_1487283218899_addon2.jpg

    P.S. Das Erstellen des ersten ersten Filmliste auf dem RPi1 dauert systembedingt leider ~2 Minuten. Das liegt an der hohen CPU-Last, die vom Standard-Skin von Kodi erzeugt wird (ca. 40%). Führt man das Update über SSH aus, reduziert sich die Zeit auf die Hälfte. Auf schnelleren Systemen bewegt sich die Updatezeit, wenn die Internetleitung nicht blockiert, unter 5 Sekunden.

    @MediathekView-Admins:
    • Das Download-Skipt im Addon verteilt die Anfragen gemäß der Werte in der XML-Downloadliste.
    • Diff-Updates werden unterstützt, wobei ich die exakten Regeln für deren Erstellung leider nicht mehr wiedergefunden habe.


  • Administrator

    Sehr cooles Projekt.



  • Es nutzt nicht die neue Webapi, sondern läd den Datensatz von MediathekView herunter und reduziert die Daten auf ein Minimalmaß.

    Es gibt eine API? Genaugenommen gibt es eine, aber die ist (noch) nicht öffentlich.
    Gerade für schwache Systeme wie dem Pi wäre es doch Ideal. Super schnell und zeitgleich Zugriff auf die volle Filmliste.

    Diff-Updates werden unterstützt, wobei ich die exakten Regeln für deren Erstellung leider nicht mehr wiedergefunden habe.

    Du meinst damit Filmliste-diff.xz? Ansonsten könnte ich dir sagen, wie ich das mit MVW gelöst habe.



  • @bagbag sagte in Mediatheken-Plugin für Kodi:

    Es nutzt nicht die neue Webapi, sondern läd den Datensatz von MediathekView herunter und reduziert die Daten auf ein Minimalmaß.

    Es gibt eine API? Genaugenommen gibt es eine, aber die ist (noch) nicht öffentlich.
    Gerade für schwache Systeme wie dem Pi wäre es doch Ideal. Super schnell und zeitgleich Zugriff auf die volle Filmliste.

    Aha, die API deines Projektes ist noch nicht öffentlich (dokumentiert). Ja, wenn ihr so eine API später für alle zur Verfügnug stellt, und eure Server die Anfragen auch verarbeiten können, würde das für schwache Systeme + Kodi-Plugin die schnellste Lösung darstelllen.
    (Jedenfalls theoretisch, denn auf meinem RPi gibt es genug Plugins die trotzdem recht gemächlich arbeiten, um es positiv auszudrücken, ;))
    Ich wollte eigentlich nur ausdrücken, dass ich keine Anfragen an den/die MediathekViewWeb-Server sende, um die Suchanfragen zu verarbeiten. Diese Möglichkeit hatte ich bei der Erstellung des Plugins auch nicht in Erwägung gezogen, da ich die Seite da noch nicht kannte.

    Diff-Updates werden unterstützt, wobei ich die exakten Regeln für deren Erstellung leider nicht mehr wiedergefunden habe.

    Du meinst damit Filmliste-diff.xz? Ansonsten könnte ich dir sagen, wie ich das mit MVW gelöst habe.

    Ja, die meinte ich. Nach meinem Wissensstand spielt

    • Filmliste-akt.xz den Datenbestand gegen ca. 2 Uhr nachts wieder und Filmliste-diff.xz ein stündlich (zweistündlich?) aktualisierter Datensatz, der die Differenz zu Filmliste-akt.xz darstellt.
    • Im Diff sind nicht nur neue Einträge sondern auch aktualisierte alte enthalten (ich behandle derzeit alle als neue). Ob ein Eintrag neu ist, wird mit der „neu-Spalte“ angegeben(?).

    Unklar ist mir,

    • was die zweite Spalte (2. Zeitstempel) und dritte Spalte (“3”) bedeuten.
    • ob Filmliste-akt.xz bei Erstellung des Diffs auch neu erstellt wird und man bei einem
      vollen Update nur diese benötigt.
    • Wie erkennt man, ohne Id, welcher Eintrag der vollen Liste überschrieben wurde? Ist eine Spaltenkombination Unique-Key?


  • Genau, sie ist implementiert, aber (noch) nicht dokumentiert. Falls du damit mal rumspielen möchtest, hier eine sehr simple JavaScript “Implementierung”: https://gist.github.com/bagbag/a2888478d27de0e989cf777f81fb33de (kannst du einfach als HTML speichern und im Browser öffnen). Die API wird sich aber vermutlich noch ein wenig ändern.

    Für MVW nutze ich nur Filmliste-akt und erzeuge mir damit meine eigenen deltas (da meine Anforderung war, dass das auch funktionieren muss, wenn der Server über Tage keine neue mehr bekommen würde).

    Ich extrahiere die für MVW relevanten Infos und lege für jeden Eintrag die Daten in einem Set(!! um doppelte zu vermeiden) an. Dieses Set wird nach dem indexieren jedoch nicht verworfen sondern behalten und beim nächsten Update dann mit dem erstellten Set der neuen Filmliste die Differenz in beiden Richtungen (neu -> alt, alt -> neu) erzeugt.

    Meines Wissens nach ist der erste Zeitstempel die Lokalzeit (also in dem Falle GMT+1) und der zweite UTC.

    Wofür die 3 Steht kann ich dir auch nicht verraten.

    Die Filmliste-akt hat zu jeder Zeit den aktuellsten Stand. Die diffs werden nicht benötigt.

    Ich habe das Anfangs über die URL versucht, diese ist jedoch nicht Unique. Als ID nutze ich einen Hash der für MVW relevanten Informationen. Im Falle, dass ein Eintrag doppelt vorhanden wäre (was er durch die Nutzung von Sets aber gar nicht könnte), hätte es also automatisch die selbe ID, wodurch ich mir darüber keine Gedanken machen muss.



  • Ok, ich werde mir die Api später mal ausprobieren.



  • Die gestrige kleine Änderung des Filmlisten-Formats hat nicht nur MediathekViewWeb aus dem Tritt gebracht sondern auch mein kleines Plugin. Ich habe es nun angepasst und das Zip im Startbeitrag aktualisiert.



  • Hast du die API mal probiert?



  • @bagbag sagte in Mediatheken-Plugin für Kodi:

    Hast du die API mal probiert?

    Nein, bisher noch nicht. Dazu bin ich derzeit mit der aktuellen Lösung noch zu zufrieden.

    (Upload für Issue auf Github)
    0_1491600164972_plugin.video.simple_mediathek_de.zip



  • Hi - ich habe das mal ausprobiert.
    Ich habe ein altes Atom NUC mit OpenElec.
    Das build hat nicht funktioniert, aber nachdem ich es selber gebaut haben ging es Problemlos.
    Die importzeit ist auf dem Atom NUC ca. 7 sekunden.


Anmelden zum Antworten
 

Es scheint als hättest du die Verbindung zu MediathekView-Forum verloren, bitte warte während wir versuchen sie wieder aufzubauen.