[Gelöst] Scraping von Heimvideos schlägt aufgrund falscher nfo-Angaben fehl

  • Liebe Community,

    seit einem Einspielen der neueren Updates von CoreElec oder des Emby for Kodi NG Addons, schlägt das Scraping meiner Heimvideo- und Bilder-Datenbank fehl. Nach einiger Suche, konnte ich die Fehlerursache finden. Ich weiss aber nicht, wie ich die Fehler am besten beseitige. Also...

    1) Ich habe auf meinem Emby Server eine Sammlung von Bildern und Heimvideos in einer eigenen Bibliothek "Home videos & photos".
    2) Wenn ich per Emby for Kodi NG Addon auf meinem Client diese Sammlung hinzufügen wollte, brach der Scan einfach ab.
    3) Die relevanten Zeilen im [definition=9,2]kodi.[definition='1','0']log[/definition][/definition]:

    Code: kodi (excerpt).<woltlab-metacode data-name=
    log" data-highlighter="brainfuck" data-line="1">2021-11-01 13:39:54.322 T:5091     INFO <general>: INFO: EMBY.core.movies.Movies: ADD movie [59/3297/2272] 1070373: IMG_2035                                                                           2021-11-01 13:39:54.324 T:5091     INFO <general>: INFO: EMBY.core.movies.Movies: ADD movie [59/3298/2273] 1070374: IMG_2036                                                                           2021-11-01 13:39:54.329 T:5091    ERROR <general>: Exception in thread                                                                                                                                 2021-11-01 13:39:54.329 T:5091    ERROR <general>: Thread-38                                                                                                                                           2021-11-01 13:39:54.329 T:5091    ERROR <general>: :                                                                                                                                                                                                                                                                                                                                                          2021-11-01 13:39:54.329 T:5091    ERROR <general>: Traceback (most recent call last):                                                                                                                                                                                                                                                                                                                         2021-11-01 13:39:54.329 T:5091    ERROR <general>:   File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner                                                                                                                                                                                                                                                                                    2021-11-01 13:39:54.329 T:5149     INFO <general>: INFO: EMBY.library.Library: [ worker library queue size ] 1                                                                                         2021-11-01 13:39:54.335 T:5091    ERROR <general>:   File "/usr/lib/python3.8/threading.py", line 870, in run                                                                                                                                                                                                                                                                                                 2021-11-01 13:39:54.335 T:5091    ERROR <general>:   File "/storage/.kodi/addons/plugin.video.emby-next-gen/database/library.py", line 954, in RunJobs                                                                                                                                                                                                                                                        2021-11-01 13:39:54.337 T:5091    ERROR <general>:                                                                                                                                                     2021-11-01 13:39:54.337 T:5091    ERROR <general>: self.worker_library()                                                                                                                               2021-11-01 13:39:54.337 T:5091    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.337 T:5091    ERROR <general>:   File "/storage/.kodi/addons/plugin.video.emby-next-gen/database/library.py", line 706, in worker_library                                                                                                                                                                                                                                                 2021-11-01 13:39:54.338 T:5091    ERROR <general>:                                                                                                                                                     2021-11-01 13:39:54.338 T:5091    ERROR <general>: DBObject(Item, LibraryData)                                                                                                                         2021-11-01 13:39:54.338 T:5091    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.338 T:5091    ERROR <general>:   File "/storage/.kodi/addons/plugin.video.emby-next-gen/core/movies.py", line 61, in movie                                                                                                                                                                                                                                                                2021-11-01 13:39:54.339 T:5091    ERROR <general>:                                                                                                                                                     2021-11-01 13:39:54.339 T:5091    ERROR <general>: obj['Premiere'] = Utils.convert_to_local(obj['Year'])                                                                                               2021-11-01 13:39:54.339 T:5091    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.339 T:5091    ERROR <general>:   File "/storage/.kodi/addons/plugin.video.emby-next-gen/helper/utils.py", line 291, in convert_to_local                                                                                                                                                                                                                                                   2021-11-01 13:39:54.339 T:5091    ERROR <general>:                                                                                                                                                     2021-11-01 13:39:54.339 T:5091    ERROR <general>: timestamp = datetime.fromtimestamp(timestamp)                                                                                                       2021-11-01 13:39:54.339 T:5091    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.339 T:5091    ERROR <general>: OverflowError                                                                                                                                       2021-11-01 13:39:54.339 T:5091    ERROR <general>: :                                                                                                                                                   2021-11-01 13:39:54.339 T:5091    ERROR <general>: timestamp out of range for platform time_t                                                                                                          2021-11-01 13:39:54.339 T:5091    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.591 T:5149    ERROR <general>: Exception in thread                                                                                                                                 2021-11-01 13:39:54.591 T:5149    ERROR <general>: Thread-81                                                                                                                                           2021-11-01 13:39:54.591 T:5149    ERROR <general>: :                                                                                                                                                                                                                                                                                                                                                          2021-11-01 13:39:54.591 T:5149    ERROR <general>: Traceback (most recent call last):                                                                                                                                                                                                                                                                                                                         2021-11-01 13:39:54.591 T:5149    ERROR <general>:   File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner                                                                                                                                                                                                                                                                                    2021-11-01 13:39:54.591 T:5149    ERROR <general>:   File "/usr/lib/python3.8/threading.py", line 870, in run                                                                                                                                                                                                                                                                                                 2021-11-01 13:39:54.592 T:5149    ERROR <general>:   File "/storage/.kodi/addons/plugin.video.emby-next-gen/database/library.py", line 954, in RunJobs                                                                                                                                                                                                                                                        2021-11-01 13:39:54.593 T:5149    ERROR <general>:                                                                                                                                                     2021-11-01 13:39:54.593 T:5149    ERROR <general>: self.worker_library()                                                                                                                               2021-11-01 13:39:54.593 T:5149    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.593 T:5149    ERROR <general>:   File "/storage/.kodi/addons/plugin.video.emby-next-gen/database/library.py", line 705, in worker_library                                                                                                                                                                                                                                                 2021-11-01 13:39:54.593 T:5149    ERROR <general>:                                                                                                                                                     2021-11-01 13:39:54.593 T:5149    ERROR <general>: progress_updates.update(ProgressValue, heading="Emby: %s" % library_name, message=Item['Name'])                                                     2021-11-01 13:39:54.593 T:5149    ERROR <general>:                                                                                                                                                                                                                                                                                                                                                            2021-11-01 13:39:54.593 T:5149    ERROR <general>: AttributeError                                                                                                                                      2021-11-01 13:39:54.593 T:5149    ERROR <general>: :                                                                                                                                                   2021-11-01 13:39:54.593 T:5149    ERROR <general>: 'NoneType' object has no attribute 'update'                                                                                                         2021-11-01 13:39:54.593 T:5149    ERROR <general>:

    4) Ich bin dann auf die Quelle gegangen. Es handelt sich um ein altes mov-video mit dazugehöriger nfo-Datei. Der Fehler war schnell gefunden. Im nfo-File ist das Jahresattribut fehlerhaft. Dort steht <year>2036</year>. Anscheinend wurde beim Scraping die laufende Nummer des Dateinamens als Jahreszahl interpretiert.

    Einerseits wundert es mich, dass Kodi sowas nicht abfängt, andererseits sind die Einträge natürlich falsch. Ich habe aber sehr viele Heimvideos, die das gleiche Problem haben. Insofern ist das händisch nicht wirklich gut zu lösen. Habt Ihr einen Tipp, wie ich das am besten hinkriege? Per Emby Server, per Kodi auf der Clientseite (wohl eher nicht) oder per Konsole auf dem Server? Wie würdet Ihr das angehen?

    Server: DIY NAS / Media Server w/ i3-8100, 32GB RAM, 4x6 TB WD Red in Raid5, DD Cine S2 + 3 x DuoFlex, OMV w/ Emby, TVheadend, Oscam fully dockered
    Living Room: NVIDIA Shield TV Pro 2019, Panasonic DP-UB9004, NAD 758v3, LG OLED 65 B7, L/R B&W CM10, B&W C S2, B&W ASW10 CM, SL/SR Elac WS 1445, HL/HR Dali Alteco C1
    Kids Room: Xbox One X w/ Kodi, Panasonic Viera TX-P50 Plasma

    Einmal editiert, zuletzt von M4tt0 (1. November 2021 um 20:49)

  • Code
    2021-11-01 13:39:54.339 T:5091    ERROR <general>: timestamp = datetime.fromtimestamp(timestamp)                                                                                                                                                                                                                                                                                                                                                                                                                                                                  2021-11-01 13:39:54.339 T:5091    ERROR <general>: OverflowError                                                                                                                                                                                                                                                                        2021-11-01 13:39:54.339 T:5091    ERROR <general>: timestamp out of range for platform time_t

    time_t erzeugt für Zeitangaben ab dem Jahr 2038 einen Overflow: https://de.wikipedia.org/wiki/Jahr-2038-Problem
    Ein ähnliches Problem ist das 2036-Problem, was dann weiter unten beschrieben wird. Abgesehen, dass bis dahin noch 15 Jahre Zeit ist, sollte der Maintainer der Software dieses Problem relativ einfach mit einem Exception-Handling lösen können.

    Schau' mal in die addon.xml des Addons (plugin.video.emby-next-gen) rein, ob es dort eine Quellenangabe zum Plugin gibt und mach' dort einen Issue auf.

    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 sag mal, die letzten zehn Jahre oder so hatten alle Linux und Windows Programmierumgebungen für C und C++ die ich nutzte time_t per default als 8 Byte Typ. Um den alten 4 Byte-Typ zu nutzen (aus welchen obskuren Rückwärtskompatibilitätsgründen auch immer) muss man Klimmzüge machen (die niemand mehr brauchen sollte). Und wie du schon sagst, dürfte das Problem erst 2038 auftreten. Schwer vorstellbar, dass Python sich auf 4 Byte time_t verlässt. Ich vermute, die Fehlermeldung ist da klein bisschen verwirrend, und in Wirklichkeit ist auf der Plattform andere Bibliotheksfunktion fehlerhaft/ungenügend implementiert:

    datetime — Basic date and time types — Python 3.10.0 documentation

    classmethod date.fromtimestamp(timestamp)


    Return the local date corresponding to the POSIX timestamp, such as is returned by time.time().
    This may raise OverflowError, if the timestamp is out of the range of values supported by the platform C localtime() function, and OSError on localtime() failure. It’s common for this to be restricted to years from 1970 through 2038. Note that on non-POSIX systems that include leap seconds in their notion of a timestamp, leap seconds are ignored by fromtimestamp().


    Auf meinen Systemen (Linux wie Windows) funktioniert auch localtime() über das Jahr 2038 hinaus, wie man das heutzutage und schon seit einer Weiler erwarten muss. Also schon komisch, wenn man da ne neue Plattform findet, die noch so ein Problem hat. (Oder da ist halt wirklich ein weiterer Programmierfehler neben dem Nicht-Abfangen der Exception im Code oder in der Implementierung der Bibliothek).

    Kodi 20.5, 17.6, 20.5, 16, 20.5 on Windows 11 Pro, Android 6, Android 12, FireTV Box 2nd Gen, FireTV 4k Max 2nd Gen
    Media on NAS, OpenMediaVault 6 (Debian Linux).

  • Danke Euch. Macht ganz viel Sinn! Ich habe ein github issue aufgemacht: https://github.com/MediaBrowser/plugin.video.emby/issues/393. Mal sehen was die sagen...

    Die falschen Metadaten habe ich mittlerweile per sed über die Command line des Servers korrigiert. Danach lief dann auch der Scraper durch...

    Server: DIY NAS / Media Server w/ i3-8100, 32GB RAM, 4x6 TB WD Red in Raid5, DD Cine S2 + 3 x DuoFlex, OMV w/ Emby, TVheadend, Oscam fully dockered
    Living Room: NVIDIA Shield TV Pro 2019, Panasonic DP-UB9004, NAD 758v3, LG OLED 65 B7, L/R B&W CM10, B&W C S2, B&W ASW10 CM, SL/SR Elac WS 1445, HL/HR Dali Alteco C1
    Kids Room: Xbox One X w/ Kodi, Panasonic Viera TX-P50 Plasma

Jetzt mitmachen!

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