Changeset 1473


Ignore:
Timestamp:
Sep 23, 2013, 10:15:36 PM (10 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.