[Release] NFO Watchedstate Updater

  • Nach etwas Recherche könnte das Problem vielleicht sein, dass "VideoLibrary.OnUpdate" komischerweise in Beispiel 2 nicht "ausgelöst" wird? Könnte also eher eine Kodi-Eigenheit oder gar Bug sein?
    Siehe ähnliches Problem hier
    http://forum.kodi.tv/showthread.php?tid=197858

    Hi Leute...
    Ja, die letzten Wochenenden waren bei mir schon mit vielen Aktivitäten verplant... Da blieb leider nicht mehr viel Zeit für die Nerds :)
    Ich hatte mir das in der Zwischenzeit auch einmal kurz angeschaut und konnte das Problem bei mir nur teilweise reproduzieren. Bei Filmen, die sich in der Library befinden konnte ich sowohl im DB-, als auch im Dateimodus den watched-flag in den nfos setzen. Bei Filmen, die sich allerdings nicht in der Datenbank befinden, die jedoch über eine nfo Datei verfügen konnte ich den tag nicht umschalten... Hier sieht danach aus, das XBMC die Zeiten bzw die watched flags für die Library und die non-Library Items unterschiedlich speichert. Ich glaube für die n-L Items werden nur Bookmarks gesetzt, bei denen VideoLibrary.OnUpdate nicht greift... Ist ja an und für sich auch richtig, da es ja auch eine VideoLibrary-Json-Notification ist... Über die neue Python-Api-Funktion onNotification habe ich es allerdings noch nicht versucht. Offenbar funktioniert diese Variante, laut deinem verlinkten Artikel, aber auch nicht. Ich kann es gerne kommende Tage auch noch einmal probieren, aber ich denke das diese Methode das auch nicht erfassen kann. Ich denke hierfür gibt es keinen gescheiten Weg. Höchtens vlt per Überwachung der SQL DB durch das Addon selbst.

    Um noch kurz auf die TMM/ME Geschichte zurück zu kommen:
    Diese nutzen zusätzlich einen <watched>-tag? Ist das für Kompatibilität mit Mediaportal bei TMM gedacht? Ich dachte bislang Mediaportal orientiert sich an den XBMC nfos?! Und eigetlich regelt XBMC den watched-state über den <playcount>-tag...

    Was das Repo betrifft:
    Hier ist ja vor kurzem das neue Helix Repo hinzu gekommen und derzeit müsst Ihr das Addon noch über das alte Nerds Repo beziehen... Bin irgendwie noch nicht dazu gekommen das unter Helix zu testen und eine aktuelle Version hochzuladen... Vielleicht kann ich das ja am kommenden Wochenende korrigieren...

  • 4lb3rtO

    Hi,

    danke fürs Nachschauen bzgl. der FileBrowser OnUpdate-Sache. Falls es etwas zeitlich unaufwändiges auszuprobieren gibt, gerne. Ansonsten bleibts halt einfach so wies ist. :)
    Ich habe mittlerweile, auch wenn ich lieber der FileBrowser benutze, die Items doch alle in die Library eingelesen und nutze über das Official XBMC Remote iPad App (Fullscreen Wall View) jetzt Dein Addon zum schnellen "als gesehen" markieren mit der automatischen .nfo-Änderung. Das funktioniert wunderbar und ich muss nichtmal die lahme IR-Fernbedienung am TV selbst benutzen. Ich werde für "als gesegen markieren" nun einfach den FileBrowser meiden. Nicht perfekt, aber das Addon kann ja unterm Strich am allerwenigsten dafür. :)

    Bzgl. TMM/ME:

    Ja, TMM und ME benutzen beide das watched-Tag, selbst wenn es vorher nicht existiert, wird es geschrieben - zusätzlich zu playcount. Folglich bleibe ich bei dem Vorschlag, dass "watched" immer mit gesetzt werden sollte. Find ich einfach sauberer, damit's kein Logikdurcheinander gibt. Performance sollte ja wie gesagt bei solch kleinen .nfo Files kein Problem darstellen. Code-Vorschlag siehe mein anderer Post.

    Grüße! :)

  • Ich versuche dann am Wochenende mal das Addon mit Helix zu testen und dann auch ins Repo zu laden. Hier kann ich dann im gleichen Zuge auch die andere Api-Funktion testen (auch wenn ich hierbei keine großen Hoffnungen mache bzw Erfolg davon verspreche).

    Was die Änderung(en) betrifft:
    -Die Einrückungen der nfos werde ich dann erstmal ignorieren (wird ja dann in TMM gefixt - und du kannst dann ja erstmal deine modifizierte Variante weiter verwenden)
    -Die zweite Änderung ist kein Problem. Hier wird ja nur ein zusätzlicher Eintrag erzeugt der von XBMC sowieso ignoriert wird. Performance-technisch fällt das auch nicht auf. :) Ich füge das dann als zuschaltbare Option ein (standardmäßig abgeschaltet plus kurze Beschreibung zur Einstellung). Dann kann jeder selbst entscheiden, ob es für ihn notwendig ist...


    Wenn du gerade noch mit dem TMM Entwickler in Kontakt stehst kannst du ihn ja vlt nochmal fragen, warum er einen zusätzlichen <watched>-tag verwendet.


    Gruß
    4

  • Der MediaElch nutzt neben dem <PlayCount> auch den <Watched> Eintrag in der NFO Datei.
    Aktuell zeigt er dann an, dass ich den Film 2 mal gesehen habe, aber er hat trotzdem die Eigenschaft "nicht gesehen". Das ist ein bisschen unschön.

    Ideal wäre:
    Sobald das Aden einen Playcount > 0 in die nfo schreibt, auch den Watched State auf true setzen.

  • 4lb3rtO
    Klasse, Danke!
    Ich Frage den Entwickler mal, rein aus Interesse. Ich denke, dass sogar noch andere MediaManager neben TMM und ME das Tag ebenso setzen.

    Ich vermute, dass die ursprüngliche und nicht ganz falsche Intention von IRGENDJEMANDEM mal gewesen ist, dass selbst ein X-Mal angesehener Film ohne Löschen des playcount wieder als "ungesehen" markiert werden kann, falls man ihn einfach noch mal schauen möchte. Den playcount zu verlieren, nur weil man möchte, dass der Film in der "ungesehen" Liste auftaucht ist ja eigentlich auch nicht ganz so schön.
    Scheinbar ist aus der ursprünglichen Idee aber nie etwas geworden in XBMC selbst. :)

    Ich wäre ja fast dafür, es nicht nur optional einzubauen, aber es ist logischerweise Dein Addon, Deine Entscheidung.


    test123456
    Äh ja, das schrieben wir doch bereits! :P

  • Ich habe noch eine Frage, die zu dem Thema passt:

    Wenn ich einen Film meiner Datenbank irgendwo anders ansehe (z.B. am iPad oder bei einem Kumpel), dann setze ich über den Mediaelch den Film auf "gesehen". Somit wird der Playcount von 0 auf 1 gesetzt und das watched flag auf "true" gesetzt.

    Jetzt bekommt das aber meine XBMC Datenbank beim Scan nach neuen Filmen nicht mit. Die einzige Möglichkeit, die ich kenne, um XBMC zu zwingen, die watched states aus den nfos upzudaten ist folgende:

    - Ich gehe zu meinen Quellen
    - Ich setze den Inhalt von "Filme" auf "Keine" (-> Datenbank wird geleert)
    - Ich gehe wieder zu der Quelle
    - Setzen den Inhalt wieder auf Filme (gesamte Datenbank wird nue aus den nfo Dateien aufgebaut).

    Erstens dauert das immer ziemlich lang und zweitens ist das auch recht aufwendig.

    Hat da jemand eine bessere Idee? Gibts dafür vielleicht sogar ein Addon, dass das automatisch von Zeit zu Zeit macht?

    Danke!!

  • Zitat

    Ich wäre ja fast dafür, es nicht nur optional einzubauen...

    Ich denke allerdings, da dieser Tag meines Wissens eigentlich Xbmc untypisch ist, dass es optional besser aufgehoben wäre. Dies könnte dann ja ganz fix über die Addon Einstellungen hinzu geschaltet werden...


    Zitat


    Hat da jemand eine bessere Idee? Gibts dafür vielleicht sogar ein Addon, dass das automatisch von Zeit zu Zeit macht?

    Dann solltest du entweder eine zentrale SQL Datenbank in Erwägung ziehen, oder dir einmal das trakt.tv Addon anschauen... Hier könntest du versuchen, die watchedstates über trakt zu synchronisieren und mit NFOWU in die nfos schreiben zu lassen...
    Ich weiß gerade nicht, wie trakt den Status setzt, aber wenn hierbei auch das update-event ausgelöst wird, könnte das so funktionieren...

  • 4lb3rtO
    Ich kann mit beiden Varianten leben.

    Vielleicht wäre auch ein Mittelweg denkbar und gut? (kam mir gerade in den Sinn):

    - WENN das watched-Tag bereits existiert, wird es im Falle einer .nfo-Änderung durch das Addon korrekt mit umgeändert.
    - Wenn das watched-Tag bisher gar nicht in der .nfo vorhanden ist, wird es auch gar nicht erst erstellt.

    Vorteile:
    - Eine cleane .nfo bleibt clean (Falls das watched-Tag nicht vorhanden ist, wird es auch NICHT erstellt)
    - Keine (ggf. zu übersehene) Konfiguration
    - Es ist ausgeschlossen, dass das Addon jemals eine unlogische .nfo hinterlässt


    test123456

    Hast Du in deiner [definition='2','1']advancedsettings[/definition].xml

    Code
    <[definition='2','1']advancedsettings[/definition]>
      <videolibrary>
    	<importwatchedstate>true</importwatchedstate> 
      </videolibrary>
    </[definition='2','1']advancedsettings[/definition]>


    drin?

  • my username:

    Ja, den Eintrag habe ich drin. Der wirkt aber nur bei neu hinzugefügten Filmen, wenn XBMC nach neuen Elementen sucht.

    Bei Filmen, die bereits in der Datenbank verhanden sind, ich aber nicht mit meinem XBMC angesehen habe, sondern woanders gesehen habe, würde ich ihn gerne manuell auf "gesehen" setzen. Das will ich aber nicht in der XBMC GUI machen, sondern mit dem MediaElch "offline".

    Filme, die bereits in der Datenbank sind, werden von XBMC nicht mehr gescanned und somit wird auch kein Update in der nfo-Datei bemerkt.

    4lb3rtO:

    Was genau würde sich bei der SQL Datenbank ändern? Dann würde XBMC die Daten da reinschreiben und rauslesen. Wenn ich jetzt über den MediaElch die nfo Datei editiere und den watched state auf true setze, weil ich den Film jetzt woanders angeschaut hab, wird XBMC trotzdem nichts mitbekommen und in der SQL Datenbank etwas verändern.

    Das einzige, was dann helfen würde, dass ich manuell in der SQL Datenbank Werte ändere.. aber so wirklich ein Vorteil ist das nicht.

    Oder sehe ich da jetzt einen Vorteil nicht?

  • @ test123456
    Wenn Du eh ein iPad hast, browse doch da Deine Library mit "Official XBMC Remote" im Fullscreen Wall View und setze den Film auf "gesehen", dann springt das hier besprochene Addon an und ändert die .nfo (und Deine KODI-Datenbank natürlich ebenso)

    Nun aber back2topic :)

  • Moin,

    also ich bekomme in OE immer noch eine Fehlermeldung (Script-Fehler). Settings wie im ersten Post gesetzt. Schreibrechte etc. sind vorhanden.

    Hat jemand eine Idee?

    Hier mal meine Log:

    Spoiler anzeigen


    21:11:48 T:139816301729536 NOTICE: Thread LanguageInvoker start, auto delete: false
    21:11:48 T:139814741473024 NOTICE: Thread BackgroundLoader start, auto delete: false
    21:11:48 T:139816301729536 NOTICE: -->Python Interpreter Initialized<--
    21:11:49 T:139814741473024 NOTICE: Thread BackgroundLoader start, auto delete: false
    21:12:02 T:139815032248064 NOTICE: Previous line repeats 1 times.
    21:12:02 T:139815032248064 ERROR: Unable to lookup host: ''
    21:12:02 T:139815032248064 ERROR: NFS: Failed to mount nfs share: (nfs_mount_async failed)
    21:13:25 T:139815032248064 NOTICE: Thread JobWorker start, auto delete: true
    21:14:00 T:139816242980608 NOTICE: Thread BackgroundLoader start, auto delete: false
    21:14:00 T:139814741473024 NOTICE: Thread LanguageInvoker start, auto delete: false
    21:14:00 T:139814741473024 NOTICE: -->Python Interpreter Initialized<--
    21:14:00 T:139815019398912 NOTICE: Thread JobWorker start, auto delete: true
    21:14:04 T:139816242980608 NOTICE: Thread BackgroundLoader start, auto delete: false
    21:14:04 T:139816301729536 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
    - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
    Error Type: <class 'xml.etree.ElementTree.ParseError'>
    Error Contents: not well-formed (invalid token): line 6, column 114
    Traceback (most recent call last):
    File "/storage/.xbmc/addons/service.nfo.watchedstate.updater/default.py", line 118, in <module>
    WU.listen()
    File "/storage/.xbmc/addons/service.nfo.watchedstate.updater/default.py", line 51, in listen
    self.handleMsg(msg)
    File "/storage/.xbmc/addons/service.nfo.watchedstate.updater/default.py", line 37, in handleMsg
    methodHandler(jsonmsg)
    File "/storage/.xbmc/addons/service.nfo.watchedstate.updater/default.py", line 63, in VideoLibraryOnUpdate
    self.updateNFO(filepath, itemplaycount)
    File "/storage/.xbmc/addons/service.nfo.watchedstate.updater/default.py", line 82, in updateNFO
    tree = ET.ElementTree(ET.fromstring(msg))
    File "/home/stephan/projects/openelec-4.2/build.OpenELEC-Generic.x86_64-4.2.1/Python-2.7.3/.install_pkg/usr/lib/python2.7/xml/etree/ElementTree.py", line 1301, in XML
    File "/home/stephan/projects/openelec-4.2/build.OpenELEC-Generic.x86_64-4.2.1/Python-2.7.3/.install_pkg/usr/lib/python2.7/xml/etree/ElementTree.py", line 1643, in feed
    File "/home/stephan/projects/openelec-4.2/build.OpenELEC-Generic.x86_64-4.2.1/Python-2.7.3/.install_pkg/usr/lib/python2.7/xml/etree/ElementTree.py", line 1507, in _raiseerror
    ParseError: not well-formed (invalid token): line 6, column 114
    -->End of Python script error report<--
    21:14:04 T:139814718666496 NOTICE: Thread JobWorker start, auto delete: true
    21:15:37 T:139816900720448 NOTICE: Previous line repeats 1 times.
    21:15:37 T:139816900720448 NOTICE: NFS is idle. Closing the remaining connections.

    Warum taucht da "/home/stephan" auf? Das kann nicht von mir kommen....

    Gruß
    discom.

  • Es sieht so aus, als ob deine nfo Datei nicht wohlgeformt ist und die Datei nicht geparst werden kann. Das müsstetst du dann einmal für deinen Fall überprüfen.
    Dem "/home/stephan" würde ich keine weitere Beachtung schenken. Stephan Raue ist offenbar der Maestro of OE. Warum dessen Name da auftaucht kann ich dir allerdings nicht sagen...

  • Es sieht so aus, als ob deine nfo Datei nicht wohlgeformt ist und die Datei nicht geparst werden kann. Das müsstetst du dann einmal für deinen Fall überprüfen.
    Dem "/home/stephan" würde ich keine weitere Beachtung schenken. Stephan Raue ist offenbar der Maestro of OE. Warum dessen Name da auftaucht kann ich dir allerdings nicht sagen...

    Habe jetzt mal die nfo geleert und einfach nur unter dem "movie" tag die tags "playcount" und "watched" hinzugefügt. Jedoch bekomme ich auch hier den Script-Fehler. Eigentlich kann man hier doch nicht so viel falsch machen?


  • Habe jetzt mal die nfo geleert und einfach nur unter dem "movie" tag die tags "playcount" und "watched" hinzugefügt. Jedoch bekomme ich auch hier den Script-Fehler. Eigentlich kann man hier doch nicht so viel falsch machen?

    Könntest du mir dann mal bitte beide nfo Dateien und und jeweils ein vollständiges logfile zur Verfügung stellen? Dann kann ich versuchen den Fehler zu reproduzieren...

  • Was genau würde sich bei der SQL Datenbank ändern? Dann würde XBMC die Daten da reinschreiben und rauslesen. Wenn ich jetzt über den MediaElch die nfo Datei editiere und den watched state auf true setze, weil ich den Film jetzt woanders angeschaut hab, wird XBMC trotzdem nichts mitbekommen und in der SQL Datenbank etwas verändern.

    Das einzige, was dann helfen würde, dass ich manuell in der SQL Datenbank Werte ändere.. aber so wirklich ein Vorteil ist das nicht.

    Oder sehe ich da jetzt einen Vorteil nicht?


    Ich denke wir hatten kurz aneinander vorbei geredet. Ich bin davon ausgegangen (da du offenbar auch an einem Ipad schaust) das du mehrere XBMC im Einsatz hast. Hier wäre dann durchaus eine zentrale Datenbank hilfreich gewesen. Hier würden dann alle XBMC in eine Datenbank schreiben und jedes einzelne XBMC würde im Falle eines gesehenen Filmes o.ä. über den NFOWU den Status in der nfo aktualisieren.

    Wenn du allerdings nur den Status in den nfos aktualisieren möchtest, weil du einen Film außerhalb deiner XBMC Bibliothek (sprich bei nem Kumpel) gesehen hast, kannst du das ja ganz einfach machen, indem du über die Taste "w" den Film in deiner Bib als gesehen markierst und den Status in der nfo über den NFOWU aktualisieren lässt. Damit würde das ganze gefummel über den ME + Bib bereinigen und neu einlesen entfallen.

  • so hier mal meine nfo und meine log-Datei

    Hi... Danke für die Infos und fröhliche Weihnachten!
    Du musst die nfos UTF-8 kodiert speichern (anstelle von ANSI) und die letzte Zeile...
    http://www.imdb.de/title/tt0798817/
    ...entfernen. Ansonsten hast du damit eine ungültige xml Datei bzw brichst damit die xml Struktur.

    Auch die Angabe des Encodings als erste Zeile mit...
    <?xml version='1.0' encoding='UTF-8'?>
    ...kann nicht schaden.

    Hast du die nfos eventuell mit dem Editor erstellt/bearbeitet?

  • Zitat


    Hast du die nfos eventuell mit dem Editor erstellt/bearbeitet?

    Ich habe mir hierfür ne kleine Datenbank programmiert, der mit die Daten dann speichert. Das mit der Codierung soll nicht das Problem sein. Mit der URL am Ende habe ich dann jedoch das Problem, dass er die restlichen Daten die ich nicht vorgebe, von der angegebenen URL scrappen soll. Bleibt mir hier dann ausschließlich der Scapper als Addon oder gibt es eine weitere Möglichkeit?

  • Erster Post im neuen Jahr. :D
    Bin momentan weiterhin auf Gotham und das Addon ist immer noch eine wahre Freude.

    Die Probleme mit TinyMediaManager scheinen mittlerweile gefixt, sowohl Addon als auch TMM können nur gerne abwechselnd die .nfo bearbeiten, ohne dass es Probleme gibt. Der Entwickler war sehr kooperativ. :)

    Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!