Filme nach Zeit X automatisch als ungesehen markieren

  • Hallo zusammen,

    Ich habe hier drei Kodi 19-Installationen mit einer MariaDB im Hintergrund.

    In der Android-Remote-App Yatse sehe ich bei den Film-Details, wann ich diesen zuletzt angeschaut habe. Diese Info liegt also irgendwo in der DB.
    Gibt es denn eine Möglichkeit, dass Filme bei denen das "Gesehen"-Datum älter als xx Monate/Jahre ist, automatisch wieder als ungesehen markiert werden bzw. die "Gesehen"-Markierung aufgehoben?
    Ich habe mal bei den Addons im Standard-Repository geschaut bin aber nicht fündig geworden. Auch Google hat mich nicht wirklich weiter gebracht.

    Klar, theoretisch könnte ich das in der DB direkt machen bzw. mit einem Cron-Job. Direkt in Kodi wäre mir das aber lieber.

  • Man könnte auch über den autoexec-Service ein Script triggern, welches das alles über die JSON API macht.

    Ist auf jeden Fall interessant. Das schaue ich mir Mal an, wie man da ein Script zu basteln könnte.

    Wenn ich jetzt " @PvD " sage (was manchmal ein Zauberwort hier ist), fühlt der sich ggf getriggert ein kleines Add-on dazu zu schreiben ;) :D

  • Kann man nicht für sowas eine Regel für eine Smartlist schreiben und diese dann anzeigen? Innerhalb dieser Smartplaylist kann dann der Nutzer per Hand den 'gesehen' Status zurücksetzen. Ist ja nicht so, dass täglich dutzende Filme anfallen, die zurückgesetzt werden müssen. Man muss auch nicht für jeden Pups ein Addon schreiben. [ag]

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Ich probiere das mit der SmartList gerade, aber soweit ich sehe, wird das nicht gehen. (Wobei ich gerade auch zum ersten Mal damit arbeite. Vielleicht übersehe ich was)

    Wenn ich die Regel anlege kann ich auswählen "Zuletzt wiedergegeben am" (Feld 1), dann "vor" (Feld 2), aber Feld 3 erwartet dann scheinbar zwingend ein fixes Datum.
    Aber ich bräuchte ja ein variables Datum im Sinne von "Heute - 365 Tagen". Sinngemäß.

  • Mal als Ansatz:

    in der SQL-Datenbank kann man alle Filme, wo das Gesehendatum älter als z.B. 30 Tage alt ist folgendermassen anzeigen lassen:


    SQL
    SELECT * FROM `movie_view` WHERE LastPlayed <> 'NULL' AND Lastplayed <= DATE_SUB(NOW(),INTERVAL 30 DAY) AND playCount >= 1


    und dann halt bei dem Ergebnis den playcount auf NULL setzen.

    SQL
    UPDATE files SET playCount = NULL, lastPlayed = NULL WHERE ...
  • ich denk so, ist aber ungetestet und ich hab kein Bock meine Datenbank zu zerstören

    SQL
    UPDATE files SET playCount = NULL, lastPlayed = NULL WHERE idFile IN (SELECT idFile FROM `movie_view` WHERE LastPlayed <> 'NULL' AND Lastplayed <= DATE_SUB(NOW(),INTERVAL 30 DAY) AND playCount >= 1)

    BACKUP der Datenbank vorher machen !!!!!!!!!

  • Geht mit einer Smart Playlist nach folgenden Regeln:

    • Playcount > 0
    • nicht abgespielt in den letzten 12 Monaten


    https://kodi.wiki/view/Smart_playlists

  • Natürlich nicht, aber

    Innerhalb dieser Smartplaylist kann dann der Nutzer per Hand den 'gesehen' Status zurücksetzen. Ist ja nicht so, dass täglich dutzende Filme anfallen, die zurückgesetzt werden müssen.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • ja, geht natürlich auch. Da kann man wenigstens nichts zerstören.

    Dachte es ist schöner, die Datenbank direkt zu verändern und den SQL-Befehl über die crontab regelmässig ausführen zu lassen.
    Er schrieb ja was von "automatisch"

  • So...ich habe mal was gebastelt. Wer also Linux verwendet, der kann sich das Script irgendwo hin legen:

    Edit:

    Ach herrje...ich habe ganz vergessen, dass das Script "jq" braucht. Unter Ubuntu und seinen Derivaten bitte vorher folgendes Kommando absetzen:

    sudo apt install jq

    Einen Check dafür baue ich noch ins Script ein.

    Das "current_date"-Kommentar kann man nutzen um Tests zu fahren. Dort trägt man dann halt ein Test-Datum ein gegen welches man vergleichen kann. Das ganze funktioniert Sekundengenau ;)

    Das Script wird nur dann funktionieren, wenn Kodi läuft und dort auch der Webserver aktiviert ist. Ggf. muss man Benutzernamen und Passwort noch anpassen. Die IP muss man nicht mehr ändern, wenn das Script auf der gleichen Maschine liegt.

    Wenn man dann noch den "autoexec"-service von Kodi nutzt, dann wird das Script bei jedem Start von Kodi ausgeführt und man kann so seinen Playcount und das Datum von "Lastplayed" zurück setzen. Ich habe gesehen, dass "Lastplayed" keinen Wert hat, wenn die Blibliothek frisch aufgesetzt ist.

    Mit ein wenig Trickserei kann man das auch bestimmt in Python wandeln und dann ein Add-on draus machen.

    Link zum Autoexec-Service:

    https://kodi.wiki/view/Autoexec_Service

    Built in Functions um ein Script auszuführen:

    https://kodi.wiki/view/List_of_built-in_functions

    Have fun

    3 Mal editiert, zuletzt von DaVu (26. Januar 2022 um 17:56) aus folgendem Grund: Copy und Pastierungsfehler im Script behoben

  • @DaVu
    Echt interessanter Ansatz. Damit werde ich auch mal bei Gelegenheit ein bischen rumexperimentieren. Mit json hab ich wenig gemacht bisher.
    Aber eigentlich mag ich lieber ein SQL-Befehl, wenn es um Datenbankveränderungen geht. Aber auf jeden Fall interessant.

  • Naja, es kommt halt immer drauf an, wer es nachher ausführen soll. Wenn ich Dinge von Kodi aus machen möchte, dann geht es halt so einfacher wie ich finde. Mag auch daran liegen, dass ich SQL nicht wirklich gut kann :D

  • Vielen Dank für Euren Input. Ein paar kurzfristige private Geschichten haben dafür gesorgt, dass ich die letzten 2 Tage nun relativ wenig "anderes" machen konnte.

    Aber ich werde mir das mal zu Gemüte führen. Im Prinzip reicht mir schon die SQL-Variante von @Steevee2.

    Da alle meine KODI-Installationen unter Windows laufen, bringt mich der Linux-Ansatz zwar nicht direkt weiter, aber ich behalte auch das mal im Hinterkopf.

  • Wenn du dich nicht mit Datenbanken auskennst, würde ich mit dem Script von DaVu anfangen mich zu beschäftigen, das sieht ja schon recht ausgereift aus.

    Mein Update-Befehl der Datenbank ist ungetestet, aus dem Kopf raus geschrieben, auf jeden Fall nicht ohne Datenbankbackup machen !!!

  • Was Google und ein wenig rudimentäres Wissen nicht alles schafft ;)

    Ich wäre @PvD und auch jedem anderen sehr dankbar für Input, was man noch besser machen könnte. Sowas wie "best practices" halt. Ich weiß, dass man Dateien mit "with" öffnet, damit man sie nicht mehr vergisst zu schließen. Das wars dann aber auch schon :D
    Da gibt es bestimmt noch einiges zu verbessern und ich bin für jeden Input dankbar.

    Erstmal wirft das Script nur einen String aus, dass Lastplayed und der Playcount für eine Movie-ID resettet werden soll. Das "kodi2.json" habe ich mir vorher aus einem meiner Kodi-Clients gezogen:

    curl -u kodi:1234 -s -X POST http://192.168.1.162:8080/jsonrpc -H 'Content-Type: application/json' --data '{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": { "properties" : [ "lastplayed", "playcount" ], "sort": { "order": "ascending", "method": "label", "ignorearticle": true } }, "id": "libMovies"}' > kodi2.json

    Der Rest sollte irgendwie in ein Kodi Add-on zu packen sein. Denn Kodis Python Module beinhalten sowas nettes hier:

    https://xbmc.github.io/docs.kodi.tv/m…4c7b79ed84ed846

    Ich kann also in einem Addon die JSON RPC von Kodi ausführen und dann die gleichen JSON Befehle wie in meinem Bash-Script abfeuern. Dann noch ein wenig Variablen drumherum....das sollte schon klappen. Vor allem brauche ich dann auch keine externen Dateien mehr, da ich den Inhalt einfach so speichern kann


    Python
    response = xbmc.executeJSONRPC('{ "jsonrpc": "2.0", "method": "JSONRPC.Introspect", "id": 1 }')
    
    
    data = json.load(response)

    Wahrscheinlich ginge sogar:

    Python
    response = json.load(xbmc.executeJSONRPC('{ "jsonrpc": "2.0", "method": "JSONRPC.Introspect", "id": 1 }'))

    Aber da bin ich mir gerade unsicher....mal schauen ;)

    Dann vielleicht noch einen Dialog öffnen, der anzeigt, welche Filme resettet wurden

    Fuck....bin ich gerade dabei mein erstes Add-on zu schreiben? :D

    Aber....das Add-on wird es niemals in das Kodi Repo schaffen. Wir erlauben keine Add-ons, die die Datenbank verändern. Das ist auch ok. Mir machts gerade Spaß und es entspannt ;)

    4 Mal editiert, zuletzt von DaVu (27. Januar 2022 um 23:23)

Jetzt mitmachen!

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