// Dieser Code für die BeanShell-Filterkomponente im TV-Browser filtert alle Sendungen, welche
// • ganz oder teilweise im angegebenen 3-Stunden-Zeitbereich laufen,
// • unabhängig vom Datum (also für jeden Tag).
// Getestet bei folgender Software-Einstellung:
// • TV-Browser-Sendungstag dauert von 6:00 bis 6:00 Uhr
// • Systemzeit ist MEZ-Zeit (= UTC-Zeit + 1 Stunde) sowie Sommerzeit (+ 1 Stunde)
// Code-Hinweise:
// • Liegt die Systemzeit zwischen 0:00 und 3:59 Uhr, dann werden 24 Stunden dazugerechnet.
import devplugin.beanshell.BeanShellProgramFilterIf ;
import devplugin.Plugin ;
import devplugin.Program ;
import devplugin.ProgramFieldType ;
import java.util.Calendar ;
accept( Program p )
{
long acceptablePreTimeMinutes = 0 ; // Minuten vor der Systemzeit bzw. Filter-Zeitbereich-Beginn
long acceptablePostTimeMinutes = 180 ; // Minuten nach der Systemzeit bzw. Filter-Zeitbereich-Ende
Calendar programdate = Calendar.getInstance() ;
programdate.setTimeZone( TimeZone.getTimeZone( "GMT" ) ) ;
programdate.set( Plugin.getPluginManager().getCurrentDate().getYear() ,
Plugin.getPluginManager().getCurrentDate().getMonth() - 1 ,
Plugin.getPluginManager().getCurrentDate().getDayOfMonth() ,
0 ,
0 ) ;
Calendar programstart = Calendar.getInstance() ;
programstart.set( p.getDate().getYear() ,
p.getDate().getMonth() - 1 ,
p.getDate().getDayOfMonth() ,
p.getHours() ,
p.getMinutes() ) ;
long nowMinute = Math.floor( ( System.currentTimeMillis() / 60000 ) % 1440 )
+ Math.floor( programdate.getTimeInMillis() / 60000 ) ;
if ( ( Math.floor( System.currentTimeMillis() / 3600000 ) % 24 >= 0 )
&&
( Math.floor( System.currentTimeMillis() / 3600000 ) % 24 <= 3 ) )
nowMinute += 1440 ;
long startminute = programstart.getTimeInMillis() / 60000 ;
long endMinute = startminute + p.getLength() - 1 ;
return ( ( endMinute >= ( nowMinute - acceptablePreTimeMinutes ) )
&&
( startminute <= ( nowMinute + acceptablePostTimeMinutes ) ) ) ;
}
return ( BeanShellProgramFilterIf ) this ;