line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package WWW::Search::Coveralia::Result::Album; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
12
|
use 5.014000; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
28
|
|
4
|
1
|
|
|
1
|
|
3
|
use strict; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
22
|
|
5
|
1
|
|
|
1
|
|
3
|
use warnings; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
19
|
|
6
|
1
|
|
|
1
|
|
3
|
use parent qw/WWW::SearchResult/; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
4
|
|
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
our $VERSION = '0.001'; |
9
|
|
|
|
|
|
|
|
10
|
1
|
|
|
1
|
|
1468
|
use HTML::TreeBuilder; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
12
|
|
11
|
1
|
|
|
1
|
|
430
|
use PerlX::Maybe; |
|
1
|
|
|
|
|
1490
|
|
|
1
|
|
|
|
|
465
|
|
12
|
|
|
|
|
|
|
|
13
|
3
|
|
|
3
|
1
|
1713
|
sub artist { shift->_elem(artist => @_) } |
14
|
3
|
|
|
3
|
1
|
15
|
sub year { shift->_elem(year => @_) } |
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
sub new{ |
17
|
2
|
|
|
2
|
1
|
4
|
my ($class, $obj, $url, $title, $artist, $year, $covers) = @_; |
18
|
2
|
|
|
|
|
14
|
my $self = $class->SUPER::new; |
19
|
2
|
|
|
|
|
26
|
$self->{obj} = $obj; |
20
|
2
|
50
|
|
|
|
5
|
$self->{covers} = $covers if $covers; |
21
|
|
|
|
|
|
|
|
22
|
2
|
|
|
|
|
8
|
$self->title($title); |
23
|
2
|
|
|
|
|
23
|
$self->artist($artist); |
24
|
2
|
|
|
|
|
15
|
$self->year($year); |
25
|
2
|
|
|
|
|
13
|
$self->add_url($url); |
26
|
2
|
|
|
|
|
20
|
$self |
27
|
|
|
|
|
|
|
} |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
sub parse_page{ |
30
|
1
|
|
|
1
|
1
|
2
|
my ($self) = @_; |
31
|
1
|
|
|
|
|
9
|
my $tree = HTML::TreeBuilder->new_from_url($self->url); |
32
|
1
|
|
|
|
|
248318
|
my $cover_list = $tree->look_down(class => 'lista_normal'); |
33
|
1
|
|
100
|
|
|
738
|
my @covers = grep { ($_->find('img')->attr('class') // '') ne 'sprites_enviax' } $cover_list->find('a'); |
|
5
|
|
|
|
|
281
|
|
34
|
1
|
|
|
|
|
25
|
$self->{covers} = {map {lc $_->as_text => $self->{obj}->absurl('', $_->attr('href'))} @covers}; |
|
4
|
|
|
|
|
684
|
|
35
|
1
|
|
|
|
|
192
|
my @songs = $tree->look_down(id => 'pagina_disco_lista')->find('tr'); |
36
|
9
|
|
|
|
|
23
|
$self->{songs} = [map { |
37
|
1
|
|
|
|
|
1357
|
my ($nr, $title, @extra) = $_->find('td'); |
38
|
9
|
|
|
|
|
680
|
my %ret = (id => $nr->as_text, name => $title->as_text); |
39
|
9
|
|
|
|
|
263
|
for (@extra) { |
40
|
27
|
100
|
100
|
|
|
437
|
next if ($_->attr('class') // '') eq 'letrano'; |
41
|
21
|
100
|
|
|
|
204
|
$ret{lyrics} = $self->{obj}->absurl('', $_->find('a')->attr('href')) if $_->as_text =~ /letra/i; |
42
|
21
|
100
|
|
|
|
2207
|
$ret{video} = $self->{obj}->absurl('', $_->find('a')->attr('href')) if $_->as_text =~ /video/i; |
43
|
21
|
100
|
|
|
|
2183
|
$ret{tab} = $self->{obj}->absurl('', $_->find('a')->attr('href')) if $_->as_text =~ /acorde/i; |
44
|
|
|
|
|
|
|
} |
45
|
9
|
|
|
|
|
1130
|
\%ret |
46
|
|
|
|
|
|
|
} @songs] |
47
|
|
|
|
|
|
|
} |
48
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
sub covers{ |
50
|
1
|
|
|
1
|
1
|
7
|
my ($self) = @_; |
51
|
1
|
50
|
|
|
|
3
|
$self->parse_page unless $self->{covers}; |
52
|
1
|
|
|
|
|
2
|
%{$self->{covers}} |
|
1
|
|
|
|
|
8
|
|
53
|
|
|
|
|
|
|
} |
54
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
sub cover{ |
56
|
1
|
|
|
1
|
1
|
940
|
my ($self, $cover) = @_; |
57
|
1
|
50
|
|
|
|
5
|
$self->parse_page unless $self->{covers}; |
58
|
1
|
|
|
|
|
6
|
$self->{covers}{$cover} |
59
|
|
|
|
|
|
|
} |
60
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
sub songs{ |
62
|
1
|
|
|
1
|
1
|
401
|
my ($self) = @_; |
63
|
1
|
50
|
|
|
|
6
|
$self->parse_page unless $self->{songs}; |
64
|
1
|
|
|
|
|
2
|
@{$self->{songs}} |
|
1
|
|
|
|
|
7
|
|
65
|
|
|
|
|
|
|
} |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
1; |
68
|
|
|
|
|
|
|
__END__ |