mediathekview / plugin.video.mediathekview

Kodi plugin that gives access to most video-platforms from German public service broadcasters using the database of MediathekView.de
https://mediathekview.de/download/#mediathekview-f%C3%BCr-kodi-fr%C3%BCher-xbmc
MIT License
55 stars 25 forks source link

Database Update failed on Kodi 18 @ FireTV 4K et al #103

Closed nilz90 closed 5 years ago

nilz90 commented 5 years ago

Kodi 18 seems to have a problem with decompression of the database file.

21:07:50.305 T:18446744072753924384  NOTICE: [plugin.video.mediathekview-0.5.0:Updater]: Trying to decompress gz file...
21:08:18.156 T:18446744072753924384   ERROR: [plugin.video.mediathekview-0.5.0:Updater]: gz decompression failed: [Errno 22] Invalid argument
21:08:18.156 T:18446744072753924384  NOTICE: [plugin.video.mediathekview-0.5.0:Updater]: Return -1
Krawei commented 5 years ago

I have the same issue, see:

https://github.com/xbmc/xbmc/issues/15039

The Kodi devs told me, that it is not a Kodi problem itself and asked me to report it to the addon-team.

So here it is. Feel free to take a look on the detailed bug report mentioned above.

fzinken commented 5 years ago

Seems to be fixed in latest Kodi version

Krawei commented 5 years ago

@fzinken Which Kodi version do you mean? In the latest nightly build ( http://mirrors.kodi.tv/nightlies/android/arm/master/kodi-20181214-4c17e776-master-armeabi-v7a.apk ) the update still doesn't work.

fzinken commented 5 years ago

Worked for me with the OSMC version that is based on this commit xbmc (57abba2fd) https://discourse.osmc.tv/t/testing-kodi-18-leia-builds-for-vero-2-4k/23059/838

Krawei commented 5 years ago

Bug still occurs. Debug log here: https://paste.kodi.tv/vuwogelajo

MarcusRoeckrath commented 5 years ago

On libreelec 8.90.0009 I do not see a general decompressing problem because manual database updates works as expected while automatic and update on startup does not; see:

Correction: Reference should have pointed to another issues not this one: https://github.com/mediathekview/plugin.video.mediathekview/issues/102

fzinken commented 5 years ago

Ok, so that seems to be the explanation. I was trying manual database updates and they worked fine

MarcusRoeckrath commented 5 years ago

Made wrong URL reference, which should be: https://github.com/mediathekview/plugin.video.mediathekview/issues/102

There I described the problem that manual and "update on startup" does not work on my wetek play 2 using libreelec 8.90 while this was working in libreelec 8.2.5.

Krawei commented 5 years ago

Any updates here? The problem occurs during any kind of update (manual and automatic).

Is the problem known?

MarcusRoeckrath commented 5 years ago

I would be nice if a developer will take place in recent bug discussions.

It seams that in issue https://github.com/mediathekview/plugin.video.mediathekview/issues/95 the newest reaction from the developer can be read assuming that tuxpoldo is the nickname from a developer.

fzinken commented 5 years ago

"if a developer" well unless you will step up and help developing than I think we only have @tuxpoldo as the only developer. And as you have seen he hasn't been around for a while which would indicate that @tuxpoldo surely has other topics in his live that currently might be more important. So I don't think asking for "developer will take place in recent bug discussions" doesn't help anything as people will show up when they have time for a project. If they don't show up the only option you have to either patently wait or step up the game and start programming.

tuxpoldo commented 5 years ago

I'm back here (sorry for the delays - you are right - unfortunately there was really something more important ;-) ). I'm currently working on the whole update routine since we are planning to provide a fast update mechanism based on the distribution of shrink-wrapped-sqlite databases (no more need to full import a database).

fzinken commented 5 years ago

Welcome back. For me currently on Kodi 18 the database update is working.

Krawei commented 5 years ago

Well my database update still fails on the amazon fire tv 4k stick.

Is there a time frame where we can expect the new version? Or is there a beta version available for pre-release testers (like me ;) )?

tuxpoldo commented 5 years ago

@Krawei : Heute oder morgen kommt ein Update aus dem Beta-Repository. In diesem Update habe ich die GZ-Routine mal komplett zerlegt und mit ganz viel Debugs ausgestattet. Wir kriegen dann mal raus, wo es knallt.

tuxpoldo commented 5 years ago

Hallo zusammen,

