Hi,
derzeit ist es möglich einen Filter vom Typ "Zeit" mit absoluter Beginn- und Endzeit zu definieren (z. B. Beginn: 20:00 Uhr, Ende: 23:00 Uhr).
Ich würde es gut finden, wenn optional auch relative Werte zur aktuellen Systemzeit als Filter definiert und danach gefiltert werden könnte.
Z. B.
Beginn: -1 Stunde in Bezug zur aktuellen Systemzeit
Ende: +2 Stunden in Bezug zur aktuellen Systemzeit
LG
Filter relativ zur aktuellen Zeit
Re: Filter relativ zur aktuellen Zeit
Dafür gibt es die BeanShell-Filterkomponente, einfach folgen Code benutzen:
Code: Alles auswählen
import devplugin.beanshell.BeanShellProgramFilterIf;
import devplugin.Program;
import devplugin.ProgramFieldType;
import java.util.Calendar;
accept(Program p) {
Calendar start = Calendar.getInstance();
start.set(p.getDate().getYear(), p.getDate().getMonth()-1, p.getDate().getDayOfMonth(), p.getHours(), p.getMinutes());
long startMinute = start.getTimeInMillis() / 60000;
long endMinute = startMinute + p.getLength();
long nowMinute = System.currentTimeMillis() / 60000;
// time in minutes before start of program that is acceptable
int acceptablePreTime = 60;
// time in minutes after start of program that is acceptable
int acceptablePostTime = 120;
return ((nowMinute - acceptablePreTime <= startMinute) && (nowMinute + acceptablePostTime >= endMinute));
}
return (BeanShellProgramFilterIf) this;
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Unterstütze die Weiterentwicklung von TV-Browser
Re: Filter relativ zur aktuellen Zeit
Ich habe das mal in eine einfach konfigurierbare und mehrfach verwendbare Filterkomponente, als Plugin programmiert:
http://www.tvbrowser.org/index.php?id=o ... 290451_235
http://www.tvbrowser.org/index.php?id=o ... 290451_235
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Unterstütze die Weiterentwicklung von TV-Browser
Re: Filter relativ zur aktuellen Zeit
Die "RelativeZeitFilterKomponente" habe ich installiert und anschließend einen Filter mit diesem Plugin definiert, jedoch werden keine Sendungen angezeigt. Einstellungen konnte ich auch nirgends vornehmen. Habe ich da irgendwo etwas übersehen?
--------------------------
Danke für den o. a. Code für die BeanShell-Filterkomponente. Nach dem Ausprobieren habe ich mich noch um entschieden und daher den Code geringfügig abgeändert. Erklärung steht am Anfang des nachfolgenden Codes.
Mir ist klar, dass "% (24 * 60)" nicht für jede Tageszeit funktioniert. Ich möchte daher fragen, ob sich irgendwie mit java das Sendungs-Tagesdatum (= aktuell angezeigter Sendungstag) - welches in der Fenstertitelzeile des TV-Browsers links oben steht - auslesen lassen könnte (ev. als Zahl). Damit könnte ich die Aufgabe wahrscheinlich besser lösen. Ein Codeschnipsel der dieses Datum als Zahl zur Verfügung stellt - welchen ich in den o. a. Code einfügen könnte - würde mir genügen. Die Berechnungen damit würde ich dann wahrscheinlich auch als Nicht-Java-Experte hinbekommen.
Danke noch mal für deine Bemühungen und dass du dir dafür Zeit genommen hast.
--------------------------
Danke für den o. a. Code für die BeanShell-Filterkomponente. Nach dem Ausprobieren habe ich mich noch um entschieden und daher den Code geringfügig abgeändert. Erklärung steht am Anfang des nachfolgenden Codes.
Code: Alles auswählen
// Dieser Code für die BeanShell-Filterkomponente im TV-Browser filtert alle Sendungen, welche
// • nach der aktuellen System-Uhrzeit enden (= inkl. laufender Sendung), und
// • vor der aktuellen System-Uhrzeit plus 3 Stunden beginnen,
// • unabhänig vom Datum (also für jeden Tag).
// Funktioniert allerdings nicht immer korrekt:
// • ca.23:00 bis 2:00 Uhr … Fehlende Sendungen wegen Datumsprung um 24:00 bzw. 0:00 Uhr
// • ca. 3:00 bis 9:00 Uhr … Zuviele Sendungen wegen Tageswechsel um 6:00 Uhr
import devplugin.beanshell.BeanShellProgramFilterIf;
import devplugin.Program;
import devplugin.ProgramFieldType;
import java.util.Calendar;
accept(Program p) {
Calendar start = Calendar.getInstance();
start.set(p.getDate().getYear(), p.getDate().getMonth()-1, p.getDate().getDayOfMonth(), p.getHours(), p.getMinutes());
long startMinute = (start.getTimeInMillis() / 60000) % (24 * 60);
long endMinute = startMinute + p.getLength();
long nowMinute = (System.currentTimeMillis() / 60000) % (24 * 60);
long acceptablePreTimeMinutes = 0;
long acceptablePostTimeMinutes = 180;
return ((endMinute >= (nowMinute - acceptablePreTimeMinutes)) && (startMinute <= (nowMinute + acceptablePostTimeMinutes)));
}
return (BeanShellProgramFilterIf) this;
Danke noch mal für deine Bemühungen und dass du dir dafür Zeit genommen hast.
Re: Filter relativ zur aktuellen Zeit
Die Einstellungen befinden sich beim Erstellen einer Filterkomponente von Typ "RelativeZeitFilterKomponente". Ein Filter mit diesem Plugin hört sich falsch an, denn das Plugin fügt nur eine Filterkomponente hinzu, die man dann verwenden kann.Bud hat geschrieben:Die "RelativeZeitFilterKomponente" habe ich installiert und anschließend einen Filter mit diesem Plugin definiert, jedoch werden keine Sendungen angezeigt. Einstellungen konnte ich auch nirgends vornehmen. Habe ich da irgendwo etwas übersehen?
Bud hat geschrieben:Ein Codeschnipsel der dieses Datum als Zahl zur Verfügung stellt - welchen ich in den o. a. Code einfügen könnte - würde mir genügen.
Code: Alles auswählen
Plugin.getPluginManager().getCurrentDate();
Code: Alles auswählen
import devplugin.Plugin;
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Unterstütze die Weiterentwicklung von TV-Browser
Re: Filter relativ zur aktuellen Zeit
Ich habe jetzt ein Update für das Plugin RelativeZeitFilterKomponente hochgeladen. Die Filterkomponente heißt jetzt "Zeit relativ" und man kann dort einstellen, dass der Bezugspunkt nicht die aktuelle Zeit ist, sondern der angezeigte Tag und die aktuelle Tageszeit.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Unterstütze die Weiterentwicklung von TV-Browser