Weder Episodennummer noch Season trotz OMDB

Neue Plugins usw. Also alles was kein Problem/Verbesserungsvorschlag ist ;).
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

Hallo Leute,

in meinem ersten Post möchte ich mich erst einmal für dieses tolle Programm bedanken, hab allerdings noch eine Frage. Zum Beispiel beim Mentalist (Sat1) kommen die Programmdaten offensichtlich aus der OMDB. Es wird jedoch keine Episodennummer und keine Season angezeigt, obwohl diese beiden Daten eigentlich vorhanden sind (was man sieht, wenn man den OMDB-Link im Browser öffnet). Was ist der Grund dafür, dass Episodennummer und Season in diesem Fall im TVBrowser nicht angezeigt werden?

Viele Grüße, Wolpers
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von ds10 »

Die Daten kommen nicht aus der Omdb, sondern ausschließlich die Beschreibung bei einigen privaten Sendern.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

Dann muss die Frage halt lauten, warum zusätzlich zur Beschreibung nicht auch noch Episodennummer und Season aus der OMDB kommen. :wink: Die Daten sind dort ja vorhanden und werden auf der Seite der Serienfolge angezeigt.
Jo
Site Admin
Beiträge: 11805
Registriert: 07 Apr 2006, 23:39

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von Jo »

Weil die öfter nicht stimmen (z.B. wenn Staffel zwischendrin fehlt) und zuviel Mix aus den Quellen nicht gut ist.
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

Hmmmm OK, ich hatte mir daher zwischenzeitlich überlegt, vielleicht ein Plugin zu schreiben, das fehlende Episodennummern oder Seasons ergänzt. Allerdings hat die Program-Klasse keine Setter-Methoden. Ist das Verändern oder Ergänzen von Programm-Daten aus Plugins heraus nicht möglich?
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von ds10 »

"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

Ah Danke, hatte nicht gesehen, dass Program nur ein Interface ist und dass es mit MutableProgram eine Implementierung gibt, die auch die Setter enthält. :D
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

Hab mal testweise ein kleines Plugin geschrieben, das die Beschreibung bei Sky Atlantic HD dazu nutzt, Episodennummer und Season zu generieren. Beschreibungen von Serien beginnen dort interessanterweise immer mit "x. Staffel, Folge y:". Das Generieren von Episodennummer und Season klappt wunderbar, allerdings wird die veränderte Beschreibung (habe "x. Staffel, Folge y:" entfernt) nicht gespeichert, obwohl ich setWasChangedByPlugin am Ende von handleTvDataAdded aufrufe. Muss man zum Speichern der Änderung noch was aufrufen?
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von ds10 »

Erstmal setWasChangedByPlugin solltest du gar nicht aufrufen, das macht TV-Browser selbst.
Zweitens werden die Änderungen nur auf neue Daten angewandt, also hast du möglicherweise nur die falschen Sendungen überprüft.
Drittens muss natürlich auch für den Typ die korrekte Setter-Methode aufgerufen werden (hier setIntField).
Und viertens kannst du nicht einfach irgendwo die Daten herholen, da die einem Copyright unterliegen.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

1) Naja, dann stimmt aber die JavaDoc von setWasChangedByPlugin nicht... :wink:
2) Nee, ich meine sogar Unterschiede zwischen dem, was ich zunächst im Debugger und anschließend im TVBrowser gesehen habe.
3) setDescription erwartet einen String. Ist also nicht möglich, hier großartig was falsch zu machen.
4) Hmmmmmm, ich "kopiere" doch lediglich Episoden- und Season-Info aus der Beschreibung/Originalfolge in die eigentlich dafür vorgesehenen aber nicht verwendeten Felder.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von ds10 »

wolpers0815 hat geschrieben:1) Naja, dann stimmt aber die JavaDoc von setWasChangedByPlugin nicht... :wink:
Es schadet auch nicht, wenn man das aufruft und es kann auch gut sein, dass TV-Browser das bei 2.2.2 noch nicht selbst aufgerufen hat. Und dadurch wird das JavaDoc dieser Methode auch nicht falsch, denn die macht genau das, was das JavaDoc sagt. Falsch ist wohl eher, dass dort nicht mehr die richtige Methode genannt wird.
wolpers0815 hat geschrieben:2) Nee, ich meine sogar Unterschiede zwischen dem, was ich zunächst im Debugger und anschließend im TVBrowser gesehen habe.
3) setDescription erwartet einen String. Ist also nicht möglich, hier großartig was falsch zu machen.
Ich dachte du wolltest die Episodennummern einfügen, dafür gibt es ja spezielle Felder.

Code: Alles auswählen

mutableProgram.setIntField(ProgramFieldType.EPISODE_NUMBER_TYPE,1);
mutableProgram.setIntField(ProgramFieldType.SEASON_NUMBER_TYPE,3);
Und du hast auch die richtige Methode überschrieben?

Code: Alles auswählen