die Version 0.6.0 aus dem Beta-Repository enthält beim Entpacken von GZ Dateien nun zusätzliche Debug-Meldungen. Sollte dieses Problem noch aktuell sein, so bitte ich um Zusendung der Log-Dateien.

Vielen Dank!

Krawei commented 5 years ago

@tuxpoldo Welcome back - willkommen zurück :) !

Das Problem besteht leider immer noch, auch mit der Entwicklerversion / Unfortunately the problem still exists, even with the developer version:

https://privatebin.net/?988fb3b76fe49c1e#TRXTidcaI+NeE0SDS5McPeTKVNMph5QNtsTWD8o/E58=

System:

nilz90 commented 5 years ago

@tuxpoldo habe mit der aktuellen Beta aus dem neuen Repo keine Probleme mehr. Vielen dank für die schnellere update Routine CoreElec Nightly (18.1)

Sobald sich diesbezüglich was ändern sollte, melde ich mich wieder

tuxpoldo commented 5 years ago

@Krawei : So - habe erst mal die wichtigen Zeilen herausisoliert:

2019-03-05 20:11:58.899 T:8478  NOTICE: [plugin.video.mediathekview-0.6.0:Updater]: Trying to decompress gz file...
2019-03-05 20:12:19.810 T:8478   ERROR: [plugin.video.mediathekview-0.6.0:Updater]: gz decompression of "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/plugin.video.mediathekview/filmliste-v2.db.update.gz" to "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/plugin.video.mediathekview/filmliste-v2.db.update" failed on reading gz file: [Errno 22] Invalid argument
2019-03-05 20:12:19.811 T:8478  NOTICE: [plugin.video.mediathekview-0.6.0:Updater]: Return -1
2019-03-05 20:12:19.812 T:8478  NOTICE: [plugin.video.mediathekview-0.6.0:Updater]: Cleaning up downloads...

Hiermit ist klar, dass die Exception auf Zeile 622 von updater.py (Lesen und dekodieren des GZ-Datenstroms) passiert. Ich habe bis jetzt noch nicht bewusst mitbekommen, dass überhaupt jemand die gz-Version der Update-Datei bezieht, da im Regelfall alle Systeme IMMER auch die bz2 Library unterstützt haben. Dies scheint bei @Krawei mit seinem Nightly-RC-Release aber nicht der Fall zu sein.

An diesem Punkt werde ich dann erst mal folgendes ausprobieren:

  1. Ich werde mein Plugin so amputieren, dass es von den MediathekView Servern die gz-Version des Updates holt. Sollte es dann bei mir auch krachen, ist davon auszugehen, dass irgendein Mist bei der Generierung der GZ-Datei auf den MediathekView Update-Servern passiert. Das versuche ich dann mit @alex1702 zu klären. Sollte es aber hier nicht krachen, ist davon auszugehen, dass die gz-Library in @Krawei s nightly-RC-Image irgendein Hau hat.
  2. @nilz90 : könntest Du mal bitte einen vergleichbares Logfile von Deinem FireTV Stick 4k ziehen. Ich würde mal gerne verstehen, ob dort auch die GZ-Version der Update Datei oder die BZ2-Version verarbeitet wird. Das Logfile muss nicht so detailliert sein - INFO Level reicht vollkommen aus da das Plugin alle relevanten Meldungen als INFO ausgibt.

Was mir am wichtigsten ist, ist zu verstehen, ob das Problem nur auf dem Fire TV 4k auftaucht, und falls ja, welche genaue Software-Version das ist. Insbesondere würde ich gerne wissen, ob es Fire TV 4k User gibt die das Problem nicht haben.

nilz90 commented 5 years ago

hab gerade nochmal 18.1 frisch auf dem ftv4k aufgesetzt. Hier wird in der tat die das gz Archiv gezogen. Da ich die release notes jetzt nicht gelesen habe ein log mit 0.6.0 und eins mit 0.6.1

Kodi: Build: Kodi 18.1 Git:20190217-8cfdc89 Compiled: 17.02.19

Fire OS 6.2.5.8 (NS6258/1607)

0.6.1 https://privatebin.net/?a2ddda01e99fe05a#4XG5I/8kWFg3+CovMA/UT2i6Y1afWYMM4r5mlsmvWAs=

0.6.0 https://privatebin.net/?d1b8700a584a0a13#el8US2fYGSeKuDyV9L93NF23r3ptsvvnh8Ff08m4ts0=

