xxv bekommt nicht EPG-Daten nicht mehr auf allen Kanälen?!

  • Hi,


    Zitat

    Original von docschneider
    Eintrag, der NICHT übernommen wurde:


    1) Dump aus dem log-file:

    Code
    2275 (14955) [19:55:25 29.06.2005] $VAR1 = {
      'starttime' => '1120068960',
      'eventid' => '6978',
      'title' => 'Charmed - Zauberhafte Hexen',
      'duration' => '3360',
      'channel' => 'T-8468-8705-16403',
      'description' => 'Nachdem Gideon die Parallelwelt mit der Normalwelt vermischt hat, ist das Gleichgewicht der Welten aus den Angeln gehoben. Es wird nicht mehr dunkel, kleinste Vergehen werden sofort bestraft. Gideon hat sich zu Barbas, dem Dämon der Angst, in die Unterwelt geflüchtet. Zusammen planen die beiden einen Anschlag auf Wyatt. Er tötet Chris und entführt Wyatt in die Unterwelt. Leo, der seine beiden Söhne an Gideon verloren hat, schwört blutige Rache ...',
      'tableid' => '50'
    };


    Im Prinzip erstmal nicht's auffälliges, bitte jetzt noch kontrollieren ob in der XXV-Kanalliste ein Sender exakt mit der Kennung 'T-8468-8705-16403' existiert. (...cmd=clist)
    Denn nach der Stelle mit dumper wird nur noch geprüft ob der Sender überhaupt bekannt kann ist, ansonsten wird nämlich der EPG-Eintrag ebenfalls verworfen...


    Ebenfalls denkbar das bei Ausführung des SQL Statement etwas schief geht,
    Dazu mal die insert Routine wie folgt erweitern : (EPG.pm Zeile 287)



    Andreas

  • Der Sender hat die entsprechende Kennung.
    Das Einfügen des error-outputs liefert keine Fehlermeldung.


    Wie kann ich denn in der Datenbank nach einem epg-Eintrag suchen. Ich bin mit mysql leider nicht so bewandert.

  • Wie's aussieht, ist der Eintrag nicht in der Datenbank. Eine Suche nach Tagesschau brachte hingegen Ergebnisse.
    Gibt es vielleicht noch eine andere Stelle an der Einträge in die Datenbank geschrieben werden, oder werden die Einträge irgendwo vielleicht aus versehen wieder gelöscht (weil sie vielleicht für zu alt gehalten werden)?

  • Veraltete Events werden wie Du bereits gemerkt hast aus der DB gelöscht...
    bzw. zeitlich in OLDEPG zwischengelagert...


    Edit : Ich eine undenkbar Möglichkeit, aber eine mögliche Ursache wäre noch das bei den betroffenen Sendern EventID doppelt vergeben wurden, und dadurch nur die letzte Sendung mit der selben EventID in der DB landet. Man soll nie, nie sagen !


    [PHP]select * from EPG where ( eventid & 0xffff ) = 1234;[/PHP]
    wobei 1234 die vermisst EventID ist... (Doppelungen mit anderen Sendern sind nicht relevant, da die DB-Eventid die Senderkennung im Hiword enthält)

  • Kann es vielleicht sein, dass manche Einträge fälschlicherweise dorthin verschoben werden?
    Habe nämlich gerade den Eintrag von vorhin in OLDEPG entdeckt. Ok, mittlerweile ist die Sendung auch rum. Wie lange dauert das denn, bis eine Sendung in OLDEPG landet?


    Code
    mysql> select * from OLDEPG where title like '%Charmed%';
    
    
    ---------- snip -------------
    
    
    | 1240947278 | Charmed - Zauberhafte Hexen |          | Nachdem Gideon die Parallelwelt mit der Normalwelt vermischt hat, ist das Gleichgewicht der Welten aus den Angeln gehoben. Es wird nicht mehr dunkel, kleinste Vergehen werden sofort bestraft. Gideon hat sich zu Barbas, dem Dämon der Angst, in die Unterwelt geflüchtet. Zusammen planen die beiden einen Anschlag auf Wyatt. Er tötet Chris und entführt Wyatt in die Unterwelt. Leo, der seine beiden Söhne an Gideon verloren hat, schwört blutige Rache ...                 | <undef>    | 2005-06-29 20:14:00 |     2872 | NULL    | 2005-06-29 21:03:53 |
  • Zitat

    Original von docschneider
    Kann es vielleicht sein, dass manche Einträge fälschlicherweise dorthin verschoben werden?
    Habe nämlich gerade den Eintrag von vorhin in OLDEPG entdeckt. Ok, mittlerweile ist die Sendung auch rum. Wie lange dauert das denn, bis eine Sendung in OLDEPG landet?


    Das ist abhängig vom gewähltem Intervall in der Konfiguration des Modules EPG,
    aber sobald eine Sendung abgelaufen ist, unter Timerintervall gerade aktiv ist,
    wird der Eintrag aus Tabelle EPG nach OLDEPG verschoben.


    Und es gibt noch eine "Cleanup routine", die doppelte Einträge eines sender mit der selben Startzeit elemeniert.
    -> SELECT eventid FROM EPG GROUP BY starttime, channel_id having count(*) > 1
    vielleicht ist die zu größzügig. :D
    Mal die Zeilen 261 bis 264 aus kommentieren ...

  • Zitat

    Original von docschneider
    Ich habe die Zeilen auskommentiert, xxv neu gestartet, epurge aufgerufen, aber es hat sich leider nichts getan.


    Dann prüfe doch bitte nochmals, wie oben bereits beschrieben, ob vermisste Einträge in der Tabelle EPG landen.
    Das muss halt mit Einträgen gemacht werden die in der Zunkunft liegen ...
    Denn was aus deinen Daten von OLDEPG nicht ersichtlich war ob alle Daten gültig sind...
    z.B. war CHANNEL_ID = <undef>, was aber nur bei Einträgen von Aufnahmen denkbar ist.


    Andreas

  • Sendungen der betroffenen Sender, die in der Zukunft liegen, landen nicht in der Datenbank. Wenn ich beispielsweise in EPG nach jedem Eintrag mit der channel_id von ProSieben suche, wird gar nichts gefunden.

  • Zitat

    Original von docschneider
    Sendungen der betroffenen Sender, die in der Zukunft liegen, landen nicht in der Datenbank. Wenn ich beispielsweise in EPG nach jedem Eintrag mit der channel_id von ProSieben suche, wird gar nichts gefunden.


    Für mein Verständnis, wie kam "Charmed" nach OLDEPG ? Ist das nur ein Eintrag einer Aufnahme gewesen. (OLDEPG wird von EPG.pm und RECORDS.pm gefüttert)


    Eine Frage wäre noch, laden die Datenwirklich nicht in der DB oder landen sie vielleicht verfälscht, z.B. ohne channel_id in der DB.


    Ansonsten bleibt bloss die Frage was an den drei Zeilen bei sth->prepare/execute, senderspezifisch ist.



    verschiebe mal den dumper mittelbar vor {dbh}->prepare

    Code
    my $eventid = ((($id[-3] + $id[-2] + $id[-1]) & 0xFFFF) << 16) | ($attr->{eventid} & 0xFFFF);
    
    
    +   dumper($attr);
    
    
        my $sth = $obj->{dbh}->prepare('REPLACE INTO EPG(eventid, title, subtitle, description, channel_id, duration, tableid, starttime, addtime) VALUES (?,?,?,?,?,?,?,FROM_UNIXTIME(?),FROM_UNIXTIME(?))');


    und poste wie oben den Eintrag eines vermissten Events.

  • Zitat

    Original von Hulk


    Für mein Verständnis, wie kam "Charmed" nach OLDEPG ? Ist das nur ein Eintrag einer Aufnahme gewesen. (OLDEPG wird von EPG.pm und RECORDS.pm gefüttert)


    Ja, Charmed hatte ich aufgenommen.


    Das andere werde ich gleich mal testen.

  • Zitat

    Original von Hulk
    Eine Frage wäre noch, laden die Datenwirklich nicht in der DB oder landen sie vielleicht verfälscht, z.B. ohne channel_id in der DB.


    Ich denke sie landen gar nicht in der DB. Eine Suche nach Tagesschau brachte Ergebnisse, während die Suche nach Columbo erfolglos blieb.


    Ich muss jetzt leider weg, darum kann ich die dumper-Ausgabe erst morgen posten. Bis dann!

  • Zitat

    Original von Hulk
    verschiebe mal den dumper mittelbar vor {dbh}->prepare

    Code
    my $eventid = ((($id[-3] + $id[-2] + $id[-1]) & 0xFFFF) << 16) | ($attr->{eventid} & 0xFFFF);
    
    
    +   dumper($attr);
    
    
        my $sth = $obj->{dbh}->prepare('REPLACE INTO EPG(eventid, title, subtitle, description, channel_id, duration, tableid, starttime, addtime) VALUES (?,?,?,?,?,?,?,FROM_UNIXTIME(?),FROM_UNIXTIME(?))');


    und poste wie oben den Eintrag eines vermissten Events.


    Hier ein Event, welches angezeigt wird:

    Code
    2367 (10672) [13:02:28 01.07.2005] $VAR1 = {
      'duration' => '5400',
      'channel' => 'T-8468-9985-1',
      'description' => '',
      'tableid' => '50',
      'subtitle' => 'Spielfilm Deutschland 2005',
      'starttime' => '1120241700',
      'eventid' => 15943,
      'title' => 'Meine Schwester und ich'
    };


    Und hier eins, welches nicht angezeigt wird:

    Code
    1834 (10672) [13:02:24 01.07.2005] $VAR1 = {
      'starttime' => '1120241760',
      'eventid' => 7039,
      'title' => 'Hilfe, ich habe ein Date!',
      'duration' => '6120',
      'channel' => 'T-8468-8705-16403',
      'description' => 'Als Stanley seine neue Kollegin Diana zum ersten Mal sieht, trifft ihn Amors Pfeil mitten ins Herz: Sie ist attraktiv, erfolgreich und - das Allerbeste - seit kurzem wieder Single! Gemeinsam mit seinem besten Freund Michael plant er das erste Date mit seiner Traumfrau bis ins kleinste Detail - mit Erfolg, wie es scheint. Doch dann fährt Stanley den Obdachlosen Phil an, und weil der nicht mehr von ihrer Seite weicht, wird aus dem romantischen Abend ein ausgewachsenes Desaster ...',
      'tableid' => '50'
    };


    Was mir jetzt spontan auffällt ist, dass die Reihenfolge der Felder bei beiden Einträgen eine andere ist. Aber das kann wohl kaum der Fehler sein, oder?

  • Ich habe mir gerade nochmal meine Channelliste angesehen und die Channel-IDs miteinander verglichen.



    Die Sender, die mit einem * markiert sind, sind die Sender, deren EPG-Daten nicht in der Datenbank landen.
    Bei genauerem Hinsehen fiel mir auf, dass das genau die Sender mit den Längsten Channel-Ids sind.
    Kann es vielleicht sein, dass das Feld für die Channel-Ids in der Datenbank zu klein ist und die Sendungen deshalb nicht übernommen werden?

  • Zitat

    Original von docschneider
    Die Sender, die mit einem * markiert sind, sind die Sender, deren EPG-Daten nicht in der Datenbank landen.
    Bei genauerem Hinsehen fiel mir auf, dass das genau die Sender mit den Längsten Channel-Ids sind.
    Kann es vielleicht sein, dass das Feld für die Channel-Ids in der Datenbank zu klein ist und die Sendungen deshalb nicht übernommen werden?


    Ich denke die definierten 100 Zeichen sind damit noch nicht überschritten.



    Ich bin erstmal ratlos, da es derart selektiv ist...
    Die Daten kommen in der Funktion an (siehe dumper), landen aber nicht in der Datenbank.
    xpix, kann das ein Quoting Problem sein, wenn z.B. im Feld title/description ein Komma vorkommt ?


    Andreas

  • Ich hab's mal probiert, hier kommt eine Sendung, die anschließend nicht in xxv angezeigt wird:


    Code
    1 Query       REPLACE INTO EPG(eventid, title, subtitle, description, channel_id, duration, tableid, starttime, addtime) VALUES ('2200443802','American Pie',NULL,'Der 17-jährige Highschool-Schüler Jim ist auf sexuellem Gebiet noch völlig unerfahren. Auch seine besten Freunde Oz, Finch und Kevin sind noch männliche Jungfrauen. Als die vier Jungs auf einer Party wieder einmal kein Glück mit den Mädchen haben, beschließen sie, spätestens bis zum Abschlussball in drei Wochen ihre Unschuld zu verlieren. Bei ihren verzweifelten Versuchen, endlich ein Mädchen herumzukriegen, entwickelt jeder seine eigene strategische Vorgehensweise.','T-8468-8705-16403','7320','50',FROM_UNIXTIME('1120328040'),FROM_UNIXTIME('1120304253'))


    Und hier ein, die in XXV angezeigt wird:

    Code
    1 Query       REPLACE INTO EPG(eventid, title, subtitle, description, channel_id, duration, tableid, starttime, addtime) VALUES ('1209418562','MusikantenDampfer','Eine musikalische Kreuzfahrt','','T-8468-9985-1','6300','50',FROM_UNIXTIME('1120328100'),FROM_UNIXTIME('1120304255'))


    Fehler konnte ich in der log-Datei keine entdecken.

  • Mir ist gerade aufgefallen das deine eventid mit 2200443802 zu groß ist. Der int-Type von mysql geht nur bis 2147483647.


    Ändere mal die Definition der Tabelle in EPG.pm:


    CREATE TABLE IF NOT EXISTS $table (
    eventid unsigned int(11) NOT NULL default '0', # <-- unsigned eingefügt
    title varchar(100) NOT NULL default '',
    subtitle varchar(100) default '',
    description longtext,
    channel_id varchar(100) NOT NULL default '',
    starttime datetime NOT NULL default '0000-00-00 00:00:00',
    duration int(11) NOT NULL default '0',
    tableid varchar(100) default '',
    addtime datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (eventid),
    INDEX (starttime),
    INDEX (channel_id)
    ) COMMENT = '$version'


    beende xxv und lösche die alte Tabelle:


    mysql xxv -u root -e "drop table EPG"


    EDIT:
    Ist natürlich alles Unsinn. Richtig ist:


    eventid int(11) unsigned NOT NULL default '0',

  • nibbana
    Du bist mein Held! Es hat funktioniert! Habe jetzt bis auf rheinmaintv, TERRA NOVA, Eurosport und tvnah bei allen Sendern die Programme im XXV. Dass die 4 Sender fehlen ist nicht schlimm, da mich deren Programm ohnehin nicht interessiert. Im Übrigen bin ich mir nicht sicher, ob die 4 besagten Sender überhaupt EPG-Infos senden. Im vdr jedenfalls haben sie keins.


    @hulk / xpix
    Sind die Änderungen in der EPG.pm ausreichend, oder muss der typ noch an anderen Stellen von int zu unsigned int geändert werden?

Jetzt mitmachen!

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