xmltv/grab/za test.conf, 1.7, 1.8 tv_grab_za, 1.42, 1.43
Geoff <[email protected]>
| Newsgroups | gmane.comp.tv.xmltv.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/xmltv/xmltv/grab/za
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11010
Modified Files:
test.conf tv_grab_za
Log Message:
Site has significantly changed. Rewrote grabber to use pages from a different subdomain.
Index: tv_grab_za
===================================================================
RCS file: /cvsroot/xmltv/xmltv/grab/za/tv_grab_za,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** tv_grab_za 12 May 2011 07:05:51 -0000 1.42
--- tv_grab_za 9 Dec 2013 16:59:02 -0000 1.43
***************
*** 95,99 ****
-
use XMLTV;
use XMLTV::Memoize;
--- 95,98 ----
***************
*** 103,106 ****
--- 102,107 ----
use XMLTV::DST;
use XMLTV::Get_nice;
+ my $cookies = HTTP::Cookies->new;
+ $XMLTV::Get_nice::ua->cookie_jar($cookies);
use XMLTV::Mode;
use XMLTV::Date;
***************
*** 116,120 ****
# Attributes of the root element in output.
my $HEAD = { 'source-info-url' => 'http://www.dstv.com/',
! 'source-data-url' => "http://www.dstv.com/dstv-guide/default.asp",
'generator-info-name' => 'XMLTV',
'generator-info-url' => 'http://xmltv.org/',
--- 117,122 ----
# Attributes of the root element in output.
my $HEAD = { 'source-info-url' => 'http://www.dstv.com/',
! # 'source-data-url' => "http://www.dstv.com/dstv-guide/default.asp",
! 'source-data-url' => "http://mobi.dstv.com/guide/",
'generator-info-name' => 'XMLTV',
'generator-info-url' => 'http://xmltv.org/',
***************
*** 235,238 ****
--- 237,242 ----
or usage(0);
+ # DEPRECATED
+ if (0){
# dstv.com only allows us to grab one of a few fixed day ranges and
# they all start from today. For baseline compliance, data outside
***************
*** 264,267 ****
--- 268,285 ----
}
+ }
+
+ # mobi.dstv.com only allows us to grab for 8 days including today
+ # (for now we will drop the end time of the last programme of the last day
+ # - stop time is optional according to the DTD).
+ #
+ my %allowed_days = (1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8);
+ die "--offset cannot be negative" if defined $opt_offset and $opt_offset < 0;
+ die "--days must be positive" if defined $opt_days and $opt_days <= 0;
+ $opt_offset = 0 if !$opt_offset;
+ $opt_days = 7 if !$opt_days;
+ $opt_days = min($opt_days, 8);
+ my $use_days = 0;
+
***************
*** 357,366 ****
}
! my $bar = new XMLTV::ProgressBar('getting listings', (scalar keys %channels))
if not $opt_quiet;
foreach (keys %channels) {
process_html($_);
! update $bar if not $opt_quiet;
}
$bar->finish() if not $opt_quiet;
--- 375,384 ----
}
! my $bar = new XMLTV::ProgressBar('getting listings', (scalar keys %channels) * $opt_days)
if not $opt_quiet;
foreach (keys %channels) {
process_html($_);
! #update $bar if not $opt_quiet;
}
$bar->finish() if not $opt_quiet;
***************
*** 399,403 ****
# The URI to get listings for a given channel.
! sub dstv_channel_uri( $ ) {
my $ch = shift;
my $mapped = dstv_channel_map($ch);
--- 417,421 ----
# The URI to get listings for a given channel.
! sub dstv_channel_uri( $ ) { # DEPRECATED
my $ch = shift;
my $mapped = dstv_channel_map($ch);
***************
*** 409,413 ****
# Returns the option ID on the DSTV site for a given channel name
! sub dstv_channel_map ($) {
my $ch = shift;
if (!%dstvchannelmap) {
--- 427,431 ----
# Returns the option ID on the DSTV site for a given channel name
! sub dstv_channel_map ($) { # DEPRECATED
my $ch = shift;
if (!%dstvchannelmap) {
***************
*** 417,421 ****
}
! sub mnet_channel_map ($) {
my $ch = shift;
if (!%mnetchannelmap) {
--- 435,457 ----
}
! # The URI to get listings for a given channel.
! sub dstvnew_channel_uri( $$ ) {
! my $ch = shift;
! my $mapped = dstvnew_channel_map($ch);
! die "cannot look up '$ch' in map" if not defined $mapped;
! my $day = shift;
! return "http://mobi.dstv.com/guide/$mapped/$day";
! }
!
! # Returns the option ID on the DSTV site for a given channel name
! sub dstvnew_channel_map ($) {
! my $ch = shift;
! if (!%dstvchannelmap) {
! get_dstvnew_channel_mappings();
! }
! return $dstvchannelmap{$ch};
! }
!
! sub mnet_channel_map ($) { # DEPRECATED
my $ch = shift;
if (!%mnetchannelmap) {
***************
*** 431,435 ****
my $r = undef;
my $subtitle = undef;
! my $episode_num = undef;
my $year = undef;
my $actors = undef;
--- 467,471 ----
my $r = undef;
my $subtitle = undef;
! my $episode_num = undef;
my $year = undef;
my $actors = undef;
***************
*** 466,472 ****
}
! if ($subtitle && $subtitle =~ /^S?(\d+)\/E?(\d+) - (.*)$/) {
$episode_num = ($1-1) . "." . ($2-1) . ".0/1";
! $subtitle = $3;
t "FOUND EPISODE NUMBER: $episode_num";
$category = "series";
--- 502,508 ----
}
! if ($subtitle && $subtitle =~ /^S?(\d+)\/E?(\d+)( - )?(.*)$/) {
$episode_num = ($1-1) . "." . ($2-1) . ".0/1";
! $subtitle = $4;
t "FOUND EPISODE NUMBER: $episode_num";
$category = "series";
***************
*** 556,560 ****
}
! sub process_dstv_html {
my $chanid = shift;
my $name = $channels{$chanid};
--- 592,596 ----
}
! sub process_dstv_html { # DEPRECATED
my $chanid = shift;
my $name = $channels{$chanid};
***************
*** 573,578 ****
}
-
-
# Get time mappings
# get_dstv_time_mappings($data);
--- 609,612 ----
***************
*** 667,672 ****
}
!
! sub process_mnet_html {
my $chanid = shift;
my $name = $channels{$chanid};
--- 701,705 ----
}
! sub process_mnet_html { # DEPRECATED
my $chanid = shift;
my $name = $channels{$chanid};
***************
*** 778,781 ****
--- 811,917 ----
}
+ sub process_dstvnew_html {
+ my $chanid = shift;
+ my $daytograb = shift;
+ my $name = $channels{$chanid};
+
+ my $now = time();
+ my ($data, $prev_r, $r);
+
+ for (my $i=$opt_offset; $i < ($opt_offset + $opt_days); $i++) {
+
+ # get the page and parse to a document object
+ my $result = get_dstvnew($name, $i);
+ my $tree = HTML::TreeBuilder->new();
+ $tree->utf8_mode(1);
+ $tree->parse($result) or die "cannot parse content\n";
+ $tree->eof;
+ #use Data::Dumper; print Dumper($tree);exit;
+
+ # Did we get a listings page?
+ my $page404 = $tree->look_down(_tag => "body")->look_down(_tag => "h1");
+ next if $page404 && $page404->as_text =~ /Page Not Found/;
+
+
+ # Did we get a schedule?
+ # <div class="ui-listings">
+ # <div class="ui-empty">
+ # <p>Sorry, there is no scheduled programme information for the channel and day you have selected.</p>
+ # </div>
+ # </div><!-- end .ui-listings -->
+ #
+ my $nolistings = $tree->look_down(_tag => "div", class => 'ui-empty');
+ next if $nolistings;
+
+
+ # Get the date for this schedule
+ # Can't find a consistent way of getting this :(
+ # so we'll have to assume it matches the request
+ #
+ my $date = POSIX::strftime('%d %B', gmtime( time() + ($i * 86400) ));
+ die 'could not find date of schedule' if !$date;
+
+
+ # Find the main table, and loop through all the table rows
+ # <table id="ui-search-results">
+ # <tr class="ui-listing">
+ # <td class="ui-left">
+ # <span class="ui-time">00:35</span>
+ # </td>
+ # <td class="ui-right">
+ # <h4 class="ui-title">House Of Cards</h4>
+ # <p class="ui-synopsis">'S1/E5'. Claire discovers that her own ambitions are at risk because of her husband's stance on the education bill. Zoe finds that work and play don't have to be mutually exclusive. (16)</p>
+ # </td>
+ # </tr>
+ #
+ # ??? sometimes it seems we get 'div' => 'ui-listings' but other times we get 'table' => 'ui-search-results' !!!
+ my $schedule = $tree->look_down(_tag => 'table', id => 'ui-search-results');
+ #print STDERR 'could not find schedule'."\n" if !$schedule;
+ if (!$schedule) {
+ $schedule = $tree->look_down(_tag => 'div', id => 'ui-listings');
+ }
+ die 'could not find schedule'."\n" if !$schedule;
+ my @shows = $schedule->look_down(_tag => "tr", class => 'ui-listing');
+
+ # Process each programme
+ foreach my $show (@shows) {
+
+ my $time = $show->look_down(class => 'ui-time')->as_text;
+ my $title = $show->look_down(class => 'ui-title')->as_text;
+ my $desc = $show->look_down(class => 'ui-synopsis')->as_text;
+
+ my $rating;
+ if (defined $desc) {
+ $rating = $1 if $desc =~ / \((13|16|18|PG|PG13|R18)\)$/; # any others? is there a better way (e.g. 2 numeric || 4 alpha-num)?
+ }
+ $desc =~ s/\Q($rating)// if $rating;
+
+ my $start = gen_start_time($date, $time, $now);
+ $start = $start . " $TZ";
+
+ my $r = post_process($title, $desc);
+
+ $r->{rating} = [[$rating, "DSTV"]] if $rating;
+ $r->{start} = $start;
+ $r->{channel} = "$chanid.dstv.com";
+
+ if (defined $prev_r) {
+ $prev_r->{stop} = $start;
+ $writer->write_programme($prev_r);
+ }
+ $prev_r = $r;
+
+ }
+ $tree->delete;
+ update $bar if not $opt_quiet;
+
+ }
+
+ # Can't write the last programme since we don't have a stop time or a duration
+ # $writer->write_programme($prev_r) if $prev_r;
+
+ $data = "success";
+ return $data;
+ }
***************
*** 804,809 ****
# }
my %processfuncs = (
! 'dstv' => \&process_dstv_html,
! # 'mnet' => \&process_mnet_html,
);
--- 940,946 ----
# }
my %processfuncs = (
! # 'dstv' => \&process_dstv_html,
! 'dstv' => \&process_dstvnew_html,
! # 'mnet' => \&process_mnet_html,
);
***************
*** 820,826 ****
}
-
-
-
# get channel listing
sub get_channels {
--- 957,960 ----
***************
*** 833,837 ****
# vmlf - Added new link for channel list of premium bouquet
# There are other DSTV bouquets available, each one corresponds to a different bId
! 'DSTV' , 'http://www.dstv.com/dstvsa/content/en/sa/products?bId=1',
);
--- 967,972 ----
# vmlf - Added new link for channel list of premium bouquet
# There are other DSTV bouquets available, each one corresponds to a different bId
! # 'DSTV' , 'http://www.dstv.com/dstvsa/content/en/sa/products?bId=1',
! 'DSTV' , 'http://mobi.dstv.com/?enter=za',
);
***************
*** 863,888 ****
my $tree = HTML::TreeBuilder->new();
! $tree->utf8_mode(1);
$tree->parse($local_data) or die "cannot parse content of channels page\n";
$tree->eof;
! # vmlf - DSTV NEW channel list page url includes all types of channel,
! # so we need filter channels that are inside the videoChannels div
! # to get the tv channels only
! my @list = $tree->look_down(
! _tag => 'span',
! sub {
! $_[0]->look_up(_tag => 'div', id => 'videoChannels') and
! $_[0]->look_up(_tag => 'div', id => 'channel_list') and
! id => 'header_back'
! },
! );
foreach my $entry (@list) {
! my $temp = $entry->right();
!
! $temp =~ /([\w\s&\+!-]+).*\|[^\d]+(\d+)$/;
! my $name = $1;
! my $chanid = $2;
$name =~ s/\s+$//g;
if (exists {map { $_ => 1 } @dstvignorechannels}->{$name}) {
--- 998,1035 ----
my $tree = HTML::TreeBuilder->new();
! $tree->utf8_mode(1);
$tree->parse($local_data) or die "cannot parse content of channels page\n";
$tree->eof;
! # honir : DEPRECATED
! # # vmlf - DSTV NEW channel list page url includes all types of channel,
! # # so we need filter channels that are inside the videoChannels div
! # # to get the tv channels only
! # my @list = $tree->look_down(
! # _tag => 'span',
! # sub {
! # $_[0]->look_up(_tag => 'div', id => 'videoChannels') and
! # $_[0]->look_up(_tag => 'div', id => 'channel_list') and
! # id => 'header_back'
! # },
! # );
! # foreach my $entry (@list) {
! # my $temp = $entry->right();
! #
! # $temp =~ /([\w\s&\+!-]+).*\|[^\d]+(\d+)$/;
! # my $name = $1;
! # my $chanid = $2;
!
! my @list = $tree->look_down( _tag => 'form', id => 'guide-channel-select' )->look_down( _tag => 'option' );
foreach my $entry (@list) {
!
! my $chanrefid = $entry->attr('value');
! next if $chanrefid eq '0' || $chanrefid eq '';
+ my $temp = $entry->as_text();
+ $temp =~ /^(\d*)\s(.*)$/;
+ my $name = $2;
+ my $chanid = $1;
+
$name =~ s/\s+$//g;
if (exists {map { $_ => 1 } @dstvignorechannels}->{$name}) {
***************
*** 899,903 ****
}
! # Bump a YYYYMMDD date by one.
sub nextday {
my $d = shift;
--- 1046,1050 ----
}
! # Bump a YYYYMMDD date by one.
sub nextday {
my $d = shift;
***************
*** 928,932 ****
}
! my @choices = (1,7,14);
my $days = ask_choice("Number of days to retrieve",$choices[2], @choices);
print CONF "option days $days\n";
--- 1075,1080 ----
}
! #my @choices = (1,7,14);
! my @choices = (1,2,3,4,5,6,7,8);
my $days = ask_choice("Number of days to retrieve",$choices[2], @choices);
print CONF "option days $days\n";
***************
*** 955,959 ****
}
! sub update_dstv_eventstate {
# update form state attributes
my $data = shift;
--- 1103,1107 ----
}
! sub update_dstv_eventstate { # DEPRECATED
# update form state attributes
my $data = shift;
***************
*** 975,979 ****
# Initialize cookies and retrieve current channel ID's
! sub get_dstv_channel_mappings {
t "refreshing dstv channel mappings";
--- 1123,1127 ----
# Initialize cookies and retrieve current channel ID's
! sub get_dstv_channel_mappings { # DEPRECATED
t "refreshing dstv channel mappings";
***************
*** 1038,1042 ****
# Initialize cookies and retrieve current channel ID's
! sub get_mnet_channel_mappings {
t "refreshing mnet channel mappings";
--- 1186,1190 ----
# Initialize cookies and retrieve current channel ID's
! sub get_mnet_channel_mappings { # DEPRECATED
t "refreshing mnet channel mappings";
***************
*** 1079,1083 ****
}
! sub get_dstv_time_mappings() {
my $data = shift;
my ($res,$req);
--- 1227,1268 ----
}
! # Initialize cookies and retrieve current channel ID's
! sub get_dstvnew_channel_mappings {
! t "refreshing dstv channel mappings";
!
! my $url = "http://mobi.dstv.com/?enter=za";
!
! my $result = get_url('GET', $url);
! my $chantree = HTML::TreeBuilder->new();
! $chantree->utf8_mode(1);
! $chantree->parse($result) or die "cannot parse content\n";
! $chantree->eof;
!
! my ($channame, $chanid, $channum);
! my @chan_list = $chantree->look_down( _tag => 'form', id => 'guide-channel-select' )->look_down( _tag => 'option' );
! foreach my $chanentry (@chan_list) {
! $chanid = $chanentry->attr('value');
! next if $chanid eq '0' || $chanid eq '';
!
! my $temp = $chanentry->as_text;
! $temp =~ /^(\d*)\s(.*)$/;
! $channum = $1;
! $channame = $2;
!
! $dstvchannelmap{$channame} = $chanid;
! if ($dstvchannelfixups{$channame}) {
! $dstvchannelmap{$dstvchannelfixups{$channame}} = $chanid;
! }
!
! t "Found channel $channame; internal reference $chanid";
! }
!
! $chantree->delete;
!
! t "Refresh successful";
! die "no channels could be found" if not keys %dstvchannelmap;
! }
!
! sub get_dstv_time_mappings() { # DEPRECATED
my $data = shift;
my ($res,$req);
***************
*** 1144,1148 ****
# Download listings for a channel name - refresh mappings if necessary
! sub get_dstv() {
my $channame = shift;
my $url = "http://guide.dstv.com/listing/default.aspx";
--- 1329,1333 ----
# Download listings for a channel name - refresh mappings if necessary
! sub get_dstv() { # DEPRECATED
my $channame = shift;
my $url = "http://guide.dstv.com/listing/default.aspx";
***************
*** 1172,1176 ****
if ($result =~ /^:error:/) {
# Always attempt a refresh of channel mappings once
! get_dstv_channel_mappings();
$mapped = dstv_channel_map($channame);
die "cannot look up '$channame' in map" if not defined $mapped;
--- 1357,1361 ----
if ($result =~ /^:error:/) {
# Always attempt a refresh of channel mappings once
! get_dstv_channel_mappings();
$mapped = dstv_channel_map($channame);
die "cannot look up '$channame' in map" if not defined $mapped;
***************
*** 1190,1196 ****
}
!
!
! sub get_mnet() {
my $channame = shift;
my $data;
--- 1375,1379 ----
}
! sub get_mnet() { # DEPRECATED
my $channame = shift;
my $data;
***************
*** 1229,1235 ****
}
sub init_cookies {
! get_nice('http://guide.dstv.com/listing/default.aspx');
my $bar = new XMLTV::ProgressBar('Initialising cookies', 1)
if not $opt_quiet;
--- 1412,1431 ----
}
+ # Download listings for a channel-day - refresh mappings if necessary
+ sub get_dstvnew() {
+ my $channame = shift;
+ my $daytograb = shift;
+ my $url = dstvnew_channel_uri($channame, $daytograb);
+ #print STDERR $url."\n";
+ my $result = get_url('GET', $url);
+
+ #my $fn = 'grab'.time(); my $fhok = open my $fh, '>', $fn or warning("Cannot open file $fn"); print $fh $result; close $fh;
+
+ return $result;
+ }
sub init_cookies {
! # get_nice('http://guide.dstv.com/listing/default.aspx');
! get_nice('http://mobi.dstv.com/home');
my $bar = new XMLTV::ProgressBar('Initialising cookies', 1)
if not $opt_quiet;
***************
*** 1261,1267 ****
}
-
-
-
sub initialise_ua {
my $cookies = HTTP::Cookies->new;
--- 1457,1460 ----
***************
*** 1280,1285 ****
}
-
-
sub read_config {
my $channels = shift;
--- 1473,1476 ----
***************
*** 1376,1378 ****
if (not $data) {$data = ":error:maximum retries:"};
return $data;
! }
--- 1567,1569 ----
if (not $data) {$data = ":error:maximum retries:"};
return $data;
! }
\ No newline at end of file
Index: test.conf
===================================================================
RCS file: /cvsroot/xmltv/xmltv/grab/za/test.conf,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** test.conf 15 Nov 2010 19:39:32 -0000 1.7
--- test.conf 9 Dec 2013 16:59:02 -0000 1.8
***************
*** 1,70 ****
! #channel 114 AfricaMagic
! #channel 115 AfricaMagic+
! #channel 326 Afro Music
#channel 406 Al Jazeera
! #channel 264 Animal Planet
#channel 120 BBC Entertainment
! #channel 251 BBC Knowledge
! #channel 180 BBC Lifestyle
#channel 400 BBC World News
#channel 411 Bloomberg
#channel 302 Boomerang
#channel 431 BVN
#channel 301 Cartoon Network
#channel 306 Cbeebies
#channel 409 CCTV News
- #channel 447 CCTV4
#channel 320 Channel O
#channel 410 CNBC Africa
#channel 401 CNN International
! #channel 255 Crime & Investigation Network
#channel 446 Deutsche Welle
#channel 121 Discovery Channel
! #channel 172 Discovery HD
! #channel 250 Discovery World
#channel 303 Disney Channel
! #channel 134 e
#channel 124 E! Entertainment Television
! #channel 403 eNews
#channel 432 ERT
! #channel 230 ESPN
! #channel 231 ESPN Classic
! #channel 404 Euro News
! #channel 184 Fashion TV
! #channel 254 HISTORY
! #channel 347 Islam Channel
#channel 308 KidsCo
! #channel 307 KooWee
! #channel 111 kykNET
channel 101 M-Net
! channel 106 M-Net Action
! #channel 170 M-Net HD
! channel 103 M-Net Movies 1
! #channel 175 M-Net Movies 1 HD
! #channel 104 M-Net Movies 2
! #channel 110 M-Net Series
! #channel 105 M-Net Stars
! #channel 112 MagicWorld
! #channel 319 Mindset Learn
! #channel 324 MK
! #channel 321 MTV
#channel 322 MTV Base
! #channel 107 Mzansi Magic
! #channel 261 Nat Geo Wild
! #channel 260 National Geographic
! #channel 407 NDTV247
#channel 305 Nickelodeon
#channel 331 One Gospel
#channel 408 Parliamentary Service
! #channel 430 RAI International
#channel 343 Rhema TV
! #channel 501 RTP International
! #channel 405 Russia Today
! #channel 131 SABC 1
! #channel 132 SABC 2
! #channel 133 SABC 3
#channel 402 Sky News
! #channel 113 SONY
! #channel 412 Summit TV
#channel 201 SuperSport 1
#channel 202 SuperSport 2
--- 1,103 ----
! #channel 261 1 KZN
! #channel 154 AfricaMagic
! #channel 198 AfricaMagic Birthday Channel
! #channel 150 AfricaMagic Entertainment
! #channel 152 AfricaMagic Movies
! #channel 153 AfricaMagic Movies 1
! #channel 155 AfricaMagic World
#channel 406 Al Jazeera
! #channel 183 Animal Planet
! #channel 405 ANN7
! #channel 260 Bay TV
#channel 120 BBC Entertainment
! #channel 184 BBC Knowledge
! #channel 174 BBC Lifestyle
#channel 400 BBC World News
+ #channel 129 Blackbelt TV
#channel 411 Bloomberg
#channel 302 Boomerang
+ #channel 412 Business Day TV
#channel 431 BVN
+ #channel 263 Cape Town TV
#channel 301 Cartoon Network
#channel 306 Cbeebies
+ #channel 133 CBS Action
+ #channel 134 CBS Drama
+ #channel 132 CBS Reality
+ #channel 447 CCTV 4
#channel 409 CCTV News
#channel 320 Channel O
#channel 410 CNBC Africa
#channel 401 CNN International
! #channel 122 Comedy Central
! #channel 170 Crime & Investigation Network
#channel 446 Deutsche Welle
#channel 121 Discovery Channel
! #channel 180 Discovery HD
! #channel 171 Discovery ID
! #channel 187 Discovery World
#channel 303 Disney Channel
! #channel 309 Disney Junior
! #channel 304 Disney XD
! #channel 340 Dumisa
#channel 124 E! Entertainment Television
! #channel 194 e.tv
! #channel 403 eNews Channel Africa
#channel 432 ERT
! #channel 414 Euro News
! #channel 178 Fashion TV
! #channel 175 Food Network
! #channel 125 FOX
! #channel 126 FOX Crime
! #channel 186 HISTORY
! #channel 347 iTV
! #channel 310 JimJam
#channel 308 KidsCo
! #channel 144 kykNET
! #channel 145 kykNET & Kie
! #channel 146 KykNET Musiek
channel 101 M-Net
! channel 110 M-Net Movies Action
! #channel 106 M-Net Movies Action+
! #channel 104 M-Net Movies Comedy
! #channel 105 M-Net Movies Family
! channel 103 M-Net Movies Premiere
! #channel 107 M-Net Movies Romance
! #channel 108 M-Net Movies Showcase
! #channel 111 M-Net Movies Stars
! #channel 139 M-Net Movies Zone
! #channel 114 M-Net Series Reality
! #channel 113 M-Net Series Showcase
! #channel 115 M-Net Series Zone
! #channel 162 Magic World
! #channel 140 MGM
! #channel 319 Mindset
! #channel 130 MTV
#channel 322 MTV Base
! #channel 164 Mzansi Bioskop
! #channel 161 Mzansi Magic
! #channel 321 Mzansi Magic Music
! #channel 163 Mzansi Wethu
! #channel 182 Nat Geo Wild
! #channel 181 National Geographic
! #channel 413 NDTV247
! #channel 199 Nelson Mandela Tribute Channel
#channel 305 Nickelodeon
#channel 331 One Gospel
#channel 408 Parliamentary Service
! #channel 415 Peoples Weather
! #channel 430 RAI Italia
#channel 343 Rhema TV
! #channel 435 RTP International
! #channel 407 Russia Today
! #channel 191 SABC 1
! #channel 192 SABC 2
! #channel 193 SABC 3
! #channel 404 SABC News
#channel 402 Sky News
! #channel 127 SONY
! #channel 128 SONY MAX
! #channel 112 Studio Universal
! #channel 173 Style
#channel 201 SuperSport 1
#channel 202 SuperSport 2
***************
*** 74,95 ****
#channel 206 SuperSport 6
#channel 207 SuperSport 7
#channel 200 SuperSport Blitz
! #channel 171 SuperSport HD
! #channel 174 SuperSport HD 2
! #channel 208 SuperSport MaXimo 1
#channel 341 TBN
! #channel 109 TCM
! #channel 232 TellyTrack
! #channel 182 The Home Channel
! #channel 183 The Style Network
! #channel 325 Trace TV
! #channel 181 Travel Channel
! #channel 607 TV5 Monde Afrique
! #channel 108 Universal Channel
! #channel 323 VH-1
! #channel 123 Vuzu
! #channel 415 Weather24
! #channel 125 Zone Reality
! option days 14
option retries 3
! option timeout 240
--- 107,137 ----
#channel 206 SuperSport 6
#channel 207 SuperSport 7
+ #channel 208 SuperSport 8
+ #channel 209 SuperSport 9
#channel 200 SuperSport Blitz
! #channel 211 SuperSport HD 1
! #channel 212 SuperSport HD 2
! #channel 213 SuperSport HD 3
! #channel 214 SuperSport HD 4
! #channel 215 SuperSport HD 5
! #channel 216 SuperSport HD 6
! #channel 221 SuperSport MaXimo 1
! #channel 229 SuperSport Select
#channel 341 TBN
! #channel 118 Telemundo
! #channel 239 TellyTrack
! #channel 176 The Home Channel
! #channel 172 TLC Entertainment
! #channel 188 TRACE Sport Stars
! #channel 325 TRACE Urban
! #channel 179 Travel Channel
! #channel 138 True Movies 1
! #channel 262 Tshwane TV
! #channel 137 Turner Classic Movies
! #channel 437 TV5 Monde Afrique
! #channel 117 Universal Channel
! #channel 323 VH1 Classic
! #channel 116 Vuzu
! option days 3
option retries 3
! option timeout 30
------------------------------------------------------------------------------
Sponsored by Intel(R) XDK
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
xmltv-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xmltv-commit