diff --git a/lib/Controller/Aria2Controller.php b/lib/Controller/Aria2Controller.php index 9436806..bfb5210 100644 --- a/lib/Controller/Aria2Controller.php +++ b/lib/Controller/Aria2Controller.php @@ -192,8 +192,9 @@ class Aria2Controller extends Controller //internal nextcloud absolute path for nodeExists //$file = $this->userFolder . $this->downloadDir . "/" . $filename; // $dir = $this->rootFolder->nodeExists($file) ? $this->downloadDir . "/" . $filename : $this->downloadDir; - $file = $this->downloadDir . "/" . $filename; - $params = ['dir' => $this->downloadDir]; + $dlDir = $extra['path'] ?? $this->downloadDir; + $file = $dlDir. "/" . $filename; + $params = ['dir' => $dlDir]; $fileInfo = Filesystem::getFileInfo($file); if ($fileInfo) { $fileType = $fileInfo->getType(); diff --git a/lib/Controller/MainController.php b/lib/Controller/MainController.php index 360042c..7d5bf0f 100644 --- a/lib/Controller/MainController.php +++ b/lib/Controller/MainController.php @@ -158,7 +158,7 @@ class MainController extends Controller 'type' => Helper::DOWNLOADTYPE['ARIA2'], 'filename' => empty($filename) ? "unknown" : $filename, 'timestamp' => time(), - 'data' => serialize(['link' => $url]), + 'data' => serialize(['link' => $url,'path' => Helper::getDownloadDir()]), ]; $this->dbconn->save($data); $resp = ['message' => $filename, 'result' => $result, 'file' => $filename]; diff --git a/lib/Controller/YoutubeController.php b/lib/Controller/YoutubeController.php index f7e02d5..f52fc8a 100644 --- a/lib/Controller/YoutubeController.php +++ b/lib/Controller/YoutubeController.php @@ -43,7 +43,7 @@ class YoutubeController extends Controller } $resp['title'] = []; $resp['row'] = []; - $params = ['dir' => $this->downloadDir]; + $params = ['dir' => $data['path'] ?? $this->downloadDir]; $folderLink = $this->urlGenerator->linkToRoute('files.view.index', $params); foreach ($data as $value) { $tmp = []; @@ -92,7 +92,7 @@ class YoutubeController extends Controller if (Helper::isGetUrlSite($url)) { return new JSONResponse($this->downloadUrlSite($url)); } - + $yt->dbDlPath = Helper::getDownloadDir(); $resp = $yt->forceIPV4()->download($url); folderScan::sync(); return new JSONResponse($resp); @@ -165,6 +165,7 @@ class YoutubeController extends Controller } } //$this->dbconn->deleteByGid($gid); + $this->youtube->dbDlPath = Helper::getDownloadDir(); $resp = $this->youtube->forceIPV4()->download($data['link']); folderScan::sync(); return new JSONResponse($resp); diff --git a/lib/Tools/Youtube.php b/lib/Tools/Youtube.php index 1ffb021..9f0af04 100644 --- a/lib/Tools/Youtube.php +++ b/lib/Tools/Youtube.php @@ -9,6 +9,8 @@ class Youtube { public $audioOnly = 0; public $audioFormat = 'm4a', $videoFormat = null; + //path in nextcloud fs + public $dbDlPath = null; private $format = 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'; private $options = []; private $downloadDir; @@ -142,7 +144,7 @@ class Youtube $this->prependOption($this->bin); $process = new Process($this->options, null, $this->env); $process->setTimeout($this->timeout); - $data = ['link' => $url]; + $data = ['link' => $url,'path' => $this->dbDlPath]; if ($this->audioOnly) { $data['ext'] = $this->audioFormat; } else { diff --git a/src/components/folderSettings.vue b/src/components/folderSettings.vue index 18e6a67..258bde0 100644 --- a/src/components/folderSettings.vue +++ b/src/components/folderSettings.vue @@ -22,7 +22,8 @@ export default { } let data = { ncd_downloader_dir: path }; let url = helper.generateUrl("/apps/ncdownloader/personal/save"); - helper.httpClient(url) + helper + .httpClient(url) .setData(data) .setHandler((data) => { if (data.status) { @@ -31,7 +32,10 @@ export default { }) .send(); }; - helper.filepicker(cb); + let dlPath = element.hasAttribute("data-path") + ? element.getAttribute("data-path") + : undefined; + helper.filepicker(cb, dlPath); }, }, props: ["path"], diff --git a/src/settings.js b/src/settings.js index f980174..ef094f0 100644 --- a/src/settings.js +++ b/src/settings.js @@ -10,6 +10,7 @@ import aria2Options from './utils/aria2Options'; import { options as ytdFullOptions, names as ytdOptions } from './utils/youtubedlOptions'; import helper from './utils/helper'; import './css/autoComplete.css' +import './css/settings.scss' 'use strict'; import { delegate } from 'tippy.js'; import 'tippy.js/dist/tippy.css'; diff --git a/src/utils/helper.js b/src/utils/helper.js index a7b615a..c0b191f 100644 --- a/src/utils/helper.js +++ b/src/utils/helper.js @@ -287,13 +287,15 @@ const helper = { container.setAttribute("type", name); container.className = "table " + name; }, - filepicker(cb) { + filepicker(cb,currentPath) { OC.dialogs.filepicker( t('ncdownloader', 'Select a directory'), cb, false, 'httpd/unix-directory', - true + true, + OC.dialogs.FILEPICKER_TYPE_CHOOSE, + currentPath ); }, getSettings(key, defaultValue = null, type = 2) {