Frage zur neuen EPG- Datenbank

  • würde ein executemany auch noch was bringen? also daten pro service in eine liste und dann am schluss einmal das executemany.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • na ja wen ich finally verwende ist es aber aus, ich will ja das es weitergeht auch wenn fehlerhafte events passieren (war im oroiginalcode übrigens auch so, dann würde halt error ausgegeben und der nächste event ins file geschrieben)


    Das Layout der Tabellen ist nicht so schlecht, weil du die vom Anfang zu ende befüllen kannst, insofern bringen massen updates da nicht so viel, solange der cursor am Ande sehen bleibt und du gleich weiter insertest, dann würde z.B. ein commit pro service/sender reichen, das memory is wirklich kein problem selbst wenn du hunderte epg events ohne commits insertest.


    Und du hast vom Plugin schon eine service und eine events liste, da aus den inserts noch eine liste zu machen bringt wenig. Die Datenbanktabellen SIND ja sozusagen die liste wo du mit insersts einfach zeilen appendest. Wie gesagt am schluss sollte ein commit pro service reichen, aber dafür müssen die meisten Fehler gefixed sein, damit er wirjlich alles auf einmal commiten kann.


    Aber ich muss jetzt was anderes machen und Reichi kann auch nicht alles fallen lassen und die Hash routine fixen. Am Abend mache ich neue Version mit dem was wir bis jetzt haben ...

    Einmal editiert, zuletzt von Lost in Translation ()

    • Offizieller Beitrag

    Du hast finally falsch verstanden :winking_face:


    Zitat

    A finally clause is always executed before leaving the try statement, whether an exception has occurred or not.


    Das bricht keine schleifen ab o.Ä.


    PS: Ich kann im Verlauf gerne helfen das ganze zu optimieren / verallgemeinern so dass am Ende evtl eine generische "Python EPG Import Class" rauskommt. Uns fehlt nur leider die Zeit das komplett zu bauen (speziell weil man es viel testen muss, und dazu erstmal daten benötigt etc).

  • Danke, ich bin mit dem anpassen des codes mit euren inputs auch schon fast fertig, sobald das enigma2 dann nicht mehr die memory Leak messages zu hauf ausspuckt kann man es endlich testen und debuggen.


    LG
    gutemine

  • Ich pausiere jetzt mal bis der fix auch auf dem Imagefeed ist, weil sobald ich den hash im derzeitigne Zustand mit ? übergebe ans cursor.execute passiert das:


    exception: Error binding parameter 0 - probably unsupported type.

  • I can't wait :grinning_squinting_face: so I compile from source code the hash maker for mipsel and x86.


    This is a part of the T_Title table readed by Select query:


    Code
    67|-568473839|NEWS DELLA NOTTE|2014-11-28 20:12:04
    68|1894433159|SPRING BREAKDOWN|2014-11-28 20:12:04
    69|1869156271|ALL STARS|2014-11-28 20:22:47


    if I ask to my compiled hash maker to get the hash


    Code
    sdreammato:~/epgtest/murmur_x86$ ./example "ALL STARS"
    Input: "ALL STARS"
    x86_32:  6f690faf
    x86_32_dec: 1869156271


    but if I ask


    Code
    sdreammato:~/epgtest/murmur_x86$ ./example "NEWS DELLA NOTTE"
    Input: "NEWS DELLA NOTTE"
    x86_32:  de1dc711
    x86_32_dec: 3726493457


    Basically I can't get negative hash....where is my mistake? Is the hash len also dependent from the text len?


    Thank you!


    PS: I'm sorry but I don't speak german.

  • I already replied that the hash is an u_32 type - as you found out yourself :smiling_face:

  • OK now I have correct hash on Title, short and extended description.


    The next problem during conversion is: same description and different starting time.
    When I write the events:




    Basically I have two events with same Title and Extended_Descriptio (short_description is missing....but could have the same problem) but different starting time and DVB_Event_id. How to handle this situation?


    Thank you!

    3 Mal editiert, zuletzt von sdreammato ()

  • Title, short and extended description Tables are just to give fast EPG searching with the help of the hash, which means that if you have same entry and same hash you don't need them twice in the description tables.


    You then only need 2 entries in the event table as you found out yourself. For displaying an event enigma2 just needs the hash to quickly pick the long real text(s) from these tables via the hash.


    Otherweise you would have complex tables with multiple entries and complicated where clauses to get unique answers. Ghost simply avoided this problem with the hasp pickup and to get good performance too.


    He probably could explain it better, but I think this is the whole story in a nutshell.

    2 Mal editiert, zuletzt von Lost in Translation ()

  • I check inside the "original" epg.db.


    Is true that Title, Extended_description and Short_Description are unique by hash. Now before writing I check if the hash already exists: if yes I put in T_Data the founded row ID otherwise I add a new row.


    Tomorrow will be a new day!!


    Good night.

  • Ich pausiere jetzt mal bis der fix auch auf dem Imagefeed ist, weil sobald ich den hash im derzeitigne Zustand mit ? übergebe ans cursor.execute passiert das:


    exception: Error binding parameter 0 - probably unsupported type.

    Ich glaube, es wurde korrigiert.
    Ich (als doofer Enduser und nicht-coder) sehe mir jeden Tag diesen Thread an. Im Moment ist es so, als würde ich verhungernd einem Fernsehkoch zusehen, ohne probieren zu dürfen. *Magenknurr* :smiling_face:
    Mal sehen, ob die Zauberer hier noch was funktionierendes zusammenbasteln können.... Bin geduldig.
    Aber eine Box mit nur Now&Next EPG ist wie ein Auto mit 3 Rädern. Hehe.

  • Da ist nicht mehr viel zu zaubern, wenn man alles an Infos und code zusamen hast baut man es zusammen und debugged es bis es funktioniert.


    ABER ins publi git wurde seit fast einer Woche nichts eingechecked, womit die hash routine aus dem enigma2 immer noch nicht funktionieren wird also probiere ich auch nicht weiter bis die tausenden errors weg sind, weil dazwischen die echten zu finden ist mühsam.

  • Yo are welcome to overtake, as I never really wanted this job :grinning_squinting_face:


    But you shoudl read the comments of the DMM developers here in the thread on performance, you should NOT do any commit before you are done then the speed will dramaticlaly improve - the dm70080 and 820 has enough memory to buffer all the inserts before the real commit comes. And you should not re-use the cursor for different tables - one per table where you just insert/append is much more performant.


    In my code that I posted I only had a commit on every insert to be better able to debug and verify the failing inserts. As soon as I moved to 1 insert per channel it already dramatically speed up and I didn't even try with a single commit as I'm still waiting for the hash routine from enigma2 to be checked into the public code.

  • Da ist nicht mehr viel zu zaubern, wenn man alles an Infos und code zusamen hast baut man es zusammen und debugged es bis es funktioniert.

    Wer ist "man"? :smiling_face: Ich leider nicht. Bin nur jemand der unter Now&Next EPG leidet. Das ist wie ein Ferrari auf einem Acker fahren.
    Wäre super nett, wenn Du das zu Ende bauen könntest. Du würdest tausende Mitleidende sehr, sehr glücklich machen.
    Danke im Voraus.

  • Ihr versteht es einfach nicht ... mit wäre super nett ... programmiert es sich auch nicht von alleine.


    Hat schon irgendwer die simple Frage die ich weiter oben gestellt habe beantwortet ob eigentlich das Laden der Feeds mit der version die ich gemacht habe funktioniert (mal unabhängig davon ob sie in die epg.db geladen werden).


    Soooo viel Hilfe kriegst du, weil dafür brauchst du genau 0 programmieren können.


    Aber egal. ich habe versprochen den Ball ins Rollen zu bringen und die Infos zusammen zu tragen und zu beweisen das es eigentlich nur um eine Seite Code geht, wenn Ihr ständig danach fragt ohne was beizutragen wird das wenig helfen.


    ich habe jetzt schon 3x gepostet das ich gerne die fixes die versprochen wurden im enigma2 hätte, weil ich mich nicht unnötig quälen will - womit nachdem das Wochenende fast um ist Ihr halt warten müsst ... und weiter jammern.


    Und ich sehe meine Aufgabe hier nicht darin Leute glücklich zu machen ... sondern schlechtes Gewissen, weil bei den tausenden wären genug Leute dabei die was beitragen könnten aber es nicht tun, und ich als denkbar ungeeigneter der in seinem Leben noch kein CrosEPG oder xmltv benutzt hat, oder je benutzen wird, darf mich hier quälen.


    LG
    gutemine

  • ...darf mich hier quälen.



    Man soll sich nie für ein Hobby quälen. Dann ist es das falsche Hobby.
    Und was ist so schlecht daran, andere glücklich zu machen? Auch wenn Du selber nicht unter EPG-Entzug leiden mußt?