public void handleTvDataAdded(MutableChannelDayProgram newProg) {
und nicht etwa:

Code: Alles auswählen

public void handleTvDataAdded(ChannelDayProgram newProg) {
wolpers0815 hat geschrieben:4) Hmmmmmm, ich "kopiere" doch lediglich Episoden- und Season-Info aus der Beschreibung/Originalfolge in die eigentlich dafür vorgesehenen aber nicht verwendeten Felder.
Spielt keine Rolle, du holst es aus einer Datenbank und die ist geschützt, es sei denn sie erlauben die Verwendung der Daten.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

Einerseits verwende ich a) handleTvDataAdded(MutableChannelDayProgram newProg), um neu hinzugefügte Sendungen zu verarbeiten. Andererseits nutze ich getButtonAction(), um über alle bereits vorhandenen, noch nicht verarbeiteten Sendung "drüberzulaufen". D.h. Episodennummer und Season aus der Beschreibung in die entsprechenden Felder kopieren. Und umgekehrt. Bei Sky Atlantic HD hat es sich als äußerst sinnvoll/hilfreich erwiesen, wenn die Beschreibung mit Season und Episodennummer beginnt.

Das Setzen der Episodennummer- und Season-Felder funktioniert sowohl bei a) als auch bei b), das Ergänzen der Beschreibung bei a) bzw. bei b) nur temporär. D.h. nach einem TVBrowser-Neustart sind die Beschreibungen wieder auf ihrem vorherigen Stand.

Aber wenn das eh alles nicht erlaubt ist, ist es eh Wurscht. :cry:
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von ds10 »

Ein Beispiel für das Verändern der Daten ist das DescriptionInfoTextEraserPlugin, und dort sieht die entscheidende Methode so aus:

Code: Alles auswählen

  public void handleTvDataAdded(MutableChannelDayProgram channelDayProgram) {
    if(channelDayProgram.getChannel().getDataServiceProxy().getId().equals("tvbrowserdataservice.TvBrowserDataService")) {
      for(int i = 0; i < channelDayProgram.getProgramCount(); i++) {
        if(channelDayProgram.getProgramAt(i).getShortInfo() != null &&
            channelDayProgram.getProgramAt(i).getShortInfo().indexOf("keine Beschreibung") != -1 &&
            channelDayProgram.getProgramAt(i).getShortInfo().indexOf("WirSchauen") != -1) {
          ((MutableProgram)channelDayProgram.getProgramAt(i)).setShortInfo(null);
          ((MutableProgram)channelDayProgram.getProgramAt(i)).setDescription(null);
        }
      }
    }
  }
Die Beschreibung ist auch nach einem Neustart von TV-Browser weiterhin gelöscht, sie werden also auch gespeichert.
Dass Änderungen außerhalb dieser Methode nur temporär wirken ist klar, denn die werden nicht gespeichert.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
wolpers0815
Junior Member
Beiträge: 21
Registriert: 24 Jul 2013, 16:42

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von wolpers0815 »

OK, Gründe, warum man nachträglich keine Daten mehr ändern kann sondern nur innerhalb von handleTvDataAdded(MutableChannelDayProgram channelDayProgram), fallen mir keine ein. :)

Dennoch gibt es auch innerhalb von handleTvDataAdded Situationen, in denen die im Plugin definitiv veränderten Daten nicht als solche im TVBrowser angezeigt werden. Das passiert dann, wenn man sich mit dem Debugger "zu lange" in handleTvDataAdded aufhält oder wenn die Verarbeitung in handleTvDataAdded "zu lange" dauert. Es sieht so aus, als gibt es irgendwo im TVBrowser einen Timeout, der beim Erreichen dafür sorgt, dass Änderungen an diesem zu langsam veränderten channelDayProgram ignoriert werden.
Noch mal mit anderen Worten: wenn zwischen Betreten und Verlassen von handleTvDataAdded zu viel Zeit vergeht, werden Änderungen an channelDayProgram nicht berücksichtigt.

Warum ist das so? Wie groß ist dieser Timeout? Kann man ihn verändern?

Viele ratlose Grüße, Wolpers
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: Weder Episodennummer noch Season trotz OMDB

Beitrag von ds10 »

Es ist ganz einfach TV-Browser speichert nur zu einem Zeitpunkt die Daten ab und ein Plugin hat 10 Sekunden Zeit Änderungen an den Daten vorzunehmen. Ganz einfach deshalb, damit nicht ein Plugin, was nicht sauber arbeitet, den Update-Vorgang blockieren kann. 10 Sekunden sind sehr viel Zeit für die Bearbeitung von Sendungen, es ist auch nicht vorgesehen, dass ein Plugin erst das ganze Internet abgrast um Änderungen vorzunehmen.

Wenn man sich vorstellt man hat 30 Sender und aktualisiert für 14 Tage und hat 10 Plugins installiert, dann ergibt die Wartezeit von 10 Sekunden 30 Sender * 14 Tage * 10 Plugins * 10 Sekunden = 42000 Sekunden oder 11 Stunden 40 Minuten wenn alle Plugins die Wartezeit ausnutzen. Daran sieht man die 10 Sekunden sind schon sehr großzügig.

Könnten auch zwischen den Datenupdates Änderungen vorgenommen werden, wären die Daten nicht konsistent, denn wenn dein Plugin dies könnte, dann könnten das auch alle anderen.

Auf jeden Fall wären am Ende wir es, die die Klagen bekämen, dass das Datenupdate nicht funktioniert.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Antworten