xmltv/grab/fi/fi programme.pm, 2.01, 2.02 programmeStartOnly.pm, 2.00, 2.01
Stefan Becker <[email protected]>
| Newsgroups | gmane.comp.tv.xmltv.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/xmltv/xmltv/grab/fi/fi
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv23505/grab/fi/fi
Modified Files:
programme.pm programmeStartOnly.pm
Log Message:
- refactored programmeStartOnly to use programme class
- added support for season/episode number to programme class
- updated foxtv to set season/episode (completes Feature #102)
- fix mtv3 channel list grabbing
- updated test.conf with latest full channel list
- added --test-mode option to check for empty channel/programme list
Index: programmeStartOnly.pm
===================================================================
RCS file: /cvsroot/xmltv/xmltv/grab/fi/fi/programmeStartOnly.pm,v
retrieving revision 2.00
retrieving revision 2.01
diff -C2 -d -r2.00 -r2.01
*** programmeStartOnly.pm 10 Mar 2011 21:20:11 -0000 2.00
--- programmeStartOnly.pm 1 Nov 2013 22:55:13 -0000 2.01
***************
*** 20,41 ****
fi::common->import();
! sub startProgrammeList() { return([]) }
! sub appendProgramme($$$$$$$) {
! my($programmes, $hour, $minute, $title, $category, $description) = @_;
! push(@{ $programmes }, {
! category => $category,
! description => $description,
! hour => $hour,
! minute => $minute,
! # minutes since midnight
! start => $hour * 60 + $minute,
! title => $title,
! });
}
! sub convertProgrammeList($$$$$$) {
! my($programmes, $id, $language, $yesterday, $today, $tomorrow) = @_;
# No data found -> return empty list
--- 20,48 ----
fi::common->import();
! sub startProgrammeList($$) {
! my($id, $language) = @_;
! return({
! id => $id,
! language => $language,
! programmes => []
! });
! }
! sub appendProgramme($$$$) {
! my($self, $hour, $minute, $title) = @_;
!
! # NOTE: start time in minutes from midnight -> must be converted to epoch
! my $object = fi::programme->new($self->{id}, $self->{language},
! $title, $hour * 60 + $minute);
!
! push($self->{programmes}, $object);
! return($object);
}
! sub convertProgrammeList($$$$) {
! my($self, $yesterday, $today, $tomorrow) = @_;
! my $programmes = $self->{programmes};
! my $id = $self->{id};
# No data found -> return empty list
***************
*** 45,49 ****
my @dates = ($today, $tomorrow);
if ((@{ $programmes } > 1) &&
! ($programmes->[0]->{start} > $programmes->[1]->{start})) {
# Did caller specify yesterday?
--- 52,56 ----
my @dates = ($today, $tomorrow);
if ((@{ $programmes } > 1) &&
! ($programmes->[0]->start() > $programmes->[1]->start())) {
# Did caller specify yesterday?
***************
*** 59,68 ****
my $date = shift(@dates);
my $current = shift(@{ $programmes });
! my $current_start = $current->{start};
! my $current_epoch = timeToEpoch($date, $current->{hour}, $current->{minute});
foreach my $next (@{ $programmes }) {
# Start of next program might be on the next day
! my $next_start = $next->{start};
if ($current_start > $next_start) {
--- 66,77 ----
my $date = shift(@dates);
my $current = shift(@{ $programmes });
! my $current_start = $current->start();
! my $current_epoch = timeToEpoch($date,
! int($current_start / 60),
! $current_start % 60);
foreach my $next (@{ $programmes }) {
# Start of next program might be on the next day
! my $next_start = $next->start();
if ($current_start > $next_start) {
***************
*** 102,114 ****
}
! my $next_epoch = timeToEpoch($date, $next->{hour}, $next->{minute});
! # Create program object
! debug(3, "Programme $id ($current_epoch -> $next_epoch) $current->{title}");
! my $object = fi::programme->new($id, $language, $current->{title},
! $current_epoch, $next_epoch);
! $object->category($current->{category});
! $object->description($current->{description});
! push(@objects, $object);
# Move to next program
--- 111,126 ----
}
! my $next_epoch = timeToEpoch($date,
! int($next_start / 60),
! $next_start % 60);
! my $title = $current->title();
! debug(3, "Programme $id ($current_epoch -> $next_epoch) $title");
!
! # overwrite start & stop times with epoch: see appendProgramme()
! $current->start($current_epoch);
! $current->stop($next_epoch);
!
! push(@objects, $current);
# Move to next program
Index: programme.pm
===================================================================
RCS file: /cvsroot/xmltv/xmltv/grab/fi/fi/programme.pm,v
retrieving revision 2.01
retrieving revision 2.02
diff -C2 -d -r2.01 -r2.02
*** programme.pm 11 Feb 2012 20:31:39 -0000 2.01
--- programme.pm 1 Nov 2013 22:55:13 -0000 2.02
***************
*** 29,35 ****
my($class, $channel, $language, $title, $start, $stop) = @_;
_trim($title);
! croak "${class}::new called without valid title, start or stop"
unless defined($channel) && defined($title) && (length($title) > 0) &&
! defined($start) && defined($stop);
my $self = {
--- 29,35 ----
my($class, $channel, $language, $title, $start, $stop) = @_;
_trim($title);
! croak "${class}::new called without valid title or start"
unless defined($channel) && defined($title) && (length($title) > 0) &&
! defined($start);
my $self = {
***************
*** 65,70 ****
--- 65,102 ----
}
}
+ sub season_episode {
+ my($self, $season, $episode) = @_;
+ # only accept a pair of valid, positive integers
+ if (defined($season) && defined($episode)) {
+ $season = int($season);
+ $episode = int($episode);
+ if (($season > 0) && ($episode > 0)) {
+ $self->{season} = $season;
+ $self->{episode_number} = $episode;
+ }
+ }
+ }
+ sub start {
+ my($self, $start) = @_;
+ $self->{start} = $start
+ if defined($start) && length($start);
+ $start = $self->{start};
+ croak "${self}::start: object without valid start time"
+ unless defined($start);
+ return($start);
+ }
+ sub stop {
+ my($self, $stop) = @_;
+ $self->{stop} = $stop
+ if defined($stop) && length($stop);
+ $stop = $self->{stop};
+ croak "${self}::stop: object without valid stop time"
+ unless defined($stop);
+ return($stop);
+ }
+ # read-only
sub language { $_[0]->{language} }
+ sub title { $_[0]->{title} }
# Convert seconds since Epoch to XMLTV time stamp
***************
*** 99,102 ****
--- 131,136 ----
my $category = $self->{category};
my $description = $self->{description};
+ my $episode = $self->{episode_number};
+ my $season = $self->{season};
my $subtitle = $self->{episode};
***************
*** 158,162 ****
# Example:
#
! # config: series title Batman
# description: Pingviinin paluu. Amerikkalainen animaatiosarja....
#
--- 192,196 ----
# Example:
#
! # config: series description Batman
# description: Pingviinin paluu. Amerikkalainen animaatiosarja....
#
***************
*** 201,204 ****
--- 235,242 ----
debug(4, "XMLTV programme description: $description");
}
+ if (defined($season) && defined($episode)) {
+ $xmltv{'episode-num'} = [[ ($season - 1) . '.' . ($episode - 1) . '.', 'xmltv_ns' ]];
+ debug(4, "XMLTV programme season/episode: $season/$episode");
+ }
$writer->write_programme(\%xmltv);
------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk