entweder einen Parser selbst baut (urgs)
Das hab ich in Media-Buddy gemacht da die für AutoIt verfügbaren XML Parser nicht anständig funktionierten (vielleicht ja genau wegen dem fehlerhaften "Kodi-XML", weiß nicht mehr, ist zu lange her). Für andere Sachen, wo ich das verwendete Format selbst in der Hand habe, nutze ich dann .json. Da funktioniert der Parser wenigstens einwandfrei. Doch hier muss es eben das Kodi- .nfo Format sein.
Wenn man die XML (den Inhalt generell) von der Struktur her kennt, geht das ziemlich leicht mit String Operationen (StringBetween, StringReplace, usw.) Nur bei "fremden" XML deren Struktur man nicht kennt, wird es sehr viel schwieriger. Damit haben wir hier aber nichts zu tun, da die .nfo immer gleich aufgebaut sind.
Ich würde das in etwa so lösen. Den Inhalt der .nfo als einen großen String einlesen. Dabei ist es völlig egal, ob die Datei "echtes" XML ist oder nicht, so lange sie als String gelesen werden kann. Dann die Bereiche zwischen <watched> und </watched>, <lastplayed> und </lastplayed> sowie <playcount> und </playcount> einfach per StringReplace durch die aktuellen Werte austauschen. Gibt es diese Bereiche nicht, würde ich
"</episodedetails>"
durch folgendes ersetzen:
" <watched>true</watched>
<lastplayed>2025-01-12 15:49:20</lastplayed>
<playcount>1</playcount>
</episodedetails>"
und dann das Ganze als String wieder zurück in die .nfo Datei schreiben. Ganz so, wie man es beim manuellen Editieren per Text Editor ja auch machen würde. Ist vermutlich einfacher, als die ganze .nfo als XML auszuwerten, da man sich nur um die winzigen Bereiche kümmern muss, die man anpassen will. Und so funktioniert das auch mit den "falschen" Kodi- XML Dateien. Wobei ich nicht weiß, ob es (etwas adäquates zu) StringReplace und StringBetween in Python gibt und ob das da auch so funktioniert. Ist leider keine Sprache, die ich beherrsche.