Endur commented 5 years ago

Habe Kodi 18.2 RC Nightly Android ARMV7 von heute, 09.03.2019 sowie 0.6.1 vom Kodi Repo. Es wird filmliste-v2db.gz geladen. Folgender Fehler is relevant:

ERROR: [plugin.video.mediathekview-0.6.1:Updater]: gz decompression of "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/plugin.video.mediathekview/filmliste-v2.db.update.gz" to "/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata/addon_data/plugin.video.mediathekview/filmliste-v2.db.update" failed on reading gz file: [Errno 22] Invalid argument

Siehe kodi.log

Fehler ist konstant vorhanden, glaube ich, seit den Alphaversionen von Kodi 18. Unter 17.6 mit dem 0.5 fehlerfrei.

Endur commented 5 years ago

Box ist ein Orbsmart H-01, mit Android 6, baugleich mit dem Eweat R9, eine relativ performanter und stabiler externer Android Mediaplayer, kein Fire TV. Exakt gleiches Verhalten auch mit dem Release 18.1.

Eventuell ein generelles Problem unter Kodi 18 auf Android. Die Entpacker unter "Virtuelle Dateisysteme" / "Archive support" sowie "RAR Archive support" sind installiert.

tuxpoldo commented 5 years ago

Hallo @Krawei , hallo @Endur ,

ich habe soeben meinen Test gemacht, und meine Version des Plugins so beschnitten, dass er die GZ-Version der Datenbank heruntergeladen hat. Resultat: kein Fehler.

Was bedeutet das nun: leider nichts Gutes. Das bedeutet, dass die Python-gzip-Library die in der Kodi-Version für eure Android-Devices enthalten ist, irgendeine Besonderheit hat, die dazu führt, dass das Dekomprimieren schief läuft.

Was können wir jetzt tun? Ein paar Optionen haben wir noch:

  1. Um möglichst Bandbreite zu sparen, werden die zu herunter ladenden Dateien immer mit dem höchsten Kompressionsgrad komprimiert. Möglicherweise stört sich die gz-Library in euren Geräten daran. Ich stelle jetzt auf meinem Server eine Version zum Herunterladen zur Verfügung, die ganz normal komprimiert ist. Um das auszutesten, müsstet ihr mal das Plugin patchen, und zwar die Datei resources/lib/storesqlite.py. Dort findet ihr eine wegkommentierte Zeile 24 mit einer yeasoft.com-url. diese müsst ihr einfach reaktivieren, und dafür die Zeile 25 hingegen deaktivieren durch ein entsprechendes Kommentarzeichen. Solltet ihr dazu nicht in der Lage sein, so kann ich gerne ein gepatchtes Plugin zur Verfügung stellen.
  2. Man könnte mal versuchen, an dem Blocksize-Parameter der Dekumprimierung herumzuspielen. Hier wäre es z.B. sinnvoll mal die halbe größe (4096) oder die doppelte Größe auszuprobieren. DIes befindet sich in der Datei resources/lib/updater.py auf Zeile 604.

Lasst mich wissen, wie es gelaufen ist, oder sagt mir bescheid, wenn ihr gepatchte Versionen des Plugins braucht.

Endur commented 5 years ago

Habe umgestellt, Download nun von der yeasoft url. Der Fehler besteht unverändert.

kodi.log

Kann keine grosse Sache sein, doch wegen diese Fehlers ist das Plugin unter Android seit Kodi 18 nicht mehr funktional. Failed on reading *.gz file ;)

An der Komprimierung scheint es nicht zu liegen, deshalb spare ich mir, den Blocksize-Parameter anzupassen. Die Dekomprimierung funktioniert vermutlich generell nicht.

Zur Zeit versucht das Plugin in einer Schleife wiederholt von https://mvupdate.yeasoft.com/filmliste-v2.db.gz zu laden. Laden ist erfolgreich, das Entpacken aber scheitert jedesmal. Eventuell ein Problem mit den Permissions? Habe keinen detaillierten Durchblick für Android, jedoch einen recht guten für Linux, aber das hilft hier nicht weiter.

tuxpoldo commented 5 years ago

