summaryrefslogtreecommitdiff
path: root/local/nzbindex.pm
blob: 492ebb3af5cbac073e3585fda998b672cffa961f (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
package local::nzbindex;
require Exporter;
use strict;
use base "Exporter";
use URI::Escape;
use XML::Parser;
use XML::SimpleObject;
use LWP::Simple;

sub new
{
  my $invocant = shift;
  my $class = ref($invocant) || $invocant;
  # my $self  = $class->SUPER::new(@_);
  my $self=bless {@_}, $class;
  return $self;
}

sub search
{
  my $self=shift;
  my %params=@_;
  my @result;
  my $request='';
  for my $key (keys %params) {
    $request.= uri_escape($key)."=".$params{$key}.'&';
  }  
  $request =~ s/\&$//;
  my $feed = get('http://nzbindex.com/rss/?'.$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;
}