diff options
author | Othmar Gsenger <otti@wirdorange.org> | 2011-03-31 19:05:23 +0000 |
---|---|---|
committer | Othmar Gsenger <otti@wirdorange.org> | 2011-03-31 19:05:23 +0000 |
commit | d26fa8c1e0886c813de5364ee6570c860c6ce12c (patch) | |
tree | 418120693100150b0443d3d880f945aaa45a0d22 /local | |
parent | added support for browsing by category (diff) |
hopfully repaired this after backup loss
Diffstat (limited to 'local')
-rw-r--r-- | local/db.pm | 2 | ||||
-rw-r--r-- | local/menu.pm | 38 | ||||
-rw-r--r-- | local/nzbget.pm | 24 | ||||
-rwxr-xr-x | local/nzbindex.pm | 26 |
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 als: ').$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)); |