line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package LyricFinder::Letras; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
5
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
23
|
|
4
|
1
|
|
|
1
|
|
4
|
use warnings; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
17
|
|
5
|
1
|
|
|
1
|
|
4
|
use Carp; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
38
|
|
6
|
1
|
|
|
1
|
|
5
|
use HTML::Strip; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
16
|
|
7
|
1
|
|
|
1
|
|
3
|
use parent 'LyricFinder::_Class'; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
4
|
|
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
our $haveLyricsCache; |
10
|
|
|
|
|
|
|
BEGIN { |
11
|
1
|
|
|
1
|
|
68
|
$haveLyricsCache = 0; |
12
|
1
|
|
|
1
|
|
53
|
eval "use LyricFinder::Cache; \$haveLyricsCache = 1; 1"; |
|
1
|
|
|
|
|
5
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
15
|
|
13
|
|
|
|
|
|
|
} |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
my $Source = 'Letras'; |
16
|
|
|
|
|
|
|
my $Site = 'https://www.letras.mus.br'; |
17
|
|
|
|
|
|
|
my $DEBUG = 0; |
18
|
|
|
|
|
|
|
|
19
|
|
|
|
|
|
|
sub new |
20
|
|
|
|
|
|
|
{ |
21
|
0
|
|
|
0
|
1
|
|
my $class = shift; |
22
|
|
|
|
|
|
|
|
23
|
0
|
|
|
|
|
|
my $self = $class->SUPER::new($Source, @_); |
24
|
0
|
|
|
|
|
|
@{$self->{'_fetchers'}} = ($Source); |
|
0
|
|
|
|
|
|
|
25
|
0
|
|
|
|
|
|
unshift(@{$self->{'_fetchers'}}, 'Cache') if ($haveLyricsCache |
26
|
0
|
0
|
0
|
|
|
|
&& $self->{'-cache'} && $self->{'-cache'} !~ /^\>/); |
|
|
|
0
|
|
|
|
|
27
|
|
|
|
|
|
|
|
28
|
0
|
|
|
|
|
|
bless $self, $class; #BLESS IT! |
29
|
|
|
|
|
|
|
|
30
|
0
|
|
|
|
|
|
return $self; |
31
|
|
|
|
|
|
|
} |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
sub fetch { |
34
|
0
|
|
|
0
|
1
|
|
my ($self, $artist_in, $song_in) = @_; |
35
|
|
|
|
|
|
|
|
36
|
0
|
|
|
|
|
|
$self->_debug("Letras::fetch($artist_in, $song_in)!"); |
37
|
|
|
|
|
|
|
|
38
|
0
|
0
|
|
|
|
|
return '' unless ($self->_check_inputs($artist_in, $song_in)); |
39
|
0
|
0
|
|
|
|
|
return '' if ($self->{'Error'} ne 'Ok'); |
40
|
|
|
|
|
|
|
|
41
|
0
|
|
|
|
|
|
my $artist = $artist_in; |
42
|
0
|
|
|
|
|
|
my $song = $song_in; |
43
|
|
|
|
|
|
|
# first, see if we've got it cached: |
44
|
0
|
|
|
|
|
|
$self->_debug("i:haveCache=$haveLyricsCache= -cachedir=".$self->{'-cache'}."="); |
45
|
0
|
0
|
0
|
|
|
|
if ($haveLyricsCache && $self->{'-cache'} && $self->{'-cache'} !~ /^\>/) { |
|
|
|
0
|
|
|
|
|
46
|
0
|
|
|
|
|
|
my $cache = new LyricFinder::Cache(%{$self}); |
|
0
|
|
|
|
|
|
|
47
|
0
|
0
|
|
|
|
|
if ($cache) { |
48
|
0
|
|
|
|
|
|
my $lyrics = $cache->fetch($artist, $song); |
49
|
0
|
0
|
0
|
|
|
|
if (defined($lyrics) && $lyrics =~ /\w/) { |
50
|
0
|
|
|
|
|
|
$self->_debug("..Got lyrics from cache."); |
51
|
0
|
|
|
|
|
|
$self->{'Source'} = 'Cache'; |
52
|
0
|
|
|
|
|
|
$self->{'Site'} = $cache->site(); |
53
|
0
|
|
|
|
|
|
$self->{'Url'} = $cache->url(); |
54
|
|
|
|
|
|
|
|
55
|
0
|
|
|
|
|
|
return $lyrics; |
56
|
|
|
|
|
|
|
} |
57
|
|
|
|
|
|
|
} |
58
|
|
|
|
|
|
|
} |
59
|
|
|
|
|
|
|
|
60
|
0
|
|
|
|
|
|
$self->{'Site'} = $Site; |
61
|
|
|
|
|
|
|
|
62
|
0
|
|
|
|
|
|
$artist = $self->_remove_accents($artist); |
63
|
0
|
|
|
|
|
|
$song = $self->_remove_accents($song); |
64
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
# Their URLs look like e.g.: |
66
|
|
|
|
|
|
|
# https://www.letras.mus.br// </td>
</tr>
<tr>
<td class="h" >
<a name="67">67</a>
</td>
<td class="c0" >
<a href="#68">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> ($self->{'Url'} = $artist) =~ s#\s*\/\s*# and #; #CONVERT "artist1 / artist2" TO "artist1 and artist2"! </td>
</tr>
<tr>
<td class="h" >
<a name="68">68</a>
</td>
<td class="c0" >
<a href="#69">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $song =~ s#\s*\/\s*#\-#g; #FIX SONGS WITH "/" IN THEM! </td>
</tr>
<tr>
<td class="h" >
<a name="69">69</a>
</td>
<td class="c0" >
<a href="#70">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Url'} .= "/${song}-lyrics"; </td>
</tr>
<tr>
<td class="h" >
<a name="70">70</a>
</td>
<td class="c0" >
<a href="#71">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Url'} =~ s/\&/and/g; </td>
</tr>
<tr>
<td class="h" >
<a name="71">71</a>
</td>
<td class="c0" >
<a href="#72">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Url'} =~ s/ +/\-/g; </td>
</tr>
<tr>
<td class="h" >
<a name="72">72</a>
</td>
<td class="c0" >
<a href="#73">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Url'} = $Site . '/' . $self->{'Url'}; </td>
</tr>
<tr>
<td class="h" >
<a name="73">73</a>
</td>
<td class="c0" >
<a href="#74">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Url'} =~ tr/A-Z/a-z/; </td>
</tr>
<tr>
<td class="h" >
<a name="74">74</a>
</td>
<td class="c0" >
<a href="#75">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'_confirm_title'} = $song_in; </td>
</tr>
<tr>
<td class="h" >
<a name="75">75</a>
</td>
<td class="c0" >
<a href="#76">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'_confirm_artist'} = $artist_in; </td>
</tr>
<tr>
<td class="h" >
<a name="76">76</a>
</td>
<td class="c0" >
<a href="#77">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lyrics = $self->_web_fetch($artist, $song); </td>
</tr>
<tr>
<td class="h" >
<a name="77">77</a>
</td>
<td class="c0" >
<a href="#78">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#77-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--condition.html#77-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ($lyrics && $haveLyricsCache && $self->{'-cache'} && $self->{'-cache'} !~ /^\</) { </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--condition.html#-2">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--condition.html#-3">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="78">78</a>
</td>
<td class="c0" >
<a href="#80">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->_debug("=== WILL CACHE LYRICS! ==="); </td>
</tr>
<tr>
<td class="h" >
<a name="79">79</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # cache the fetched lyrics, if we can: </td>
</tr>
<tr>
<td class="h" >
<a name="80">80</a>
</td>
<td class="c0" >
<a href="# ">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $cache = new LyricFinder::Cache(%{$self}); </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c0" >
<a href="#81">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="81">81</a>
</td>
<td class="c0" >
<a href="#83">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#81-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $cache->save($artist, $song, $lyrics) if ($cache); </td>
</tr>
<tr>
<td class="h" >
<a name="82">82</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="83">83</a>
</td>
<td class="c0" >
<a href="#87">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $lyrics; </td>
</tr>
<tr>
<td class="h" >
<a name="84">84</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="85">85</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="86">86</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub _parse { </td>
</tr>
<tr>
<td class="h" >
<a name="87">87</a>
</td>
<td class="c0" >
<a href="#88">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--subroutine.html#87-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $self = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="88">88</a>
</td>
<td class="c0" >
<a href="#90">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $html = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="89">89</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="90">90</a>
</td>
<td class="c0" >
<a href="#91">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->_debug("Letras::_parse()!"); </td>
</tr>
<tr>
<td class="h" >
<a name="91">91</a>
</td>
<td class="c0" >
<a href="#94">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#91-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if (my ($goodbit) = $html =~ </td>
</tr>
<tr>
<td class="h" >
<a name="92">92</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> m{\<div\s+class\=\"cnt\-letra\s+p\d+\_premium\"\>(.+?)\<\/div\>}msi) </td>
</tr>
<tr>
<td class="h" >
<a name="93">93</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> { </td>
</tr>
<tr>
<td class="h" >
<a name="94">94</a>
</td>
<td class="c0" >
<a href="#99">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $hs = HTML::Strip->new(); </td>
</tr>
<tr>
<td class="h" >
<a name="95">95</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="96">96</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> #LETRAS SOMETIMES RETURNS "BEST GUESS" (WRONG) SONG LYRICS IF NOT FOUND, AND WE </td>
</tr>
<tr>
<td class="h" >
<a name="97">97</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> #DON'T WANT THIS, SO WE MUST CONFIRM THAT THE TITLE AND ARTIST MATCH WHAT WE </td>
</tr>
<tr>
<td class="h" >
<a name="98">98</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> #REQUESTED, AND PUNT IF THEY DON'T!: </td>
</tr>
<tr>
<td class="h" >
<a name="99">99</a>
</td>
<td class="c0" >
<a href="#100">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#99-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ($html =~ m#\<div\s+class\=\"cnt\-head\_title\"\>(.+?)\<\/div\>#msi) { </td>
</tr>
<tr>
<td class="h" >
<a name="100">100</a>
</td>
<td class="c0" >
<a href="#101">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $headers = $1; </td>
</tr>
<tr>
<td class="h" >
<a name="101">101</a>
</td>
<td class="c0" >
<a href="#102">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#101-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $title = ($headers =~ m#\<h1\>(.+?)\<\/h1\>#si) ? $hs->parse($1) : ''; </td>
</tr>
<tr>
<td class="h" >
<a name="102">102</a>
</td>
<td class="c0" >
<a href="#103">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $title =~ s/^\s+//; </td>
</tr>
<tr>
<td class="h" >
<a name="103">103</a>
</td>
<td class="c0" >
<a href="#104">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $title =~ s/\s+$//; </td>
</tr>
<tr>
<td class="h" >
<a name="104">104</a>
</td>
<td class="c0" >
<a href="#105">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#104-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ($title) { </td>
</tr>
<tr>
<td class="h" >
<a name="105">105</a>
</td>
<td class="c0" >
<a href="#106">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#105-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ($self->{'_confirm_title'} !~ /^${title}$/i) { </td>
</tr>
<tr>
<td class="h" >
<a name="106">106</a>
</td>
<td class="c0" >
<a href="#107">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Error'} = "e:$Source - Results did not match title ($title)."; </td>
</tr>
<tr>
<td class="h" >
<a name="107">107</a>
</td>
<td class="c0" >
<a href="#109">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return ''; </td>
</tr>
<tr>
<td class="h" >
<a name="108">108</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="109">109</a>
</td>
<td class="c0" >
<a href="#110">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#109-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $artist = ($headers =~ m#\<h2\>(.+?)\<\/h2\>#si) ? $hs->parse($1) : ''; </td>
</tr>
<tr>
<td class="h" >
<a name="110">110</a>
</td>
<td class="c0" >
<a href="#111">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $artist =~ s/^\s+//; </td>
</tr>
<tr>
<td class="h" >
<a name="111">111</a>
</td>
<td class="c0" >
<a href="#112">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $artist =~ s/\s+$//; </td>
</tr>
<tr>
<td class="h" >
<a name="112">112</a>
</td>
<td class="c0" >
<a href="#113">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--branch.html#112-1">
0
</a>
</td>
<td class="c0" >
<a href="blib-lib-LyricFinder-Letras-pm--condition.html#112-1">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> if ($artist && $self->{'_confirm_artist'} !~ /^${artist}$/i) { </td>
</tr>
<tr>
<td class="h" >
<a name="113">113</a>
</td>
<td class="c0" >
<a href="#114">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $self->{'Error'} = "e:$Source - Results did not match artist ($artist)."; </td>
</tr>
<tr>
<td class="h" >
<a name="114">114</a>
</td>
<td class="c0" >
<a href="#119">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return ''; </td>
</tr>
<tr>
<td class="h" >
<a name="115">115</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="116">116</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="117">117</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="118">118</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="119">119</a>
</td>
<td class="c0" >
<a href="#120">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $goodbit =~ s#\<\/?p\>#\r\n#gsi; </td>
</tr>
<tr>
<td class="h" >
<a name="120">120</a>
</td>
<td class="c0" >
<a href="#121">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> $goodbit =~ s#\<br\/?\>#\r\n#gsi; </td>
</tr>
<tr>
<td class="h" >
<a name="121">121</a>
</td>
<td class="c0" >
<a href="#123">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $text = $hs->parse($goodbit); </td>
</tr>
<tr>
<td class="h" >
<a name="122">122</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="123">123</a>
</td>
<td class="c0" >
<a href="#125">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return $self->_normalize_lyric_text($self->_html2text($text)); </td>
</tr>
<tr>
<td class="h" >
<a name="124">124</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } else { </td>
</tr>
<tr>
<td class="h" >
<a name="125">125</a>
</td>
<td class="c0" >
<a href="#126">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> carp($self->{'Error'} = "e:$Source - Failed to identify lyrics on result page."); </td>
</tr>
<tr>
<td class="h" >
<a name="126">126</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> return ''; </td>
</tr>
<tr>
<td class="h" >
<a name="127">127</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="128">128</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="129">129</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="130">130</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> 1 </td>
</tr>
<tr>
<td class="h" >
<a name="131">131</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="132">132</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> __END__ </td>
</tr>
</table>
</body>
</html>
|