Mediatheken-Plugin für Kodi
-
@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.
-
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 -
Hallo, ich habe heute eine neue Version veröffentlicht und im Startbeitrag verlinkt.
Da ich mich bisher nicht mit dem Thema der Kodi-Repositories auseinandergesetzt habe bleibt wie bisher aber nur die manuelle InstallationAddon:
• Suche direkt über MediathekViewWeb.de. (Siehe AddOn-Einstellungen)
Dadurch fällt die Erstellung eines lokalen Indexes weg und das Binary
wird nicht benötigt. Ein kleiner Nachteil ist (derzeit) die geringere Auswahl
an Filterkriterien.
• Änderungen bei der Suche mit lokalem Index:- ‘Thema’ - Angabe wird nun bei allen Einträgen berücksichtigt.
- Sortierung der Resultate nach Datum(TODO)
• Such-Eintrag für Livestreams direkt im Hauptmenü eingefügt.
• Die Ansicht kann jetzt in den Optionen vorgegeben werden (List, Wide List)
• Such-Parameter werden standardmäßig nur in die History übernommen,
wenn man ein Ergebnis auswählt.
• Für Lokalisierung notwendige Strings in xml-Dateien überführt.
Änderungen im CLI-Backend:
• Suche nach topic statt titel+topic mittels ‘-T/–topic’
• -r -Flag invertiert nun wie erwartet.
• Makefile wurde um ein paar Hilfsfunktionen erweitert:- ‘make download’ läd json-Datei
- ‘make server’ speichert xz-Dateien und startet Http-Server. Setzt man
DEBUG=1, greift simple_mediathek dann auf die lokalen Daten zu.
• ‘make tests’ startet eine Reihe von Tests.
-
Hallo, versuche momentan das Plugin unter OSMC auf einem RaspberryPI 3 zu nutzen, aber leider wird die Filmliste nicht geladen. Unter LibreELEC funktioniert es.
Hier mal ein Ausschnitt vom log:08:51:11.389 T:1615852528 WARNING: Previous line repeats 1 times. 08:51:11.389 T:1615852528 ERROR: GetDirectory - Error getting 08:51:13.592 T:1531180016 ERROR: Previous line repeats 6 times. 08:51:13.592 T:1531180016 ERROR: Plugin|plugin://plugin.video.simple_mediathek_de/ 08:51:23.375 T:1958723584 ERROR: GetDirectory - Error getting plugin://plugin.video.simple_mediathek_de/?j=%7b%22mode%22%3a%20%22update_db_over_gui%22%2c%20%22prev_mode%22%3a%20%22None%22%7d 08:51:23.376 T:1958723584 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.simple_mediathek_de/?j=%7b%22mode%22%3a%20%22update_db_over_gui%22%2c%20%22prev_mode%22%3a%20%22None%22%7d) failed 08:51:25.232 T:1531180016 ERROR: Plugin|plugin://plugin.video.simple_mediathek_de/
Gibt es eine Idee, was ich versuchen könnte?
Im Anhang nochmal die gesamte log
Gruss Wolfgang[0_1509966440318_kodi.log](Lade 100% hoch) -
Hallo Wolfgang,
der Upload des gesamten Logs hat leider nicht geklappt. (Falls du Firefox benutzt: Dort scheint der Upload hier im Forum nicht zu klappen, ich musste dafür bisher immer auf Chrome ausweichen.)
Allerdings vermute ich, dass im Log nichts steht, was uns bei der Lösung weiter hilft.Bitte prüfe mal ob die Dateien
/home/osmc/.kodi/addons/plugin.video.simple_mediathek_de/root/bin/simple_mediathek und
/home/osmc/.kodi/addons/plugin.video.simple_mediathek_de/root/armv7l/bin/simple_mediathek.bin
ausführbar sind.
Edit: Bei meinem eigenem Test mit OSMC war es der Fall. Das initiale Update der Filmliste war ohne Fehler möglich.Falls das nicht hilft, aktiviere in den AddOn-Einstellungen (unter Lokale DB-Suche) die Debug-Ausgabe.
Dann sollten bei jedem Aufruf des Binaries unter /dev/shm/addon.stderr.[nummer] Textdateien angelegt werden.Ich installiere derweil mal OSMC auf einer SD-Karte und schaue mal, ob ich den Fehler reproduzieren kann.
Gruß Yggdrasil
-
@yggdrasil habe die 0.6. Version deinstalliert und dann die 0.8 installiert, funktioniert leider auch nicht. habe die debug-Funktion aktiviert, aber in /dev/shm/addon wurden leider keine Dateien angelegt…
Debug-Datei wurde jetzt angelegt:
Hochladen funktioniert irgendwie nicht oder ich bin zu blöd (angeblich funktionieren nur bestimmte Bilddateitypen)
deshalb hier der Link:
http://wheyden.de/jmp/log001
Vielleicht kannst Du damit ja was anfangen… -
Funktioniert das AddOn wenn du in seinen Einstellungen die Option “Suche per MediathekViewWeb.de” aktivierst?
Du könntest außerdem noch gucken, was passiert, wenn du das Programm über SSH ausführst:
ssh [osmc-rechner] cd $HOME/.kodi/addons/plugin.video.simple_mediathek_de/root/bin ./simple_mediathek -V
Standardmäßig speichert das Tool seine Daten nur im Ram. Will man die Dateien aktualisieren, auf die dann Kodi zugreift, ginge das folgendermaßen:
./simple_mediathek --folder $HOME/.kodi/userdata/addon_data/plugin.video.simple_mediathek_de update
-
@yggdrasil “Suche per MediathekViewWeb.de” funktioniert ebenfalls nicht.
Hier mal die Consolenausgabe Deiner Kommandozeilen : (über putty) Broken Pipe auf STDOUT ist schon seltsam, verwendet OSMC wirklich ein vollumfängliches Debian?
osmc@osmc:~/.kodi/addons/plugin.video.simple_mediathek_de/root/bin$ ./simple_mediathek -V
MediathekView data parser 0.8 (2b91c21)
osmc@osmc:~/.kodi/addons/plugin.video.simple_mediathek_de/root/bin$ ./simple_mediathek --folder $HOME/.kodi/userdata/addon_data/plugin.video.simple_mediathek_de update
converted ‘https://res.mediathekview.de/akt.xml’ (ANSI_X3.4-1968) -> ‘https://res.mediathekview.de/akt.xml’ (UTF-8)
–2017-11-07 21:05:53-- https://res.mediathekview.de/akt.xml
Resolving res.mediathekview.de (res.mediathekview.de)… 5.1.76.243, 2a00:f820:417::18e6:9ec3
Connecting to res.mediathekview.de (res.mediathekview.de)|5.1.76.243|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 808 [text/xml]
Saving to: ‘STDOUT’-
100%[=====================>] 808 --.-KB/s in 0s
2017-11-07 21:05:53 (2.88 MB/s) - written to stdout [808/808]
./simple_mediathek: line 216: xz: command not found
Mode: Indexing entries
Payload/Index folder: /home/osmc/.kodi/userdata/addon_data/plugin.video.simple_mediathek_de
Input file: -
Input stored as full update. Existing diff files will be removed.
{
“icreation”: 1510085153,
“creation”: “07. Nov. 2017 21:05”,
“ilistcreation”: -1,
“listcreation”: “01. Jan. 1970 00:59”,
“channels”: {}
}converted ‘http://verteiler1.mediathekview.de/Filmliste-akt.xz’ (ANSI_X3.4-1968) -> ‘http://verteiler1.mediathekview.de/Filmliste-akt.xz’ (UTF-8)
–2017-11-07 21:05:53-- http://verteiler1.mediathekview.de/Filmliste-akt.xz
Resolving verteiler1.mediathekview.de (verteiler1.mediathekview.de)… 5.1.76.111, 2a00:f820:417::4df6:1bf2
Connecting to verteiler1.mediathekview.de (verteiler1.mediathekview.de)|5.1.76.111|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 21238872 (20M) [application/octet-stream]
Saving to: ‘STDOUT’-
0%[ ] 0 --.-KB/s in 0s
Cannot write to ‘-’ (Broken pipe).
osmc@osmc:~/.kodi/addons/plugin.video.simple_mediathek_de/root/bin$ -
-
@yggdrasil was hat dieser Fehler zu bedeuten: (siehe Consolen-Log) und in Deiner debug-Datei ist der Fehler auch zu sehen; siehe vorvorige Mail und Link auf “OwnCloud”
./simple_mediathek: line 216: xz: command not found
Der Import der .xml-Datei scheint ja zu funktionieren…
-
-
@yggdrasil in Deinem Shell-Script verwendest Du:
UNPACK_XZ=“xz -dc -”
und rufst das Kommando nachher auf.
Das Kommando gibt es in meiner OSMC-Installation nicht.
Leider kenne ich das Kommando auch nicht. Vielleicht sollte ich das mal über apt-get installieren?