File Coverage

blib/lib/WWW/NicoVideo/Scraper.pm
Criterion Covered Total %
statement 33 59 55.9
branch n/a
condition n/a
subroutine 8 13 61.5
pod 0 1 0.0
total 41 73 56.1


line stmt bran cond sub pod time code
1             # -*- mode: perl; coding: utf-8 -*-
2              
3             package WWW::NicoVideo::Scraper;
4              
5 1     1   5 use utf8;
  1         1  
  1         5  
6 1     1   23 use strict;
  1         2  
  1         26  
7 1     1   4 use warnings;
  1         2  
  1         20  
8 1     1   912 use Web::Scraper;
  1         105045  
  1         6  
9 1     1   610 use WWW::NicoVideo::URL;
  1         2  
  1         47  
10 1     1   5 use base qw[Web::Scraper];
  1         2  
  1         83  
11              
12             sub import
13             {
14 2     2   1349 my $class = shift;
15 2         3 my $pkg = caller;
16              
17 1     1   5 no strict "refs";
  1         1  
  1         713  
18 2         4 *{"$pkg\::scraper_entries"} = \&scraper_entries;
  2         11  
19 2         3 *{"$pkg\::scraper"} = \&scraper;
  2         9  
20 2     0   7 *{"$pkg\::process"} = sub { goto &process };
  2         9  
  0         0  
21 2     0   6 *{"$pkg\::process_first"} = sub { goto &process_first };
  2         10  
  0         0  
22 2     0   24 *{"$pkg\::result"} = sub { goto &result };
  2         38  
  0            
23             }
24              
25             sub scraper_entries()
26             {
27             scraper {
28             process('//div[@class="thumb_frm"]',
29             'entries[]' => scraper {
30 0           process('/div/div/div/p/a/img',
31             imgUrl => '@src',
32             imgWidth => '@width',
33             imgHeight => '@height');
34             process('/div/div/p/strong',
35             lengthStr => 'TEXT',
36 0           length => sub { shift->as_text =~ /(?:(\d+)分)?(\d+)秒/;
37 0           $1*60 + $2 });
  0            
38             process('/div/div/p/strong[2]',
39             numViewsStr => 'TEXT',
40 0           numViews => sub { my $x = shift->as_text;
41 0           $x =~ tr/,//d;
42 0           $x });
  0            
43             process('/div/div/p/strong[3]',
44             numCommentsStr => 'TEXT',
45 0           numComments => sub { my $x = shift->as_text;
46 0           $x =~ tr/,//d;
47 0           $x });
  0            
48             process('/div/div[2]/p/a[@class="video"]',
49             title => 'TEXT',
50 0           id => sub { shift->attr("href") =~ /(\w+)$/; $1 },
  0            
51 0           url => '@href');
52             process('/div/div[2]/p',
53 0           desc => sub { shift->content_array_ref->[-1] =~ /\s*(.*)/;
54 0           $1 }),
55             process('/div/div[2]/div/p/strong',
56 0           comments => sub { my $x = shift->as_text;
57 0           $x =~ s/\s+$//;
58 0           $x; });
  0            
59 0     0     });
60 0     0 0   };
61             }
62              
63             "Ritsuko";