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

View File

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

View File

@@ -30,7 +30,8 @@ class YoutubeHelper
}
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);
@@ -70,9 +71,14 @@ class YoutubeHelper
'timestamp' => time(),
'data' => $extra,
];
if (isset($this->file)) {
$sql = sprintf("UPDATE %s set filename = ? WHERE gid = ?", $this->tablename);
$this->dbconn->executeUpdate($sql, [basename($file), $this->gid]);
} else {
$this->dbconn->insert($data);
}
//save the filename as this runs only once
$this->file = $file;
$this->dbconn->insert($data);
$this->file = basename($file);
//$this->dbconn->save($data,[],['gid' => $this->gid]);
}
if (preg_match_all(self::PROGRESS_PATTERN, $buffer, $matches, PREG_SET_ORDER) !== false) {