summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@wirdorange.org>2011-01-14 03:50:24 +0000
committerOthmar Gsenger <otti@wirdorange.org>2011-01-14 03:50:24 +0000
commit389a32204546ce812f04cf990725c18ee5514ecc (patch)
tree99ccea390cad9bfedbcc5bfcc9ff01dfa8a9d13d
parentadded modules (diff)
added database support
-rwxr-xr-xenqueue.pl18
-rwxr-xr-xgroups.pl39
-rw-r--r--local/db.pm22
-rwxr-xr-xlocal/nzbindex.pm2
-rw-r--r--local/user.pm34
-rwxr-xr-xlog.pl6
-rwxr-xr-xmydl.pl33
-rwxr-xr-xpre_enqueue.pl28
-rwxr-xr-xsearch.pl3
9 files changed, 170 insertions, 15 deletions
diff --git a/enqueue.pl b/enqueue.pl
index 5d53a28..1e5d30d 100755
--- a/enqueue.pl
+++ b/enqueue.pl
@@ -2,21 +2,27 @@
use strict;
use CGI qw(:standard);
use CGI::Carp 'fatalsToBrowser';
+use local::db;
+use local::nzbget;
+use local::user;
+my $user = new local::user($ENV{REMOTE_USER});
+my $nzbget = new local::nzbget;
-require RPC::XML;
-require RPC::XML::Client;
+my $cat = local::db::category->retrieve(name=>param('cat'));
+die "Ungültige category" if not $cat;
-my $cli = RPC::XML::Client->new('http://nzbget:tegbzn6789@127.0.0.1:6789/xmlrpc');
-my $resp = $cli->send_request('version') or die "Can't connect to nubget";
+my $category = $cat->name();
+my ($size) = param('description') =~ m/<b>(.*)<\/b>/;
+$size = 0;
+my $download = local::db::download->insert({owner=>$user->get_id(),name=>param('name'),category=>param('cat'),description=>param('title'),size=>$size});
use LWP::Simple;
my $nzb = get(param('url'));
die "Couldn't get ".param('url') unless defined $nzb;
use MIME::Base64;
$nzb = encode_base64($nzb);
-my $category = param('cat') || 'test';
-$resp = $cli->send_request('append',RPC::XML::string->new(param('name')),RPC::XML::string->new($category),RPC::XML::boolean->new(0),RPC::XML::string->new($nzb));
+my $resp = $nzbget->send_request('append',RPC::XML::string->new($download->download_id()),RPC::XML::string->new($category),RPC::XML::boolean->new(0),RPC::XML::string->new($nzb));
if ($resp->value)
{
diff --git a/groups.pl b/groups.pl
new file mode 100755
index 0000000..4636c80
--- /dev/null
+++ b/groups.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+use strict;
+use CGI qw(:standard);
+use CGI::Carp 'fatalsToBrowser';
+use local::nzbget;
+use local::db;
+print header;
+print start_html('nzbget groups');
+
+my $cli = new local::nzbget;
+print hr();
+print CGI::start_table();
+my $status = $cli->send_request('status') or die "Can't connect to nubget";
+#print Tr(td['download speed', 'cur', int($status->{DownloadRate}->value/(1024*1024)).'MB/s','average',int($status->{AverageDownloadRate}->value/(1024*1024)).'MB/s']);
+print Tr(td['download speed', int($status->{DownloadRate}->value/(1024*1024)).'MB/s']);
+print CGI::end_table();
+print hr();
+
+my $row = $cli->send_request('listgroups') or die "Can't connect to nubget";
+print CGI::start_table();
+foreach my $value ( @$row)
+{
+ my ($download) = local::db::download->retrieve($value->{NZBNicename}->value) or die ' Error in groups';
+ my $remaining=$value->{RemainingSizeMB}->value;
+ my $total=$value->{FileSizeMB}->value;
+ my $percent = int(100-100*$remaining/$total);
+ $download->size($total);
+ $download->update();
+ print Tr(td([$download->category->name,$download->name,$download->owner->name,$percent.'%']));
+ #foreach my $key (keys %$value)
+ #{
+ # print Tr(td([$key,$value->{$key}->value]));
+ #}
+}
+;
+print CGI::end_table();
+
+print end_html;
+
diff --git a/local/db.pm b/local/db.pm
new file mode 100644
index 0000000..344b5a8
--- /dev/null
+++ b/local/db.pm
@@ -0,0 +1,22 @@
+package local::db::dbi;
+use base 'Class::DBI';
+local::db::dbi->connection('dbi:SQLite:/srv/nzbget/datenbank.sqlite', '', '');
+
+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/);
+local::db::download->has_a(owner => 'local::db::owner');
+local::db::download->has_a(category => 'local::db::category');
+
+package local::db::category;
+use base 'local::db::dbi';
+local::db::category->table('category');
+local::db::category->columns(All => qw/category_id name/);
+local::db::category->has_many(download => 'local::db::download');
+
+package local::db::owner;
+use base 'local::db::dbi';
+local::db::owner->table('owner');
+local::db::owner->columns(All => qw/owner_id name quoata quota_used/);
+local::db::owner->has_many(download => 'local::db::download');
diff --git a/local/nzbindex.pm b/local/nzbindex.pm
index 8352a5d..492ebb3 100755
--- a/local/nzbindex.pm
+++ b/local/nzbindex.pm
@@ -1,4 +1,4 @@
-package local::nzbget;
+package local::nzbindex;
require Exporter;
use strict;
use base "Exporter";
diff --git a/local/user.pm b/local/user.pm
new file mode 100644
index 0000000..8e134a8
--- /dev/null
+++ b/local/user.pm
@@ -0,0 +1,34 @@
+package local::user;
+require Exporter;
+use strict;
+use local::db;
+use base "Exporter";
+
+sub new
+{
+ my $invocant = shift;
+ my $class = ref($invocant) || $invocant;
+ # my $self = $class->SUPER::new(@_);
+ my $self=bless {}, $class;
+ ($self->{name})=@_;
+ my @user = local::db::owner->search(name => $self->{name});
+ if (not @user)
+ {
+ push @user,local::db::owner->insert({name => $self->{name}});
+ }
+ $self->{id}=$user[0]->owner_id();
+ die 'Could not find you user' if not $self->{id};
+ return $self;
+}
+
+sub get_name
+{
+ my $self = shift;
+ return $self->{name};
+}
+
+sub get_id
+{
+ my $self = shift;
+ return $self->{id};
+}
diff --git a/log.pl b/log.pl
index 72b8c72..84ccbd1 100755
--- a/log.pl
+++ b/log.pl
@@ -8,14 +8,8 @@ use URI::Escape;
print header;
print start_html('nzbget status');
-print hr();
my $cli = new local::nzbget;
print CGI::start_table();
-my $status = $cli->send_request('status') or die "Can't connect to nubget";
-print Tr(td['download speed', 'cur', int($status->{DownloadRate}->value/(1024*1024)).'MB/s','average',int($status->{AverageDownloadRate}->value/(1024*1024)).'MB/s']);
-print CGI::end_table();
-print hr();
-print CGI::start_table();
my $resp = $cli->send_request('log',0,10) or die "Can't connect to nubget";
foreach my $row (@{ $resp->value})
{
diff --git a/mydl.pl b/mydl.pl
new file mode 100755
index 0000000..cfa3896
--- /dev/null
+++ b/mydl.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+use strict;
+use CGI qw(:standard);
+use CGI::Carp 'fatalsToBrowser';
+use local::nzbget;
+use local::db;
+use local::user;
+my $user = new local::user($ENV{REMOTE_USER});
+
+
+print header;
+print start_html('my downloads');
+
+print CGI::start_table();
+my @downloads;
+if (param('only_me'))
+{
+ @downloads = local::db::download->search(owner=>$user->get_id(),{ order_by => 'time DESC'});
+} else {
+ @downloads = local::db::download->retrieve_all({ order_by => 'time DESC'});
+}
+foreach my $dl ( @downloads)
+{
+ print Tr(td([
+ $dl->category->name,a({title=>$dl->description,href=>$dl->category->name.'/'.$dl->download_id},$dl->name),$dl->size.'MB'
+
+ ]));
+}
+;
+print CGI::end_table();
+
+print end_html;
+
diff --git a/pre_enqueue.pl b/pre_enqueue.pl
new file mode 100755
index 0000000..7b3df63
--- /dev/null
+++ b/pre_enqueue.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+use strict;
+use CGI qw(:standard);
+use CGI::Carp 'fatalsToBrowser';
+use local::db;
+
+my @cat = local::db::category->retrieve_all();
+die "Ungültige category" if not @cat;
+
+print header;
+print start_html('nzbget pre_enqueue');
+print CGI::start_form(-action=>'/cgi-bin/nzbget/enqueue.pl');
+print table(
+ Tr(td(param('title'))),
+ Tr(td(param('description'))),
+),
+table(
+ Tr(td(['name',textfield('name').hidden('description',param('description')).hidden('url',param('url')).hidden('title',param('title'))])),
+ Tr(td(['category',
+ CGI::popup_menu(
+ -name=>'cat',
+ -values=>[0,map {$_->name()} @cat],
+ -labels => {0=>'---', map { ($_->category_id() => $_->name() ) } @cat}
+ )])),
+ Tr(td([submit()])),
+);
+print CGI::end_form;
+print end_html();
diff --git a/search.pl b/search.pl
index 66aafef..7767401 100755
--- a/search.pl
+++ b/search.pl
@@ -35,8 +35,7 @@ if ($param_obj->has_params())
print CGI::start_table();
foreach my $item (@search) {
print Tr(td([
- a({href=>"./enqueue.pl?url=".uri_escape($item->{url})."&name=".uri_escape(param('q'))},$item->{title}).' '.
- a({href=>"./enqueue.pl?url=".uri_escape($item->{url})."&name=".uri_escape(param('q'))."&cat=music"},'Music').
+ a({href=>"./pre_enqueue.pl?url=".uri_escape($item->{url})."&name=".uri_escape(param('q'))."&description=".uri_escape($item->{description})."&title=".uri_escape($item->{title})},$item->{title}).' '.
$item->{description}]));
}
print CGI::end_table();