Frage zur neuen EPG- Datenbank

  • Mal ne ganz anddere Frage zur EPG Datenbank.


    Wann wird diese geschrieben? Also auf hdd, sdcard, usb usw.
    Nur beim Neustart/Herunterfahren?
    Was ist wenn enigma2 zuvor crasht. Dennoch alles weg?


    Beim starten von de import und on standby or restart. Auf was du angebt im system-customize.
    Alles weg im RAM und die schon geschriebene event bleiben.

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

  • msatter


    Da hatte ich einfach das argument für das %s im code vergessen, im Anhang ist eine r6 wo das gefixed ist.


    Ist allerdings erbärmlich wenn die r5 > 50x runtergeladen wurde und erst wieder du es warst der es ordentlich getestet hast und dem das aufgefallen ist :loudly_crying_face:


    Und ich habe doch eine Version vom EPGBackup Plugin hochgeladen wenn Ihr unbedingt die epg.db zusätzlich sichern wollt.


    Alerdings müsste man das Plugin uimschreiben, weil du jetzt viel einfacher eine epg.db Kopie machen kannst - einfach den Pfad ändern, save und Pfad wieder zurück setzen. Und Load einer Sicherung ginge genauso simpel, das sind ganz wenig Zeilen Python.


    Kann ja wer ein EPGdbBackup Plugin draus machen .... auch wenn das eigentlich nicht nötig ist weil die nicht so leicht kaputt zu kriegen ist wie die alte epg.dat und vor allem crashed dann enigma2 nicht mehr.

    7 Mal editiert, zuletzt von Lost in Translation ()

  • Nicht jeder hat gleichzeitig auch drei Journaling Fenster offen stehen und es ist auch was man nicht sieht vermisst man auch nicht direct. Die Funktionalität wird nicht beeinflusst durch Abwesenheit von die "%s"


    Ich habe hier meine epgdb.py editiert so das die Zahler die nur Information um dort "_journal" hinter an zu hangen. Weiter habe ich erklärungs texten angepasst und neue hinzu gefügt. Ich werde auch nach die andere python scripts sehen. Ich werde die epgdb.py duch pm an dich senden dann kannst du erst sehen ob es sinn macht.


    Die Anpassung die ich gemacht habe ist dafür wenn gar kein epg.db anwesend ist. Das kann auf die oft benutze weise vom systemctl stop enigma2 oder wen gerade eine epg.db-journal geschreiben wird und entfernt die epg.db Normaler weise kommen beiden nicht vor aber ich mache gerne Programme "User Proof".


    Cross-EPG is ein super Programm aber die Import auf meine DM8000 ging sehr oft nicht gut und ich benutze zwei XMLTV bestanden nicht und benutzte dann OpenTV oder die Standard EPG. Dein Programm hat nicht so viele Möglichkeiten aber ist sehr zuverlässig und tut was es tun muss.

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

    2 Mal editiert, zuletzt von msatter ()

  • Deine Anpassungen sind schon OK, bis darauf das ich den Sinn eines Loads wenn die epg.db nicht gefunden wird nicht verstehe.


    Der aktuelle code macht dann einfach wenn trot save noch keine dn zum connecten da ist mit dem xml laden weiteru und wenn der erste Event eingetragen werden soll macht die processing routine halt noch einen Versuch die db zu connecten und weil das write in der Zwischenzeit fertig ist funktioniert dieser retry dann auch.


    Und genau deswegen meine ich das DMM das save synchron machen sollte, sprich der code sollte erst zurück kommen wenn die epg.db fertig geschrieben ist.


    Im Moment ist es async - du stösst es zwar an aber dann muss erst (fertig) geschrieben werden und ein unmittelbarer connect geht dann schief.


    Der Retry ist dann zwar nur ein Workaround aber bei mir hat das immer funktioniert wenn ich die epg.db gelöscht hatte.


    Ansonsten passiert es immer wieder dass das save schief geht weil unsere insert transaktion schon die DB locked, du schreibst also eigentlich in eine alte epg.db.


    Ich könnte zwar das begin transaction nach intern zu den inserts schieben, damit nicht gelocked wird aber das ist genauso wenig sauber eine bereits connectete db zu schreiben.


    Wie schon gesagt das save sollte synchron sein oder wenigstens einen optionalen Parameter haben, wo man das erzwingen kann, wenn man es so wie hier braucht.

    2 Mal editiert, zuletzt von Lost in Translation ()

  • Seltsam, ich habe es jetzt mit deinem load Code ausprobiert, scheinbar triggert ein load wenn das save noch nicht fertig ist das der C++ ode wartet bis es fertig ist womit dann das connect gutgeht.


    Irgendwo muss der C++ code sich da scheinbar synchronisieren (na ja es ist irgendwie auch logisch nichts zu laden bevor fertig geschrieben wurde)


    Mir soll es recht sein, ich mach euch eine neue Version damit, Hauptsache es funktioniert wie es sollte und danke fürs rausfinden :smiling_face_with_sunglasses:


    EDIT: habe die r6 gegen eine r7 ersetzt, ich hoffe jetzt sind alle Wünsche erfüllt und wir können entspannt EPG laden :face_with_rolling_eyes:

    3 Mal editiert, zuletzt von Lost in Translation ()

  • Dank und ich muss was du geschrieben hat noch lesen und I habe eine mir das problem die ich habe wenn die epg.db sehr groß das die epg.db-journal noch geschrieben wird und so die Import etwas warten muss.


    deleted


    Ich habe eine "epgdb_path_tempwrite" gemacht und eine warte schleife und isr sehr rudimentär aber ich bin noch eine Anfänger in Python. Es kann sicherlich eleganter.


    Ich habe auch "return false" wieder drin und noch immer my dirty trick to generate epd.db wenn die noch nicht besteht.

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

    2 Mal editiert, zuletzt von msatter ()

  • NEIN ein sleep darfst du im enigma2 nicht machen weil du dir sonst die zahnräder ansehen musst und eine while schleife bis es da ist bringt dir dann die CPU zum Anschlag, nrmal müsste man das mit einem timer machen den du nach x sekunden nachsehen lässt ob es fertig ist.


    Aber was bring es auf das journal zu warten wenn wir es dann mit pragma journal off eh abdrehen ?


    Und der eigentliche Import startet ja eh nicht gleich weil erst die xml geladen und geparsed werden müssen, bis dahin sollte das journal längst geschrieben sein.


    Ich habe nicht umsonst das start mit db connect vom processing getrennt obwohl Reichi uns davon abgeraten hat und meinte wir sollen alles in einer routine machen :face_with_rolling_eyes: Und mit dem retry connect code kann man eh auch das processing direkt aufrufen falls man das mal will.

  • Ich habe es bemerkt das es falsch geht. :frowning_face:


    Das problem is dat die events schön eingelesen werden wahrend die epg.db-journal noch geschrieben wird. Ich habe nur 77MB und das dauert 30 Sekunden um zu schreiben.

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

  • Ja aber sobald du das pragma mit journal auf off stellst wird es sowieso ignoriert, aber wie sich das wirklich verhält habe ich nicht ausprobiert.


    Und wenn das so langsam schreibt ist der stick wo du die epg.db hingelegt hast zu langsam oder synchron gemountet.

    Einmal editiert, zuletzt von Lost in Translation ()

  • Ich teste im /etc/enigma2 weil die stick/SD Karte nicht gemounted ist wenn Enigma gestoppt ist und kann ich auch nicht die epg.db anderen.


    Gehe heute Abend weiter.

    DM.One AIO, DM920, DM7080 archiviert DM8000 aus Dezember 2008 und eine DM600.

  • Ihr könnt Euch gerne bei unseren holländischen Freunden in der XMLTV Pluginsektion austoben und Ihnen EPG Quellen schmackhaft machen, aber ich ändere am Plugin sicher nichts mehr ausser der epg.db Schnittstelle, also der epgdb.py


    Wenn wer eine fork des dortigen git machen will und die bisherigen Sachen einchecken auch gut, aber selbst dann muss er sich selber helfen.

  • Bei OoZooN in der OE2.2 Plugin Sektion zu finden.


    LG
    gutemine

  • Bin heute erst zum Testen des IPKs auf meiner dm8k gekommen.


    Läßt sich per opkg nicht installieren, also händisch kopiert.


    Beim Aufruf der Erweiterungen bekomme ich die Fehlermeldung "no module named gzip".


    Hab also python-compression_2.7.2-r2.17-dream2_mips32el installiert, dann ging es.


    Gerade importiere ich Rytec UK XMLTV.


    Und es ist schon erstaunlich, wie schnell man sich an die rasend schnelle dm7080 gewöhnt hat. Die 8k ist ja sowas von lahm. :smiling_face:

    Alptraumbox. :thumbs_up:

  • Kannst du mir den output von der Installation in telnet posten, wahrscheinlich fehlt da nur eine Depndency - oder du hast opkg update vorher vergessen, worauf auch das fehlende gzip modul hindeutet.


    Aber Danke fürs Testen, dann habe ich mit meinen Anpassungen scheinbar nichts kaputt gemacht.


    Und ja das Laden in die epg.db ist jetzt vergleichbar mit den alten boxen in die epg.dat, also was sollen wir uns weiter anstrengen was die Performance angeht :grinning_squinting_face:

  • In der Tat habe ich vorher kein opkg update gemacht.


    Code
    opkg install *.ipk
    Unknown package 'enigma2-plugin-extensions-xmltvimport-rytec'.
    Unknown package 'enigma2-plugin-extensions-xmltvimport'.
    Collected errors:
     * pkg_hash_fetch_best_installation_candidate: Packages for enigma2-plugin-extensions-xmltvimport-rytec found, but incompatible with the architectures configured
     * opkg_install_cmd: Cannot install package enigma2-plugin-extensions-xmltvimport-rytec.
     * pkg_hash_fetch_best_installation_candidate: Packages for enigma2-plugin-extensions-xmltvimport found, but incompatible with the architectures configured
     * opkg_install_cmd: Cannot install package enigma2-plugin-extensions-xmltvimport.


    Scheint mir aber was anderes zu sein. :winking_face:



    P.S.: Importiert immer noch. :winking_face:

    Alptraumbox. :thumbs_up: