summaryrefslogtreecommitdiff
path: root/local
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@wirdorange.org>2011-03-31 19:05:23 +0000
committerOthmar Gsenger <otti@wirdorange.org>2011-03-31 19:05:23 +0000
commitd26fa8c1e0886c813de5364ee6570c860c6ce12c (patch)
tree418120693100150b0443d3d880f945aaa45a0d22 /local
parentadded support for browsing by category (diff)
hopfully repaired this after backup loss
Diffstat (limited to 'local')
-rw-r--r--local/db.pm2
-rw-r--r--local/menu.pm38
-rw-r--r--local/nzbget.pm24
-rwxr-xr-xlocal/nzbindex.pm26
4 files changed, 77 insertions, 13 deletions
diff --git a/local/db.pm b/local/db.pm
index db20856..60c72b3 100644
--- a/local/db.pm
+++ b/local/db.pm
@@ -6,7 +6,7 @@ local::db::dbi->connection(@{$config::config{db}});
package local::db::download;
use base 'local::db::dbi';
local::db::download->table('download');
-local::db::download->columns(All => qw/download_id owner size time category name description completed/);
+local::db::download->columns(All => qw/download_id owner size time category name description completed processing/);
local::db::download->has_a(owner => 'local::db::owner');
local::db::download->has_a(category => 'local::db::category');
local::db::download->has_many(seen => 'local::db::seen');
diff --git a/local/menu.pm b/local/menu.pm
index d5078ff..714e06d 100644
--- a/local/menu.pm
+++ b/local/menu.pm
@@ -8,11 +8,11 @@ use config;
my %menus =
(
- '/cgi-bin/nzbget/groups.pl'=> [10 , 'Aktive Downloads'],
- '/cgi-bin/nzbget/mydl.pl?only_me=1'=>[20 , 'Meine Downloads'],
- '/cgi-bin/nzbget/mydl.pl'=> [30,'Alle Downloads'],
- '/cgi-bin/nzbget/log.pl'=> [50,'Protokoll'],
- '/cgi-bin/nzbget/search.pl'=> [5, 'Suche'],
+ 'download'=> [10 , 'Downloads','aktive','fertige','meine'],
+# 'list?only_me=1'=>[20 , 'Meine Downloads'],
+# 'list'=> [30,'Alle Downloads'],
+ 'log'=> [50,'Protokoll'],
+ 'search'=> [5, 'Suche', 'nzbindex.nl','NZB Datei hochladen'],
);
@@ -30,6 +30,11 @@ sub start_html
my $self=shift;
my ($title)=@_;
my $active = $self->{REQUEST_URI};
+ $active =~ s'.*/'';
+ $active =~ s'\?.*'';
+ my $active_sub;
+ ($active,$active_sub)= split /_/,$active;
+ $active_sub+=2;
my $html= CGI::start_html(-style=>{'src'=>'/style.css'},-title=>$title);
my $user = new local::user(%ENV);
$html.= table({class=>'nohigh'},Tr({class=>'nohigh'},td({style=>'font-weight: bold'},[$config::config{page_name} ]),td({class=>'login',align=>'right'},['<nobr>'.b('Angemeldet&nbsp;als:&nbsp;').$user->get_name.'</nobr>'])));
@@ -37,6 +42,7 @@ sub start_html
my @elements;
foreach my $url (sort {$menus{$a}->[0] <=> $menus{$b}->[0] } keys %menus)
{
+ next if not $menus{$url}->[1];
if ($url eq $active)
{
push @elements,th({class=>'active'},[$menus{$url}->[1]]);
@@ -48,6 +54,28 @@ sub start_html
Tr({class=>'menu'},join '',@elements
),
);
+ my @submens;
+ if ($#{$menus{$active}}>1)
+ {
+ foreach my $i (2..$#{$menus{$active}})
+ {
+ if ($i == $active_sub)
+ {
+ push @submens,th({class=>'active'},[$menus{$active}->[$i]]);
+ } else {
+ if ($i > 2)
+ {
+ push @submens,th([a({href=>"${active}_".($i-2)},$menus{$active}->[$i])]);
+ } else {
+ push @submens,th([a({href=>"${active}"},$menus{$active}->[$i])]);
+ }
+ }
+ }
+ }
+ $html.= table({class=>'submenu'},
+ Tr({class=>'submenu'},join '',@submens
+ ),
+ );
return $html;
}
diff --git a/local/nzbget.pm b/local/nzbget.pm
index ea3b47a..5f7a509 100644
--- a/local/nzbget.pm
+++ b/local/nzbget.pm
@@ -1,9 +1,11 @@
package local::nzbget;
require Exporter;
-require RPC::XML;
-require RPC::XML::Client;
use strict;
use base "Exporter";
+use config;
+require RPC::XML;
+require RPC::XML::Client;
+
sub new
{
@@ -11,12 +13,26 @@ sub new
my $class = ref($invocant) || $invocant;
# my $self = $class->SUPER::new(@_);
my $self=bless {@_}, $class;
- $self->{cli} = RPC::XML::Client->new('http://nzbget:tegbzn6789@127.0.0.1:6789/xmlrpc');
+ $self->{cli} = RPC::XML::Client->new($config::config{rpc_uri});
return $self;
}
sub send_request
{
my $self = shift;
- return $self->{cli}->send_request(@_) or die "Can't connect to nzbget";
+ my $res = $self->{cli}->send_request( @_ ) or die "Can't connect to nzbget";
+ my %result;
+ if (ref $res eq 'RPC::XML::hash') {
+ my %result;
+ foreach my $key (%$res)
+ {
+ $result{$key}=$res->{$key}->value;
+ }
+ return \%result;
+ } elsif (ref $res eq 'RPC::XML::array') {
+ my @array = map {$_->value} @$res;
+ return \@array;
+ } else {
+ return $res->value;
+ }
}
diff --git a/local/nzbindex.pm b/local/nzbindex.pm
index 492ebb3..70256fa 100755
--- a/local/nzbindex.pm
+++ b/local/nzbindex.pm
@@ -5,7 +5,8 @@ use base "Exporter";
use URI::Escape;
use XML::Parser;
use XML::SimpleObject;
-use LWP::Simple;
+use LWP::UserAgent;
+use HTTP::Cookies;
sub new
{
@@ -16,6 +17,25 @@ sub new
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");
+ $response = $ua->get('http://www.nzbindex.nl/rss/?'.$request);
+ if ($response->is_success) {
+ return $response->decoded_content;
+ }
+ else {
+ return;
+ die $response->status_line;
+ }
+}
+
sub search
{
my $self=shift;
@@ -23,10 +43,10 @@ sub search
my @result;
my $request='';
for my $key (keys %params) {
- $request.= uri_escape($key)."=".$params{$key}.'&';
+ $request.= uri_escape_utf8($key)."=".$params{$key}.'&';
}
$request =~ s/\&$//;
- my $feed = get('http://nzbindex.com/rss/?'.$request);
+ 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));