Changeset 506

Show
Ignore:
Timestamp:
02/10/07 16:26:37 (6 years ago)
Author:
lincoln
Message:

microgap support for sbsnews

Files:
3 modified

Legend:

Unmodified
Added
Removed
  • grabbers/sbsnews_website

    r504 r506  
    1515 
    1616my $progname = "sbsnews_website"; 
    17 my $version = "0.05"; 
     17my $version = "0.06"; 
    1818 
    1919use LWP::UserAgent; 
     
    3030my $script_start_time = time; 
    3131my %stats; 
    32 my $channels, my $opt_channels; 
     32my $channels, my $opt_channels, my $gaps; 
    3333my $tv_guide; 
    3434 
     
    5858        'offset=i'      => \$opt->{offset}, 
    5959        'channels_file=s' => \$opt->{channels_file}, 
     60        'gaps_file=s'   => \$opt->{gaps_file}, 
    6061        'output=s'      => \$opt->{outputfile}, 
    6162        'fast'          => \$opt->{fast}, 
     
    8889$starttime += (86400 * $opt->{offset}); 
    8990 
    90 &log(sprintf "going to fetch %d days%s of data into %s (%s)", 
     91&log(sprintf "going to %sfetch %d days%s of data into %s (%s)", 
     92        (defined $opt->{gaps_file} ? "micro-gap " : ""), 
    9193        $opt->{days}, 
    9294        ($opt->{offset} ? " (skipping first $opt->{offset} days)" : ""), 
     
    99101        no warnings 'all'; eval <>; die "$@" if $@; 
    100102} else { 
    101         die "WARNING: channels file $opt->{channels_file} could not be read\n"; 
     103        die "WARNING: channels file $opt->{channels_file} could not be read: $!\n"; 
    102104} 
    103105 
     
    106108die "no SBSNEWS channel found in channel lineup from $opt->{channels_file}\n" 
    107109  unless (defined $channels->{'SBS News'}); 
     110 
     111if (defined $opt->{gaps_file}) { 
     112        if (-r $opt->{gaps_file}) { 
     113                local (@ARGV, $/) = ($opt->{gaps_file}); 
     114                no warnings 'all'; eval <>; die "$@" if $@; 
     115        } else { 
     116                die "WARNING: gaps file $opt->{gaps_file} could not be read: $!\n"; 
     117        } 
     118 
     119        die "no SBSNEWS channel in gaps lineup, nothing to do!\n" 
     120          unless ((defined $gaps) && (defined $gaps->{'SBS News'})); 
     121} 
    108122 
    109123&get_sbsnews_data($starttime,$endtime); 
     
    130144        --lang=[s]              set language of xmltv output data (default $opt->{lang}) 
    131145        --channels_file=file    where to get channel data from 
     146        --gaps_file=file        micro-fetch gaps only 
     147 
    132148EOF 
    133149; 
     
    291307                                                next if ($progname eq ""); 
    292308 
    293                                                 my $progstart = strftime "%Y%m%d%H%M",localtime(($start_time + $day_range[($column_is_day[$col])])); 
    294                                                 my $progstop = strftime "%Y%m%d%H%M",localtime(($stop_time + $day_range[($column_is_day[$col])])); 
    295  
    296                                                 &log((sprintf "got prog col %d: start=%d (%s), stop=%d (%s), '%s', day=%d", 
    297                                                   $col,$start_time,$progstart,$stop_time,$progstop,$progname,$column_is_day[$col])) 
    298                                                   if $opt->{debug}; 
    299  
    300309                                                my $prog; 
    301310                                                $prog->{channel} = $channels->{'SBS News'}; 
    302311                                                $prog->{title} = [[ $progname, $opt->{lang} ]]; 
    303                                                 $prog->{start} = $progstart; 
    304                                                 $prog->{stop} = $progstop; 
     312                                                $prog->{starttime} = $start_time + $day_range[($column_is_day[$col])]; 
     313                                                $prog->{stoptime} = $stop_time + $day_range[($column_is_day[$col])]; 
     314 
    305315                                                $prog->{category} = [[ 'News', undef ]] if ($progname =~ /News/i); 
    306316                                                $prog->{daynum} = ($day_range[($column_is_day[$col])] - $currtime) / (60*60*24); 
    307317 
    308                                                 $tv_guide->{$progstart} = $prog; 
     318                                                $tv_guide->{($prog->{starttime})} = $prog; 
     319 
     320                                                &log((sprintf "got prog col %d: start=%d (%s), stop=%d (%s), '%s', day=%d", 
     321                                                  $col,$start_time,$prog->{starttime},$stop_time,$prog->{stoptime},$progname,$column_is_day[$col])) 
     322                                                  if $opt->{debug}; 
     323 
    309324                                                $stats{seen_progs}++; 
    310325                                        } 
     
    350365        my ($raw, $page, $base); 
    351366 
    352         $retrycount = 5 if ($retrycount == 0); 
     367        $retrycount = 8 if ($retrycount == 0); 
    353368        my $request = HTTP::Request->new(GET => $url); 
    354369        $request->header('Accept-Encoding' => 'gzip'); 
     
    362377 
    363378                $stats{http_failed_requests}++; 
    364                 $stats{slept_for} += 10; 
    365                 sleep 10; 
     379                $stats{slept_for} += 20; 
     380                sleep 20; 
    366381        } 
    367382        if (!($response->is_success)) { 
     
    449464                if (($tv_guide->{$prog}->{daynum} >= $opt->{offset}) && 
    450465                    ($tv_guide->{$prog}->{daynum} < $opt->{days})) { 
     466 
     467                        # if we are fetching microgaps, skip if this isn't 
     468                        # in a micro-gap 
     469                        if (defined $opt->{gaps_file}) { 
     470                                my $found_gap_match = 0; 
     471                                foreach my $g (@{($gaps->{'SBS News'})}) { 
     472                                        my ($s, $e) = split(/-/,$g); 
     473 
     474                                        $found_gap_match = 1 if 
     475                                           ((($s >= $tv_guide->{$prog}->{starttime}) && 
     476                                             ($s <= $tv_guide->{$prog}->{stoptime})) || 
     477                                            (($e >= $tv_guide->{$prog}->{starttime}) && 
     478                                             ($e <= $tv_guide->{$prog}->{stoptime})) || 
     479                                            (($s <= $tv_guide->{$prog}->{starttime}) && 
     480                                             ($e >= $tv_guide->{$prog}->{stoptime}))); 
     481                                } 
     482                                if (!$found_gap_match) { 
     483                                        $stats{gaps_skipped}++; 
     484                                        next; 
     485                                } else { 
     486                                        $stats{gaps_included}++; 
     487                                } 
     488                        } 
     489 
     490                        $tv_guide->{$prog}->{start} = POSIX::strftime("%Y%m%d%H%M",localtime($tv_guide->{$prog}->{starttime})); 
     491                        $tv_guide->{$prog}->{stop} = POSIX::strftime("%Y%m%d%H%M",localtime($tv_guide->{$prog}->{stoptime})); 
    451492                        delete $tv_guide->{$prog}->{daynum}; 
     493                        delete $tv_guide->{$prog}->{starttime}; 
     494                        delete $tv_guide->{$prog}->{stoptime}; 
    452495                        &cleanup($tv_guide->{$prog}); 
    453496 
  • grabbers/sbsnews_website.conf

    r271 r506  
    99            'max_days' => 7, 
    1010            'category' => 2, 
     11            'micrograbs' => 1, 
    1112            'quality' => 3, 
    1213            'max_runtime' => '2', 
  • status

    r505 r506  
    44grabber         abc_website         2.07 
    55grabber         abc2_website        2.07 
    6 grabber         sbsnews_website     0.05 
     6grabber         sbsnews_website     0.06 
    77grabber         oztivo              0.14 
    88grabber         jrobbo              0.06