summaryrefslogtreecommitdiff
path: root/nzbget/download.pm
blob: 505df9bf24ca45c4c769c7837fe3ca9fdad3a62c (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package nzbget::download;
use strict;
use Apache2::Const -compile => qw(OK REDIRECT);
use CGI qw(:standard);
use local::nzbget;
use local::db;
use local::user;
use utf8;
#use CGI::Ajax;

sub handler
{
  print header();
	print Show_HTML();
#	my $cgi = new CGI;
#	my $pjx = new CGI::Ajax( 'get_download_speed' => \&get_download_speed,
#														'get_download_table' => \&get_download_table
#													);
#	print $pjx->build_html( $cgi, \&Show_HTML);
	return Apache2::Const::OK;
}

sub get_download_speed
{
  my $cli = new local::nzbget;
  my $status = $cli->send_request('status') or die "Can't connect to nzbget"; 
  my $speed = int($status->{DownloadRate}/(1024*1024));
  return $speed?$speed.'MB/s':int($status->{DownloadRate}/1024).'KB/s';   
}

sub get_download_table
{
	my $user = new local::user(%ENV);
  my $html;
  my $cli = new local::nzbget;
  my $row = $cli->send_request('listgroups') or die "Can't connect to nzbget";
  $html.= CGI::start_table();
  $html.= Tr(th([qw/Kategorie Name Besitzer Größe(MB) Fortschritt Abbrechen/]));
  foreach my $value ( @$row)
  {
    my ($download) = local::db::download->retrieve($value->{NZBNicename}) or die ' Error in groups';
    my $remaining=$value->{RemainingSizeMB};
    my $total=$value->{FileSizeMB};
    my $percent = int(100-100*$remaining/$total);
    if (not $download->size)
    {
      $download->size($total);
      $download->update();
      $user->obj->quota_used($user->obj->quota_used+$total); 
      $user->obj->update();
    }
    my $cancel;	
		if ($download->processing == 1)
		{	
      $html.=Tr(td([$download->category->name,$download->name,$download->owner->name,$total,'unpacking','']));
		} else {
			$cancel=a({href=>'cancel?id='.$value->{NZBNicename}},'Abbrechen') if (($download->owner->owner_id() eq $user->get_id()) or ($user->is_admin));
			$html.= Tr(td([$download->category->name,$download->name,$download->owner->name,$total,$percent.'%',$cancel]));
		}
    #foreach my $key (keys %$value)
    #{
    # $html.= Tr(td([$key,$value->{$key}]));
    #} 
  }
  $html.= CGI::end_table();
  return $html;
}

sub Show_HTML
{
  use local::menu;
  my $menu= new local::menu(%ENV);
  my $html= $menu->start_html('nzbget status');

  $html.= <<LALALA
  <script type="text/javascript" language="JavaScript"><!--
    window.setInterval("window.location.reload();", 2000);
    //--></script> 
LALALA
  ;
#  $html.= <<LALALA
#  <script type="text/javascript" language="JavaScript"><!--
#    window.setInterval("get_download_speed( [], ['speed'] ); get_download_table( [], ['dls'] );", 1000);
#    //--></script> 
#LALALA
#  ;
  $html.= table({class=>'nohigh'},Tr(td['download speed &nbsp; '. span({id=>'speed'},get_download_speed())]),Tr(td(['&nbsp;'])));   
  $html.= div({id=>'dls'},get_download_table());

  $html.= $menu->end_html();
  return $html
}

1;