Changeset 555 for grabbers/yahoo7web
- Timestamp:
- 02/25/07 14:59:27 (6 years ago)
- Files:
-
- 1 modified
-
grabbers/yahoo7web (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
grabbers/yahoo7web
r538 r555 8 8 9 9 my $progname = "yahoo7web"; 10 my $version = "0.1 1";10 my $version = "0.12"; 11 11 12 12 use LWP::UserAgent; … … 166 166 sub read_cache 167 167 { 168 # convert old-style Data::Dumper cache to new format169 if (-r "yahoo7web.cache") {170 local (@ARGV, $/) = ("yahoo7web.cache");171 no warnings 'all'; eval <>; die "$@" if $@;172 173 &write_cache;174 unlink "yahoo7web.cache";175 }176 177 168 if (-r $opt->{cache_file}) { 178 my $store = Storable::retrieve($opt->{cache_file}); 179 $data_cache = $store->{data_cache}; 169 my $store; 170 eval { $store = Storable::retrieve($opt->{cache_file}); }; 171 $data_cache->{progs} = $store->{data_cache} if (defined $store->{data_cache}); 172 173 if (defined $store->{day_cache}) { 174 $data_cache->{day} = $store->{day_cache}; 175 176 # age day cache on reading.. 177 for my $url (keys %{($data_cache->{day})}) { 178 if ($data_cache->{day}->{$url}->{fetched} < (time-(4*3600))) { 179 delete $data_cache->{day}->{$url}; 180 $stats{expired_url_from_cache}++; 181 } 182 } 183 } 180 184 } else { 181 185 printf "WARNING: no programme cache $opt->{cache_file} - have to fetch all details\n"; … … 191 195 sub write_cache 192 196 { 193 # cleanup old entries from cache 194 for my $cache_key (keys %{$data_cache}) { 195 my ($starttime, @rest) = split(/:/,$cache_key); 196 if ($starttime < (time-86400)) { 197 delete $data_cache->{$cache_key}; 198 $stats{expired_from_cache}++; 197 # cleanup old prog entries from cache 198 if (defined $data_cache->{progs}) { 199 for my $cache_key (keys %{($data_cache->{progs})}) { 200 my ($starttime, @rest) = split(/:/,$cache_key); 201 if ($starttime < (time-86400)) { 202 delete $data_cache->{progs}->{$cache_key}; 203 $stats{expired_from_cache}++; 204 } 199 205 } 200 206 } 201 207 202 208 my $store; 203 $store->{data_cache} = $data_cache; 209 $store->{data_cache} = $data_cache->{progs} if (defined $data_cache->{progs}); 210 $store->{day_cache} = $data_cache->{day} if (defined $data_cache->{day}); 204 211 205 212 Storable::store($store, $opt->{cache_file}); … … 485 492 486 493 my $url = sprintf "http://au.tv.yahoo.com/tv-guide/?hour=%s&min=%s&date=%s&mon=%s&year=%s&tvrg=%s&next=%s", 487 POSIX::strftime("%H",localtime($starttime )),488 POSIX::strftime("%M",localtime($starttime )),489 POSIX::strftime("%d",localtime($starttime )),490 POSIX::strftime("%m",localtime($starttime )),491 POSIX::strftime("%Y",localtime($starttime )),494 POSIX::strftime("%H",localtime($starttime_midnight)), 495 POSIX::strftime("%M",localtime($starttime_midnight)), 496 POSIX::strftime("%d",localtime($starttime_midnight)), 497 POSIX::strftime("%m",localtime($starttime_midnight)), 498 POSIX::strftime("%Y",localtime($starttime_midnight)), 492 499 $opt->{region}, $currtime; 493 500 … … 515 522 my ($url, $day_num, $day_start) = @_; 516 523 my %chan_map = &build_channel_quirks_map; 517 518 my $data = &get_url($url,5); 519 return if (!$data); 524 my $data; 525 526 if ((defined $data_cache->{day}->{$url}) && 527 (defined $data_cache->{day}->{$url}->{data})) { 528 $data = $data_cache->{day}->{$url}->{data}; 529 $stats{used_cached_day_page}++; 530 } else { 531 $data = &get_url($url,5); 532 return if (!$data); 533 $data_cache->{day}->{$url}->{fetched} = time; 534 $data_cache->{day}->{$url}->{data} = $data; 535 } 520 536 521 537 my $tree = HTML::TreeBuilder->new_from_content($data); … … 635 651 $prog_count++; 636 652 637 if ((!defined $data_cache->{ $cache_key}) &&653 if ((!defined $data_cache->{progs}->{$cache_key}) && 638 654 (!defined $opt->{no_details}) && 639 655 (defined $prog->{event_id}) && … … 650 666 651 667 # if we got additional details from the cache, add them now 652 if (defined $data_cache->{ $cache_key}) {653 foreach my $key (keys %{($data_cache->{ $cache_key})}) {654 $prog->{$key} = $data_cache->{ $cache_key}->{$key};668 if (defined $data_cache->{progs}->{$cache_key}) { 669 foreach my $key (keys %{($data_cache->{progs}->{$cache_key})}) { 670 $prog->{$key} = $data_cache->{progs}->{$cache_key}->{$key}; 655 671 } 656 672 } … … 708 724 ; # nothing 709 725 } elsif ($f eq "subtitle") { 710 $data_cache->{ $cache_key}->{'sub-title'} = [[ $v, $opt->{lang} ]];726 $data_cache->{progs}->{$cache_key}->{'sub-title'} = [[ $v, $opt->{lang} ]]; 711 727 } elsif ($f eq "description") { 712 $data_cache->{ $cache_key}->{desc} = [[ $v, $opt->{lang} ]];728 $data_cache->{progs}->{$cache_key}->{desc} = [[ $v, $opt->{lang} ]]; 713 729 } elsif ($f eq "genre") { 714 730 push(@genre, translate_category($v)); 715 731 } elsif ($f eq "captions") { 716 $data_cache->{ $cache_key}->{subtitles} = [ { 'type' => 'teletext' } ] if ($v eq "true");732 $data_cache->{progs}->{$cache_key}->{subtitles} = [ { 'type' => 'teletext' } ] if ($v eq "true"); 717 733 } elsif ($f eq "start_date") { 718 734 ; # nothing … … 740 756 } 741 757 742 $data_cache->{ $cache_key}->{category} = [[ @genre ]] if ($#genre != -1);758 $data_cache->{progs}->{$cache_key}->{category} = [[ @genre ]] if ($#genre != -1); 743 759 744 760 } else { … … 748 764 } 749 765 750 printf "DEBUG: cached entries for '$cache_key': ".Dumper($data_cache->{ $cache_key})766 printf "DEBUG: cached entries for '$cache_key': ".Dumper($data_cache->{progs}->{$cache_key}) 751 767 if (defined $opt->{debug}); 752 768 }
