line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package WWW::TheMovieDB::Search; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
30580
|
use 5.008009; |
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
44
|
|
4
|
1
|
|
|
1
|
|
7
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
35
|
|
5
|
1
|
|
|
1
|
|
6
|
use warnings; |
|
1
|
|
|
|
|
7
|
|
|
1
|
|
|
|
|
42
|
|
6
|
1
|
|
|
1
|
|
1172
|
use LWP::Simple; |
|
1
|
|
|
|
|
611441
|
|
|
1
|
|
|
|
|
9
|
|
7
|
1
|
|
|
1
|
|
419
|
use URI::Escape; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
55
|
|
8
|
1
|
|
|
1
|
|
1018
|
use Switch; |
|
1
|
|
|
|
|
68404
|
|
|
1
|
|
|
|
|
8
|
|
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
require Exporter; |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
our @ISA = qw(Exporter); |
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
# Items to export into callers namespace by default. Note: do not export |
15
|
|
|
|
|
|
|
# names by default without a very good reason. Use EXPORT_OK instead. |
16
|
|
|
|
|
|
|
# Do not simply export all your public functions/methods/constants. |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
# This allows declaration use WWW::TheMovieDB::Search ':all'; |
19
|
|
|
|
|
|
|
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK |
20
|
|
|
|
|
|
|
# will save memory. |
21
|
|
|
|
|
|
|
our %EXPORT_TAGS = ( 'all' => [ qw( |
22
|
|
|
|
|
|
|
Movie_getInfo |
23
|
|
|
|
|
|
|
Movie_browse |
24
|
|
|
|
|
|
|
Movie_getImages |
25
|
|
|
|
|
|
|
Movie_getLatest |
26
|
|
|
|
|
|
|
Movie_getTranslations |
27
|
|
|
|
|
|
|
Movie_getVersion |
28
|
|
|
|
|
|
|
Movie_imdbLookup |
29
|
|
|
|
|
|
|
Movie_search |
30
|
|
|
|
|
|
|
Person_getInfo |
31
|
|
|
|
|
|
|
Person_getLatest |
32
|
|
|
|
|
|
|
Person_getVersion |
33
|
|
|
|
|
|
|
Person_search |
34
|
|
|
|
|
|
|
Genres_getList |
35
|
|
|
|
|
|
|
) ] ); |
36
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
our @EXPORT = qw(); |
40
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
our $VERSION = '0.04'; |
42
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
sub new { |
45
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
46
|
|
|
|
|
|
|
|
47
|
0
|
|
|
|
|
|
$package::key = ''; |
48
|
0
|
|
|
|
|
|
$package::lang = 'en'; |
49
|
0
|
|
|
|
|
|
$package::ver = '2.1'; |
50
|
0
|
|
|
|
|
|
$package::type = 'xml'; |
51
|
0
|
|
|
|
|
|
$package::uri = 'http://api.themoviedb.org'; |
52
|
|
|
|
|
|
|
|
53
|
0
|
0
|
|
|
|
|
if ($_[0]) { |
54
|
0
|
|
|
|
|
|
$package->key($_[0]); |
55
|
|
|
|
|
|
|
} |
56
|
|
|
|
|
|
|
|
57
|
0
|
|
|
|
|
|
return bless({}, $package); |
58
|
|
|
|
|
|
|
} |
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
sub lang { |
61
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
62
|
0
|
|
|
|
|
|
$package::lang = shift; |
63
|
0
|
|
|
|
|
|
return; |
64
|
|
|
|
|
|
|
} |
65
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
sub ver { |
67
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
68
|
0
|
|
|
|
|
|
$pacakge::ver = shift; |
69
|
0
|
|
|
|
|
|
return; |
70
|
|
|
|
|
|
|
} |
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
sub key { |
73
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
74
|
0
|
|
|
|
|
|
$package::key = shift; |
75
|
0
|
|
|
|
|
|
return; |
76
|
|
|
|
|
|
|
} |
77
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
sub type { |
79
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
80
|
0
|
|
|
|
|
|
$package::type = shift; |
81
|
0
|
|
|
|
|
|
return; |
82
|
|
|
|
|
|
|
} |
83
|
|
|
|
|
|
|
|
84
|
|
|
|
|
|
|
sub buildURL { |
85
|
0
|
|
|
0
|
1
|
|
my ($package,$method) = @_; |
86
|
|
|
|
|
|
|
|
87
|
0
|
|
|
|
|
|
my $url = $package::uri ."/". $package::ver ."/". $method ."/". $package::lang ."/". $package::type ."/". $package::key; |
88
|
|
|
|
|
|
|
|
89
|
0
|
|
|
|
|
|
return $url; |
90
|
|
|
|
|
|
|
} |
91
|
|
|
|
|
|
|
|
92
|
|
|
|
|
|
|
sub Movie_browse { |
93
|
0
|
|
|
0
|
1
|
|
my ($package,%data) = @_; |
94
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
|
96
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.browse"); |
97
|
0
|
|
|
|
|
|
$url .= "?"; |
98
|
|
|
|
|
|
|
|
99
|
0
|
0
|
0
|
|
|
|
unless ((exists $data{'order'} && $data{'order'} =~ m/^(asc|desc)$/) && (exists $data{'order_by'} && $data{'order_by'} =~ m/^(rating|release|title)$/)) { |
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
100
|
0
|
|
|
|
|
|
return "Missing order and/or order_by."; |
101
|
|
|
|
|
|
|
} |
102
|
|
|
|
|
|
|
|
103
|
0
|
|
|
|
|
|
foreach my $key (sort keys %data) { |
104
|
0
|
0
|
|
|
|
|
$url .= '&order='. $data{'order'} if ($key eq 'order'); |
105
|
0
|
0
|
|
|
|
|
$url .= '&order_by='. $data{'order_by'} if ($key eq 'order_by'); |
106
|
|
|
|
|
|
|
|
107
|
0
|
0
|
0
|
|
|
|
$url .= '&certifications='. $data{'certifications'} if ($key eq 'certifications' && $data{'certifications'} ne ""); |
108
|
0
|
0
|
0
|
|
|
|
$url .= '&companies='. $data{'companies'} if ($key eq 'companies' && $data{'companies'} =~ m/(\d+,)*\d+$/); |
109
|
0
|
0
|
0
|
|
|
|
$url .= '&countries='. $data{'countries'} if ($key eq 'countries' && $data{'countries'} ne ""); |
110
|
0
|
0
|
0
|
|
|
|
$url .= '&genres='. $data{'genres'} if ($key eq 'genres' && $data{'genres'} =~ m/(\d+,)*\d+$/); |
111
|
0
|
0
|
0
|
|
|
|
$url .= '&genres_selector='. $data{'genres_selector'} if ($key eq 'genres_selector' && $data{'genres_selector'} =~ m/^(and|or)$/); |
112
|
0
|
0
|
0
|
|
|
|
$url .= '&min_votes='. $data{'min_votes'} if ($key eq 'min_votes' && $data{'min_votes'} =~ m/^(\d+)$/); |
113
|
0
|
0
|
0
|
|
|
|
$url .= '&page='. $data{'page'} if ($key eq 'page' && $data{'page'} =~ m/^\d+$/); |
114
|
0
|
0
|
0
|
|
|
|
$url .= '&per_page='. $data{'per_page'} if ($key eq 'per_page' && $data{'per_page'} =~ m/^\d+$/); |
115
|
0
|
0
|
0
|
|
|
|
$url .= '&query='. uri_escape($data{'query'}) if ($key eq 'query' && $data{'query'} ne ""); |
116
|
0
|
0
|
0
|
|
|
|
$url .= '&rating_max='. $data{'rating_max'} if ($key eq 'rating_max' && $data{'rating_max'} =~ m/^\d*\.{0,1}\d+$/); |
117
|
0
|
0
|
0
|
|
|
|
$url .= '&rating_min='. $data{'rating_min'} if ($key eq 'rating_min' && $data{'rating_min'} =~ m/^\d*\.{0,1}\d+$/); |
118
|
0
|
0
|
0
|
|
|
|
$url .= '&release_max='. $data{'release_max'} if ($key eq 'release_max' && $data{'release_max'} =~ m/^-{0,1}\d+$/); |
119
|
0
|
0
|
0
|
|
|
|
$url .= '&release_min='. $data{'release_min'} if ($key eq 'release_min' && $data{'release_min'} =~ m/^-{0,1}\d+$/); |
120
|
0
|
0
|
0
|
|
|
|
$url .= '&year='. $data{'year'} if ($key eq 'year' && $data{'year'} =~ m/^\d+$/); |
121
|
|
|
|
|
|
|
} |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
|
124
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
125
|
0
|
|
|
|
|
|
return $content; |
126
|
|
|
|
|
|
|
} |
127
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
sub Movie_getImages { |
129
|
0
|
|
|
0
|
1
|
|
my ($package,$movieid) = @_; |
130
|
|
|
|
|
|
|
|
131
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.getImages"); |
132
|
0
|
|
|
|
|
|
$url .= "/". $movieid; |
133
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
134
|
0
|
|
|
|
|
|
return $content; |
135
|
|
|
|
|
|
|
} |
136
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
sub Movie_getInfo { |
138
|
0
|
|
|
0
|
1
|
|
my ($package,$movieid) = @_; |
139
|
|
|
|
|
|
|
|
140
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.getInfo"); |
141
|
0
|
|
|
|
|
|
$url .= "/". $movieid; |
142
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
143
|
|
|
|
|
|
|
|
144
|
0
|
|
|
|
|
|
return $content; |
145
|
|
|
|
|
|
|
} |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
sub Movie_getLatest { |
148
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
149
|
|
|
|
|
|
|
|
150
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.getLatest"); |
151
|
|
|
|
|
|
|
|
152
|
0
|
|
|
|
|
|
print $url; |
153
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
154
|
|
|
|
|
|
|
|
155
|
0
|
|
|
|
|
|
return $content; |
156
|
|
|
|
|
|
|
} |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
sub Movie_getTranslations { |
159
|
0
|
|
|
0
|
1
|
|
my ($package,$movieid) = @_; |
160
|
|
|
|
|
|
|
|
161
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.getTranslations"); |
162
|
0
|
|
|
|
|
|
$url .= "/". $movieid; |
163
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
164
|
|
|
|
|
|
|
|
165
|
0
|
|
|
|
|
|
return $content; |
166
|
|
|
|
|
|
|
} |
167
|
|
|
|
|
|
|
|
168
|
|
|
|
|
|
|
sub Movie_getVersion { |
169
|
0
|
|
|
0
|
1
|
|
my ($package,$movieid) = @_; |
170
|
|
|
|
|
|
|
|
171
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.getVersion"); |
172
|
0
|
|
|
|
|
|
$url .= "/". $movieid; |
173
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
174
|
|
|
|
|
|
|
|
175
|
0
|
|
|
|
|
|
return $content; |
176
|
|
|
|
|
|
|
} |
177
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
sub Movie_imdbLookup { |
179
|
0
|
|
|
0
|
1
|
|
my ($package,$imdbid) = @_; |
180
|
|
|
|
|
|
|
|
181
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.imdbLookup"); |
182
|
0
|
|
|
|
|
|
$url .= "/". $imdbid; |
183
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
184
|
|
|
|
|
|
|
|
185
|
0
|
|
|
|
|
|
return $content; |
186
|
|
|
|
|
|
|
} |
187
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
sub Movie_search { |
189
|
0
|
|
|
0
|
1
|
|
my ($package,$query) = @_; |
190
|
0
|
|
|
|
|
|
$query = uri_escape($query); |
191
|
|
|
|
|
|
|
|
192
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Movie.search"); |
193
|
0
|
|
|
|
|
|
$url .= "/". $query; |
194
|
|
|
|
|
|
|
|
195
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
196
|
|
|
|
|
|
|
|
197
|
0
|
|
|
|
|
|
return $content; |
198
|
|
|
|
|
|
|
} |
199
|
|
|
|
|
|
|
|
200
|
|
|
|
|
|
|
sub Person_getInfo { |
201
|
0
|
|
|
0
|
1
|
|
my ($package,$personid) = @_; |
202
|
|
|
|
|
|
|
|
203
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Person.getInfo"); |
204
|
0
|
|
|
|
|
|
$url .= "/". $personid; |
205
|
|
|
|
|
|
|
|
206
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
207
|
|
|
|
|
|
|
|
208
|
0
|
|
|
|
|
|
return $content; |
209
|
|
|
|
|
|
|
} |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
sub Person_getLatest { |
212
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
213
|
|
|
|
|
|
|
|
214
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Person.getLatest"); |
215
|
|
|
|
|
|
|
|
216
|
0
|
|
|
|
|
|
print $url; |
217
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
218
|
|
|
|
|
|
|
|
219
|
0
|
|
|
|
|
|
return $content; |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
} |
222
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
sub Person_getVersion { |
224
|
0
|
|
|
0
|
1
|
|
my ($package,$personid) = @_; |
225
|
|
|
|
|
|
|
|
226
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Person.getInfo"); |
227
|
0
|
|
|
|
|
|
$url .= "/". $personid; |
228
|
|
|
|
|
|
|
|
229
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
230
|
|
|
|
|
|
|
|
231
|
0
|
|
|
|
|
|
return $content; |
232
|
|
|
|
|
|
|
} |
233
|
|
|
|
|
|
|
|
234
|
|
|
|
|
|
|
sub Person_search { |
235
|
0
|
|
|
0
|
1
|
|
my ($package,$query) = @_; |
236
|
0
|
|
|
|
|
|
$query = uri_escape($query); |
237
|
|
|
|
|
|
|
|
238
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Person.search"); |
239
|
0
|
|
|
|
|
|
$url .= "/". $query; |
240
|
|
|
|
|
|
|
|
241
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
242
|
|
|
|
|
|
|
|
243
|
0
|
|
|
|
|
|
return $content; |
244
|
|
|
|
|
|
|
} |
245
|
|
|
|
|
|
|
|
246
|
|
|
|
|
|
|
sub Genres_getList { |
247
|
0
|
|
|
0
|
1
|
|
my $package = shift; |
248
|
|
|
|
|
|
|
|
249
|
0
|
|
|
|
|
|
my $url = $package->buildURL("Genres.getList"); |
250
|
|
|
|
|
|
|
|
251
|
0
|
|
0
|
|
|
|
my $content = get($url) || ""; |
252
|
|
|
|
|
|
|
|
253
|
0
|
|
|
|
|
|
return $content; |
254
|
|
|
|
|
|
|
} |
255
|
|
|
|
|
|
|
|
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
1; |
258
|
|
|
|
|
|
|
__END__ |