Das ist ein ganz schöner Mist. Im Grunde genommen ist Android ja ein Linux. Nur mit einem ziemlich großen Überbau so dass man vom Linux kaum noch was sieht. Im Userland gibt es dann da auch recht wenig (z.B. kein xz). Es gäbe da 2 Sachen, die Du noch checken könntest:

  1. Ist da eigentlich überhaupt genug Platz um das ganze auszuführen?
  2. Versuche mal in den EInstellungen des Plugins unter den Datenbankeinstellungen die "Schnelle Datenbankaktualisierung" abzuschalten. Dann benutzt er einen komplett anderen Mechanismus. Er holt sich allerdings immer noch eine mit GZ komprimierte Datei (die ist halt nur kleiner - dafür hat er dann aber wesentlich mehr zu tun).
tuxpoldo commented 5 years ago

Ach so! Noch was: Schau doch mal bitte (wenn das überhaupt möglich ist) ob auf der Kiste ein gz ist. Zur Not kann man noch versuchen das Commandline Tool zum Entpacken zu nutzen.

Krawei commented 5 years ago

@tuxpoldo Ich habe gerade deine Option Nr. 1 durch und beobachte das gleiche Verhalten wie endur, auch ein Abschalten der "Schnelle Datenbankaktualisierung" brachte leider keine Abhilfe, siehe: https://privatebin.net/?dca88e8f4ddffada#7DWCBLYp6X/x1xhEZDBOgdecg4LSrleKtIK2BzNRKis=

Wie kann ich prüfen, ob auf meinem Fire TV 4k Stick gz installiert und verfügbar ist? Unter Linux hilft mir "whereis gz", klappt das auch unter Android? Wie ist der ADB-Befehl hier?

Krawei commented 5 years ago

Ich hatte ja bereits einen Bugreport im Kodibereich auf Github aufgemacht und dort vermutet, dass schlciht gzip/gz fehlt. Man hat mich aber abgewatscht und meinte "an uns liegt das nicht" ;) (siehe meinen zweiten Post mit LInk hier oben).

Endur commented 5 years ago

Das ist nicht logisch, denn das Android meiner Box ist zwischen 17.6. und 18.* ganz unverändert und unter 17.6 ging es ja. Also die Suche nach einem systemweiten /usr/local/bin/gz oder ähnlich bringt es nicht. Eher fehlt ein Kodi - interner Entpacker.

tuxpoldo commented 5 years ago

Ehrlich? An diesem Punkt würde ich sagen, dass wir per Ausschluss nachgewiesen haben, dass die gzip-Library im Python vom Kodi einfach nur kaputt ist. Die bz2 Library fehlt hingegen völlig... Da das Problem mit Kodi 17 nicht existierte (da hat es ja noch funktioniert), ist wirklich davon auszugehen, dass es jetzt kaputt ist.....

Endur commented 5 years ago

Ja.

tuxpoldo commented 5 years ago

Damit bin ich mit meinem Latein aber auch am Ende. Wenn Du nicht mit ssh auf dem Stick drauf kommst, habe ich keine Ahnung, wie man rausbekommt ob es innen drin ein gz gibt. Jetzt muss ich mir echt was einfallen lassen.

tuxpoldo commented 5 years ago

Im Moment sehe ich für euch nur 2 Möglichkeiten:

  1. Downgrade auf Kodi 17
  2. MySQL Datenbank mit Manuellem Update über mvupdate Script auf dem NAS
tuxpoldo commented 5 years ago

Ich gebe mich aber noch nicht geschlagen....

Endur commented 5 years ago

Das Binary gz war irgendwo in Kodi 17.6. Manuelles Update auf NAS ist nur ein Workaround. Habe kein NAS ;)

Endur commented 5 years ago

ssh geht. Nicht sicher, ob es unter Android einfach ein locate mit updatedb gibt.

tuxpoldo commented 5 years ago

Ich versuche euch morgen mal eine Version zu bauen, die nach einem externen binary sucht. Mal sehen ob wir das so hinbekommen können.

Krawei commented 5 years ago

Also mit der adb habe ich dank adb shell eine Verbindung zu meinem Fire TV 4K bekommen. Anscheinend ist gzip drauf, gz aber nicht, siehe:

1|mantis:/ $ ls /system/bin/gzip
/system/bin/gzip

Endur commented 5 years ago

Ja, gut. Die Ursache ist - grob - verursacht durch Änderungen in Kodi 18. Verdächtig ist schon, dass die Entpacker nun unter Virtuelle Dateisysteme extrahiert sind. Eventuell funktioniert da irgendwas mit den Pfaden nicht. Nur eine Vermutung.

tuxpoldo commented 5 years ago

