summaryrefslogtreecommitdiff
path: root/local/nzbindex.pm
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;
}