fixed #15;added support for downloading via bittorrent files;added new class for getting download statistics

This commit is contained in:
huangjx
2021-10-21 18:18:41 +08:00
parent c2ce945aad
commit 5037180a40
12 changed files with 190 additions and 36 deletions

View File

@@ -3,6 +3,7 @@
namespace OCA\NCDownloader\Controller;
use OCA\NCDownloader\Tools\Aria2;
use OCA\NCDownloader\Tools\Counters;
use OCA\NCDownloader\Tools\DBConn;
use OCA\NCDownloader\Tools\Helper;
use OCP\AppFramework\Controller;
@@ -33,6 +34,7 @@ class MainController extends Controller
$this->aria2 = $aria2;
$this->aria2->init();
$this->dbconn = new DBConn();
$this->counters = new Counters($aria2, $this->dbconn, $UserId);
}
/**
* @NoAdminRequired
@@ -43,24 +45,24 @@ class MainController extends Controller
// $str = \OC::$server->getDatabaseConnection()->getInner()->getPrefix();
//$config = \OC::$server->getAppConfig();
OC_Util::addScript($this->appName, 'app');
// OC_Util::addStyle($this->appName, 'style');
// OC_Util::addStyle($this->appName, 'table');
// OC_Util::addStyle($this->appName, 'table');
$params = array();
$params['aria2_running'] = $this->aria2->isRunning();
$params['aria2_installed'] = $this->aria2->isInstalled();
$params['youtube_installed'] = (bool) Helper::findBinaryPath('youtube-dl');
$params['counter'] = $this->counters->getCounters();
$response = new TemplateResponse($this->appName, 'Index', $params);
return $response;
}
/**
/**
* @NoAdminRequired
* @NoCSRFRequired
*/
public function Download()
{
$url = trim($this->request->getParam('form_input_text'));
$url = trim($this->request->getParam('text-input-value'));
//$type = trim($this->request->getParam('type'));
$resp = $this->_download($url);
return new JSONResponse($resp);
@@ -89,8 +91,39 @@ class MainController extends Controller
'data' => serialize(['link' => $url]),
];
$this->dbconn->save($data);
$resp = ['message' => $filename, 'result' => $result,'file' => $filename];
$resp = ['message' => $filename, 'result' => $result, 'file' => $filename];
return $resp;
}
/**
* @NoAdminRequired
* @NoCSRFRequired
*/
public function Upload()
{
if (is_uploaded_file($file = $_FILES['torrentfile']['tmp_name'])) {
$file = $this->aria2->getTorrentsDir() . '/' . Helper::cleanString($_FILES['torrentfile']['name']);
move_uploaded_file($_FILES['torrentfile']['tmp_name'], $file);
$result = $this->aria2->btDownload($file);
if (!$result) {
return ['error' => 'failed to download the file for some reason!'];
}
if (isset($result['error'])) {
return $result;
}
$data = [
'uid' => $this->uid,
'gid' => $result['gid'],
'type' => Helper::DOWNLOADTYPE['ARIA2'],
'filename' => $result['filename'] ?? 'unknown',
'timestamp' => time(),
];
$this->dbconn->save($data);
$resp = ['message' => $result['filename'], 'result' => $result['gid'], 'file' => $result['filename']];
}
return new JSONResponse($resp);
}
}