Changeset 754

Show
Ignore:
Timestamp:
06/09/07 02:35:05 (6 years ago)
Author:
paul
Message:

allow tvdb_augment_data parser to attempt fixups and handle failure

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • postprocessors/tvdb_augment_data

    r747 r754  
    2020 
    2121my $progname = "tvdb_augment_data"; 
    22 my $version = "0.03"; 
     22my $version = "0.04"; 
    2323my $mirrorlist_url = 'http://thetvdb.com/interfaces/GetMirrors.php'; 
    2424 
     
    493493 
    494494############################################################################## 
     495# parser xml 
     496 
     497sub parse 
     498{ 
     499        my $data = shift; 
     500 
     501        my $xml_tree; 
     502        eval { $xml_tree = $parser->parse($data); }; 
     503        if (!$xml_tree) { 
     504                Shepherd::Common::log("  xml parse failed, attempting to fixup any missing ;"); 
     505                # fix bad entities without ending ; by adding ; like "anc&#233, Trent" 
     506                $data =~ s/&(amp|quot|gt|lt|#\d+|#x[0-9a-f]+)(?!;)/&$1;/gsi; 
     507 
     508                eval { $xml_tree = $parser->parse($data); }; 
     509                if (!$xml_tree) { 
     510                        Shepherd::Common::log("  xml parse of fixup failed, attempting to elimination any &"); 
     511                        # ignore bad entities without ending ; like "anc&#233, Trent" 
     512                        $data =~ s/&/and/g;      
     513 
     514                        eval { $xml_tree = $parser->parse($data); }; 
     515                } 
     516        } 
     517 
     518        return $xml_tree; 
     519} 
     520 
     521############################################################################## 
    495522# process all xmltv files 
    496523 
     
    598625        my $data = get_url(url => $mirrorlist_url); 
    599626        die "could not gather list of mirrors from $mirrorlist_url\n" if (!$data); 
    600  
    601         my $xml_tree = $parser->parse($data); 
     627        my $xml_tree = &parse($data); 
     628        die "could not parse list of mirrors from $mirrorlist_url\n" if (!$xml_tree); 
     629 
    602630        $d->{tvdb}->{num_mirrors} = $xml_tree->getElementsByTagName("Item")->getLength; 
    603631        for (my $i = 0; $i < $d->{tvdb}->{num_mirrors}; $i++) { 
     
    705733                return; 
    706734        } 
    707  
    708         my $xml_tree = $parser->parse($data); 
     735        my $xml_tree = &parse($data); 
     736        if (!$xml_tree) { 
     737                Shepherd::Common::log("   series parse of ".$d->{tvdb}->{mirror}.$url." failed"); 
     738                $stats{prog_lookup_failed}++; 
     739                return; 
     740        } 
     741 
    709742        my $num_items = $xml_tree->getElementsByTagName("Item")->getLength; 
    710743 
     
    789822                        Shepherd::Common::log("   series detail lookup request of ".$url." failed"); 
    790823                        $stats{series_update_lookup_failed}++; 
    791                         return; 
    792                 } 
    793  
    794                 my $xml_tree = $parser->parse($data); 
     824                        next; 
     825                } 
     826                my $xml_tree = &parse($data); 
     827                if (!$xml_tree) { 
     828                        Shepherd::Common::log("   series detail lookup parse of ".$url." failed"); 
     829                        $stats{series_update_lookup_failed}++; 
     830                        next; 
     831                } 
     832 
    795833                my $num_items = $xml_tree->getElementsByTagName("Item")->getLength; 
    796834 
     
    850888                my $data = get_url(url => $url); 
    851889                if (!$data) { 
    852                         Shepherd::Common::log("   epside detail lookup request of ".$url." failed"); 
     890                        Shepherd::Common::log("   episode detail lookup request of ".$url." failed"); 
    853891                        $stats{episode_update_lookup_failed}++; 
    854                         return; 
    855                 } 
    856  
    857                 my $xml_tree = $parser->parse($data); 
     892                        next; 
     893                } 
     894                my $xml_tree = &parse($data); 
     895                if (!$xml_tree) { 
     896                        Shepherd::Common::log("   episode detail lookup parse of ".$url." failed"); 
     897                        $stats{episode_update_lookup_failed}++; 
     898                        next; 
     899                } 
     900 
    858901                my $num_items = $xml_tree->getElementsByTagName("Item")->getLength; 
    859902 
  • status

    r753 r754  
    1616reconciler      reconciler_mk2      0.27 
    1717postprocessor   imdb_augment_data   0.19 
    18 postprocessor   tvdb_augment_data   0.03 
     18postprocessor   tvdb_augment_data   0.04 
    1919postprocessor   flag_aus_hdtv       0.17 
    2020postprocessor   augment_timezone    0.14