Machen wir mal einen Versuch es mit /system/bin/gzip auszupacken. Ich bereite euch morgen mal eine Spezialversion vor. Ach so. SChaut doch mal bitte ob es vielleich auch ein bzip2 bzw. bunzip2 gibt.

tuxpoldo commented 5 years ago

Ich mache dann auch schön viele detaillierte Logausgaben so dass wir sehen können, was passiert. Und jetzt schaue ich "True Detective" weiter....

Krawei commented 5 years ago

@tuxpoldo unter /system/bin ist leider kein bzip2 bzw. bunzip2, nur ein bzcat (?).

Hier mal eine Auflistung: acpi am app_process app_process32 applypatch appops appwidget atrace badblocks base64 basename bcc blockdev bmgr bu bugreport bugreportz bzcat cal cat chcon chgrp chmod chown chroot cksum clear cmd cmp comm content cp cpio cut dalvikvm dalvikvm32 date dd dex2oat dexdump df dirname dmesg dos2unix dpm du dumpsys echo egrep env expand expr fallocate false fdisk fgrep find flock free getenforce getevent getprop grep groups gzip head hid hostname hwclock id idme ifconfig iftop ime inotifyd input insmod ioctl ionice iorenice ip ip6tables ip6tables-restore ip6tables-save iptables iptables-restore iptables-save iw iwpriv kill killall ld.mc libtftpc linker ln load_policy log logcat logname logwrapper losetup ls lsmod lsof lsusb make_ext4fs make_f2fs md5sum media mkdir mke2fs mknod mkswap mktemp modinfo monkey more mount mountpoint mv nandread ndc netstat newfs_msdos nice nl nohup oatdump od ozwpan.sh paste patch patchoat pgrep pidof ping ping6 pkill pm pmap powertop printenv printf prlimit ps pwd readlink realpath reboot renice requestsync restorecon rm rmdir rmmod route run-as runcon schedtest screencap screenrecord secdiscard sed sendevent sensorservice seq service setenforce setprop setsid settings sh sha1sum sleep sm sort split start stat stop strings svc swapoff swapon sync sysctl tac tail tar taskset tc tee telecom time timeout toolbox top touch toybox tr true truncate tty uiautomator ulimit umount uname uniq unix2dos uptime usleep vmstat wc which whoami wipe_fos_flags wm wpa_cli xargs xxd yes Ansonsten: Danke für deine Mühen. Und entspanntes Seriengucken ;).

Endur commented 5 years ago

/system/bin/gzip ist da, habe mit TotalCommander nachgesehen.

tuxpoldo commented 5 years ago

Danke für die Infos. Es ist in der Tat so, dass sowohl das Entpacken einer bz2-Datei als auch das Entpacken einer gz-Datei mit Hilfe der nativen Funktionen der Python-Library die im Kodi enthalten ist ausgeführt wird. Offensichtlich gibt es hier wohl ein Fehler in der Version für eure Platformen. Ich habe jetzt eine Spezialversion des PLugins gebaut, die im Falle eines Fehlers beim Auspacken einer gz-Datei (die ohnehin schon das letzte Fallback ist, weil die Platform nichts anderes unterstützt) jetzt noch einen allerletzten Versuch macht, die Datei mit Hilfe des Kommandozeilen-Tools (falls vorhanden!) versucht.

plugin.video.mediathekview-0.6.1.1.zip

Also: versucht es mal und schickt mir bitte mal die Logausgaben.

tuxpoldo commented 5 years ago

@Krawei und @Endur: Das ZIP ist doch OK, oder muss ich euch die Test-Version irgendwie anders zur Verfügung stellen?

Endur commented 5 years ago

Nein, ich teste in ca. einer Stunde...

tuxpoldo commented 5 years ago

@Endur : Super! Ich bin jetzt echt mal gespannt!

Endur commented 5 years ago

Es funktioniert sofort, Du hast den Fehler gefunden! Ist auch schnell im Vergleich zu 0.5. Eventuell benutzt die in Kodi eingebettete gzip Library andere Parameter. Ziehe jetzt gleich noch das Log, transferiere es per FTP und lade es hier hoch . Danke für Deine Anstrengung. Wenigstens ohne große, weitere Frustrationen...

Endur commented 5 years ago

Calling /system/bin/gzip -d ... Returned 0 :)

kodi.log

Endur commented 5 years ago

Ja, als letzter Fallback mit dem gzip unter /system/bin Ich denke, dieser Fix ist generell notwendig für Android.