Hi!
Ich bin begeisterter Anwender von XXV, jedoch stören mich die doppelten Autotimer sehr, die z.B. auf Pro7 sehr häufig vorkommen. Damit wird auf meiner Festplatte doppelt so viel Speicherplatz verbraucht, als eigentlich nötig. Außerdem ist die Busbelastung für den Transfer der Daten auch doppelt so hoch, obwohl überflüssig.
Es wurde hier ja schon mal diskutiert, warum es mit XXV zu doppelten Autotimern kommt. Ich beobachte, daß z.B. Pro7 Sendungen die nicht innerhalb der nächsten 2 Tage kommen zwar im EPG hat, jedoch nur sehr mager mit Titel und einem Standardtext. Hieraus kann man also NCIHT schließen, ob eine Sendung bereits aufgezeichnet wurde. Denn der Standardtext ist immer derselbe. Deswegen schalte ich "Ignoriere Wiederholungen" bei den Autotimern standardmäßig aus. Durch die Option kam es bei mir aufgrund der geschilderten Situation nämlich schon des öfteren zu nicht aufgezeichneten Serien.
Ein paar Tage/Stunden vor der Ausstrahlung gibt es dann teilweise noch mehr Informationen im EPG, evtl. auch mit neuer Anfangs- und Endzeit.
Wahrscheinlich auch mit neuer EPG-id, aber da kenne ich mich nicht mit aus.
Die Logik, die XXV hier noch fehlt sollte meines Erachtens nach so lauten:
1) Suche nach Autotimern
2) Für jeden gefundenen Autotimer, überprüfe ob dieser schon in VDR eingetragen wurde.
2a) falls ja, id übereinstimmt, sowei Anfangs- und Endzeiten, dann ist alles OK
2b) falls es einen Timer mit demselben Titel
(denn das ist wohl das einzige, was unverändert bleibt) am selben Tag, auf dem selben Sender gibt
UND sich die Intervalle der Timer überschneiden (!siehe unten!), dann:
ändere die Anfangszeit zu: min[alt.Anfang, neu.Anfang] - Vorlauf
(evtl. andere Berechnung der Zeiten, ich weiß nicht, wie das intern mit
dem Vorlauf gehandhabt wird, aber das Prinzip sollte klar sein)
ändere die Endzeit zu: max[alt.Ende, neu.Ende] + Nachlauf
2c) falls nein, dann trage diesen Timer ein (er scheint neu zu sein)
3) fahre fort mit 2)
Alles anzeigen
Somit kann der neue Timer den alten Timer höchstens LÄNGER, aber nie kürzer machen. Das ist wohl auch im Sinne des Benutzers.
Berechnen, ob sich die Laufzeiten zweier Timer überschneiden würde ich so machen:
Es sind gegeben:
alt.Anfang=UNIX-timestamp der alten Anfangszeit des Timers
alt.Ende=UNIX-timestamp der alten Endzeit des Timers
neu.Anfang=UNIX-timestamp der neuen Anfangszeit des Timers
neu.Ende=UNIX-timestamp der neuen Endzeit des Timers
Zu unterscheiden sind 4 Fälle:
Funktion boolean check_overlap(alt.Anfang, alt.Ende, neu.Anfang, neu.Ende)
{
#1. neuer Timer beginnt vor altem, hört früher oder zeitgleich auf
if (neu.Anfang<=alt.Anfang AND neu.Ende<=alt.Ende) return true;
#2. neuer Timer beginnt vor altem, hört aber nach altem auf
else if (neu.Anfang<=alt.Anfang AND neu.Ende>alt.Ende) return true;
#3. neuer Timer beginnt nach altem, hört früher oder zeitglich auf
else if (neu.Anfang>alt.Anfang AND neu.Ende<=alt.Ende) return true;
#4. neuer Timer beginnt nach altem, hört später auf
else if (neu.Anfang>alt.Anfang AND neu.Ende>alt.Ende) return true;
else return false;
}
Alles anzeigen
So, das wärs dazu und sollte dem leidigen Thema doppelte Autotimer ein Ende bereiten.
xpix: Kannst du das implementieren? Falls ich falsch in der Annahme gehe, daß dies doppelte Autotimer ausschließen würde, dann laß es mich wissen!
Ciao,
Coco.