Update filename in the database according to the download extension file

This commit is contained in:
Moahmed-Ismail MEJRI
2022-03-23 20:50:50 +01:00
parent 2ec569e2b5
commit ce0ff3b3ac
5 changed files with 32 additions and 14 deletions

View File

@@ -18,6 +18,7 @@ class YoutubeController extends Controller
private $settings = null; private $settings = null;
//@config OC\AppConfig //@config OC\AppConfig
private $l10n; private $l10n;
private $audio_extensions = array("mp3", "m4a", "vorbis");
public function __construct($appName, IRequest $request, $UserId, IL10N $IL10N, Aria2 $aria2, Youtube $youtube) public function __construct($appName, IRequest $request, $UserId, IL10N $IL10N, Aria2 $aria2, Youtube $youtube)
{ {
@@ -79,10 +80,11 @@ class YoutubeController extends Controller
$params = array(); $params = array();
$url = trim($this->request->getParam('text-input-value')); $url = trim($this->request->getParam('text-input-value'));
$yt = $this->youtube; $yt = $this->youtube;
$yt->audioOnly = (bool) $this->request->getParam('audio-only'); if (in_array($this->request->getParam('extension'), $this->audio_extensions)) {
if ($yt->audioOnly) { $yt->audioOnly = TRUE;
$yt->audioFormat = $this->request->getParam('extension'); $yt->audioFormat = $this->request->getParam('extension');
} else { } else {
$yt->audioOnly = FALSE;
$yt->videoFormat = $this->request->getParam('extension'); $yt->videoFormat = $this->request->getParam('extension');
} }
if (!$yt->isInstalled()) { if (!$yt->isInstalled()) {
@@ -154,6 +156,15 @@ class YoutubeController extends Controller
$row = $this->dbconn->getByGid($gid); $row = $this->dbconn->getByGid($gid);
$data = $this->dbconn->getExtra($row["data"]); $data = $this->dbconn->getExtra($row["data"]);
if (!empty($data['link'])) { if (!empty($data['link'])) {
if (isset($data['ext'])) {
if (in_array($data['ext'], $this->audio_extensions)) {
$this->youtube->audioOnly = TRUE;
$this->youtube->audioFormat = $data['ext'];
} else {
$this->youtube->audioOnly = FALSE;
$this->youtube->videoFormat = $data['ext'];
}
}
//$this->dbconn->deleteByGid($gid); //$this->dbconn->deleteByGid($gid);
$resp = $this->youtube->forceIPV4()->download($data['link']); $resp = $this->youtube->forceIPV4()->download($data['link']);
folderScan::sync(); folderScan::sync();

View File

@@ -74,9 +74,9 @@ class Youtube
} else { } else {
$this->audioFormat = "m4a"; $this->audioFormat = "m4a";
} }
$pos = strrpos($this->outTpl, '.'); /*$pos = strrpos($this->outTpl, '.');
$this->outTpl = substr($this->outTpl, 0, $pos) . "." . $this->audioFormat; $this->outTpl = substr($this->outTpl, 0, $pos) . "." . $this->audioFormat;
//$this->outTpl = "/%(id)s-%(title)s.m4a"; $this->outTpl = "/%(id)s-%(title)s.m4a";*/
$this->setAudioFormat($this->audioFormat); $this->setAudioFormat($this->audioFormat);
return $this; return $this;
} }
@@ -145,6 +145,11 @@ class Youtube
$process = new Process($this->options, null, $this->env); $process = new Process($this->options, null, $this->env);
$process->setTimeout($this->timeout); $process->setTimeout($this->timeout);
$data = ['link' => $url]; $data = ['link' => $url];
if ($this->audioOnly) {
$data['ext'] = $this->audioFormat;
} else {
$data['ext'] = $this->videoFormat;
}
$process->run(function ($type, $buffer) use ($data, $process) { $process->run(function ($type, $buffer) use ($data, $process) {
if (Process::ERR === $type) { if (Process::ERR === $type) {
$this->onError($buffer); $this->onError($buffer);

View File

@@ -30,7 +30,8 @@ class YoutubeHelper
} }
public function getFilePath($output) public function getFilePath($output)
{ {
$rules = '#\[download\]\s+Destination:\s+(?<filename>.*\.(?<ext>(mp4|mp3|aac|webm|m4a|ogg|3gp|mkv|wav|flv)))#i'; $rules = '#\[(download|ExtractAudio|VideoConvertor|Merger)\]((\s+|\s+Converting.*;\s+)Destination:\s+|\s+Merging formats into\s+\")' .
'(?<filename>.*\.(?<ext>(mp4|mp3|aac|webm|m4a|ogg|3gp|mkv|wav|flv)))#i';
preg_match($rules, $output, $matches); preg_match($rules, $output, $matches);
@@ -70,9 +71,14 @@ class YoutubeHelper
'timestamp' => time(), 'timestamp' => time(),
'data' => $extra, 'data' => $extra,
]; ];
//save the filename as this runs only once if (isset($this->file)) {
$this->file = $file; $sql = sprintf("UPDATE %s set filename = ? WHERE gid = ?", $this->tablename);
$this->dbconn->executeUpdate($sql, [basename($file), $this->gid]);
} else {
$this->dbconn->insert($data); $this->dbconn->insert($data);
}
//save the filename as this runs only once
$this->file = basename($file);
//$this->dbconn->save($data,[],['gid' => $this->gid]); //$this->dbconn->save($data,[],['gid' => $this->gid]);
} }
if (preg_match_all(self::PROGRESS_PATTERN, $buffer, $matches, PREG_SET_ORDER) !== false) { if (preg_match_all(self::PROGRESS_PATTERN, $buffer, $matches, PREG_SET_ORDER) !== false) {

View File

@@ -59,13 +59,9 @@ export default {
let inputValue = formData["text-input-value"]; let inputValue = formData["text-input-value"];
let message; let message;
if (formData.type === "youtube-dl") { if (formData.type === "youtube-dl") {
formData["audio-only"] = "";
formData["extension"] = ""; formData["extension"] = "";
if (formData["select-value-extension"] !== "Default") { if (formData["select-value-extension"] !== "defaultext") {
formData["extension"] = formData["select-value-extension"]; formData["extension"] = formData["select-value-extension"];
if ((formData["select-value-extension"] === "mp3" ) || (formData["select-value-extension"] === "m4a" ) || (formData["select-value-extension"] === "vorbis" ) ) {
formData["audio-only"] = "true";
}
} }
message = helper.t("Download task started!"); message = helper.t("Download task started!");
} }

View File

@@ -28,7 +28,7 @@
<select :value="selectedExt" id="select-value-extension"> <select :value="selectedExt" id="select-value-extension">
<option <option
id="defaultext" id="defaultext"
:value="defaultext" value="defaultext"
> >
Default Default
</option> </option>
@@ -104,7 +104,7 @@ export default {
placeholder: t("ncdownloader", "Paste your http/magnet link here"), placeholder: t("ncdownloader", "Paste your http/magnet link here"),
searchLabel: t("ncdownloader", "Search Torrents"), searchLabel: t("ncdownloader", "Search Torrents"),
searchOptions: this.search_sites ? this.search_sites : this.noOptions(), searchOptions: this.search_sites ? this.search_sites : this.noOptions(),
selectedExt: "Default", selectedExt: "defaultext",
}; };
}, },
components: { components: {