von Bud » 06 Okt 2014, 15:05
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.
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;
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.
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.
[code]
// 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;[/code]
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.