Changeset 1473


Ignore:
Timestamp:
09/23/13 22:15:36 (4 years ago)
Author:
mbarry
Message:

metacritic postprocessor: Correct titles with apostrophes, recognize soft 404 pages.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/postprocessors/metacritic

    r1419 r1473  
    55 
    66my $progname = "metacritic"; 
    7 my $version = "1.0"; 
     7my $version = "1.1"; 
    88 
    99use XMLTV; 
     
    119119 
    120120        $title =~ s/ /-/g; 
    121         $title =~ s/://g; 
     121        $title =~ s/[:']//g; 
    122122        $title =~ s/ \& / /g; 
    123123        $title = lc($title); 
     
    266266        else 
    267267        { 
    268  
    269268            my $tree = HTML::TreeBuilder->new_from_content($html); 
    270269 
    271270            # verify that it's the correct show! 
    272             my $date; 
    273             my $block = $tree->look_down('_tag' => 'li', 'class' => 'summary_detail release_data'); 
    274             if ($block and $block->as_text() =~ /, ([\d]{4})$/) 
     271            if ($tree->look_down('_tag' => 'div', 'class' => 'error_msg')) 
    275272            { 
    276                 $date = $1; 
    277             } 
    278             if ($prog_year != $date) 
    279             { 
    280                 &Shepherd::Common::log("  skipping show, is year $date, should be $prog_year") if ($opt->{debug}) 
     273                &Shepherd::Common::log("  404 Not found") if ($opt->{debug}); 
    281274            } 
    282275            else 
    283276            { 
    284                 if ($opt->{debug}) 
    285                 { 
    286                     &Shepherd::Common::log("  match: augmenting data"); 
     277                my $date; 
     278                my $block = $tree->look_down('_tag' => 'li', 'class' => 'summary_detail release_data'); 
     279                if ($block and $block->as_text() =~ /, ([\d]{4})\b/) 
     280                { 
     281                    $date = $1; 
     282                } 
     283                if (!$date) 
     284                { 
     285                    &Shepherd::Common::log("  skipping show, could not establish date" . $block->as_HTML()) if ($opt->{debug}); 
     286                } 
     287                elsif ($prog_year != $date) 
     288                { 
     289                    &Shepherd::Common::log("  skipping show, is year $date, should be $prog_year") if ($opt->{debug}) 
    287290                } 
    288291                else 
    289292                { 
    290                     &Shepherd::Common::log("- $movie_title: found data"); 
    291                 } 
    292  
    293  
    294                 # 
    295                 # augment data 
    296                 # 
    297  
    298                 # Description 
    299  
    300                 my $prog_desc; 
    301                 if (!defined $prog->{desc} or !defined $prog->{desc}->[0] or !defined $prog->{desc}->[0]->[0]) 
    302                 { 
    303                     $prog_desc = ''; 
    304                 } 
    305                 else 
    306                 { 
    307                     $prog_desc = $prog->{desc}->[0]->[0]; 
    308                 } 
    309  
    310                 my $block = $tree->look_down('_tag' => 'div', 'class' => 'summary_detail product_summary'); 
    311                 if ($block) 
    312                 { 
    313                     my $desc = $block->as_text(); 
    314                     $desc =~ s/^Summary:\s*//; 
    315  
    316                     &Shepherd::Common::log("  Metacritic desc: $desc") if ($opt->{debug}); 
    317  
    318                     if ($desc and length($desc) > 20 and length($prog_desc) < 20) 
    319                     { 
    320                         $prog_desc = $desc; 
    321                     } 
    322                 } 
    323  
    324                 # Ratings 
    325  
    326                 my $critic_rating; 
    327                 my $user_rating; 
    328  
    329                 $block = $tree->look_down('_tag' => 'div', 'class' => 'metascore_wrap feature_metascore'); 
    330                 if ($block) 
    331                 { 
    332                     my $span = $block->look_down('_tag' => 'span', 'class' => 'score_value'); 
    333                     if ($span) 
    334                     { 
    335                         $critic_rating = $span->as_text(); 
    336                     } 
    337                 } 
    338  
    339                 $block = $tree->look_down('_tag' => 'div', 'class' => 'userscore_wrap feature_userscore'); 
    340                 if ($block) 
    341                 { 
    342                     my $span = $block->look_down('_tag' => 'span', 'class' => 'score_value'); 
    343                     if ($span) 
    344                     { 
    345                         $user_rating = $span->as_text(); 
    346                     }    
    347                 } 
    348  
    349                 if ($critic_rating)  
    350                 { 
    351                     $prog->{'star-rating'} = [ ] unless (ref $prog->{'star-rating'}); 
    352                     &Shepherd::Common::log("  Metascore: $critic_rating / 100"); 
    353                     push @{$prog->{'star-rating'}}, [ "$critic_rating/100", "Metacritic Metascore", undef ]; 
    354                 } 
    355                 if ($user_rating) 
    356                 { 
    357                     $prog->{'star-rating'} = [ ] unless (ref $prog->{'star-rating'}); 
    358  
    359                     &Shepherd::Common::log("  User Score: $user_rating / 10"); 
    360  
    361                     push @{$prog->{'star-rating'}}, [ "$user_rating/10", "Metacritic User Score", undef ]; 
     293                    if ($opt->{debug}) 
     294                    { 
     295                        &Shepherd::Common::log("  match: augmenting data"); 
     296                    } 
     297                    else 
     298                    { 
     299                        &Shepherd::Common::log("- $movie_title: found data"); 
     300                    } 
     301 
     302 
     303                    # 
     304                    # augment data 
     305                    # 
     306 
     307                    # Description 
     308 
     309                    my $prog_desc; 
     310                    if (!defined $prog->{desc} or !defined $prog->{desc}->[0] or !defined $prog->{desc}->[0]->[0]) 
     311                    { 
     312                        $prog_desc = ''; 
     313                    } 
     314                    else 
     315                    { 
     316                        $prog_desc = $prog->{desc}->[0]->[0]; 
     317                    } 
     318 
     319                    my $block = $tree->look_down('_tag' => 'div', 'class' => 'summary_detail product_summary'); 
     320                    if ($block) 
     321                    { 
     322                        my $desc = $block->as_text(); 
     323                        $desc =~ s/^Summary:\s*//; 
     324 
     325                        &Shepherd::Common::log("  Metacritic desc: $desc") if ($opt->{debug}); 
     326 
     327                        if ($desc and length($desc) > 20 and length($prog_desc) < 20) 
     328                        { 
     329                            $prog_desc = $desc; 
     330                        } 
     331                    } 
     332 
     333                    # Ratings 
     334 
     335                    my $critic_rating; 
     336                    my $user_rating; 
     337 
     338                    $block = $tree->look_down('_tag' => 'div', 'class' => 'metascore_wrap feature_metascore'); 
     339                    if ($block) 
     340                    { 
     341                        my $span = $block->look_down('_tag' => 'span', 'class' => 'score_value'); 
     342                        if ($span) 
     343                        { 
     344                            $critic_rating = $span->as_text(); 
     345                        } 
     346                    } 
     347 
     348                    $block = $tree->look_down('_tag' => 'div', 'class' => 'userscore_wrap feature_userscore'); 
     349                    if ($block) 
     350                    { 
     351                        my $span = $block->look_down('_tag' => 'span', 'class' => 'score_value'); 
     352                        if ($span) 
     353                        { 
     354                            $user_rating = $span->as_text(); 
     355                        }    
     356                    } 
     357 
     358                    if ($critic_rating)  
     359                    { 
     360                        $prog->{'star-rating'} = [ ] unless (ref $prog->{'star-rating'}); 
     361                        &Shepherd::Common::log("  Metascore: $critic_rating / 100"); 
     362                        push @{$prog->{'star-rating'}}, [ "$critic_rating/100", "Metacritic Metascore", undef ]; 
     363                    } 
     364                    if ($user_rating) 
     365                    { 
     366                        $prog->{'star-rating'} = [ ] unless (ref $prog->{'star-rating'}); 
     367 
     368                        &Shepherd::Common::log("  User Score: $user_rating / 10"); 
     369 
     370                        push @{$prog->{'star-rating'}}, [ "$user_rating/10", "Metacritic User Score", undef ]; 
     371                    } 
    362372                } 
    363373 
  • trunk/status

    r1472 r1473  
    1616reconciler      reconciler_mk2      0.49 
    1717postprocessor   imdb_augment_data   1.03 
    18 postprocessor   metacritic          1.0 
     18postprocessor   metacritic          1.1 
    1919postprocessor   augment_timezone    0.30 
    2020postprocessor   add_channel_icons   0.2 
Note: See TracChangeset for help on using the changeset viewer.