blob: b193b6f802b7d62181cd27576357c4c778782546 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
package local::nzbindex;
require Exporter;
use strict;
use base "Exporter";
use URI::Escape;
use XML::Parser;
use XML::SimpleObject;
use LWP::UserAgent;
use HTTP::Cookies;
sub new
{
my $invocant = shift;
my $class = ref($invocant) || $invocant;
# my $self = $class->SUPER::new(@_);
my $self=bless {@_}, $class;
return $self;
}
sub http_fetch
{
my $self=shift;
my ($request)=@_;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
# my $cookie_jar = HTTP::Cookies->new({});
# $ua->cookie_jar($cookie_jar);
# my $response = $ua->get("http://www.nzbindex.nl/?lang=2");
my $response = $ua->get('https://www.nzbindex.nl/rss/?'.$request);
if ($response->is_success) {
return $response->decoded_content;
}
else {
return;
die $response->status_line;
}
}
sub search
{
my $self=shift;
my %params=@_;
my @result;
my $request='';
for my $key (keys %params) {
$request.= uri_escape_utf8($key)."=".$params{$key}.'&';
}
$request =~ s/\&$//;
my $feed = $self->http_fetch($request);
die "Couldn't get connect to search site" unless defined $feed;
my $p1 = new XML::Parser(Style => 'Tree');
my $xso = XML::SimpleObject->new($p1->parse($feed));
if ($xso->child('rss')->child('channel'))
{
print CGI::start_table();
foreach my $item ($xso->child('rss')->child('channel')->children('item')) {
next if not $item;
my $title = $item->child('title')->value;
my $description = $item->child('description')->value;
my $nzburl = $item->child('enclosure')->attribute("url");
push @result,{url=>$nzburl,title=>$title,description=>$description};
}
}
return @result;
}
|