From 6272cfecc8079f32e8d690f26654f5d8f64e8ca5 Mon Sep 17 00:00:00 2001 From: Emmanuel Dreyfus Date: Thu, 11 Feb 2021 08:44:16 +0100 Subject: [PATCH] Let submitter specify the desired video status This adds a drop-down menu in upload interface so that the video status after upload can be specified. Default is to let the streamer configuration do the job, as it does without the modification. This requires a forthcoming modification to AVideo so that the request is honoured. --- install/database.sql | 4 +++- objects/Encoder.php | 27 ++++++++++++++++++++++++++- update/updateDb.v3.5.sql | 1 + view/index.php | 11 +++++++++++ view/jquery-file-upload/js/main.js | 2 ++ view/upload.php | 3 ++- 6 files changed, 45 insertions(+), 3 deletions(-) diff --git a/install/database.sql b/install/database.sql index 5e53bb3b9..75c88a0f6 100644 --- a/install/database.sql +++ b/install/database.sql @@ -55,6 +55,8 @@ CREATE TABLE IF NOT EXISTS `encoder_queue` ( `videoDownloadedLink` VARCHAR(255) NULL, `downloadedFileName` VARCHAR(255) NULL, `streamers_id` INT NOT NULL, + `override_status` VARCHAR(45) NULL + `status` VARCHAR(45) NULL, `formats_id` INT NOT NULL, `created` DATETIME NULL, `modified` DATETIME NULL, @@ -150,4 +152,4 @@ INSERT INTO `formats` VALUES (31,'Dynamic MP4','-vf scale=-2:{$resolution} -movf INSERT INTO `formats` VALUES (32,'Dynamic WEBM','-vf scale=-2:{$resolution} -movflags +faststart -preset veryfast -f webm -c:v libvpx -b:v 1M -acodec libvorbis -b:a {$autioBitrate}k -y {$destinationFile}',now(),now(),'webm','mp4',8); INSERT INTO `formats` VALUES (33,'Audio to HLS','',now(),now(),'m3u8','mp3',88); INSERT INTO `formats` VALUES (34,'Audio to MP4','',now(),now(),'mp4','mp3',89); -INSERT INTO `formats` VALUES (35,'Audio to WEBM','',now(),now(),'webm','mp3',90); \ No newline at end of file +INSERT INTO `formats` VALUES (35,'Audio to WEBM','',now(),now(),'webm','mp3',90); diff --git a/objects/Encoder.php b/objects/Encoder.php index d027a7e58..c5decb863 100644 --- a/objects/Encoder.php +++ b/objects/Encoder.php @@ -10,7 +10,7 @@ class Encoder extends ObjectYPT { - protected $id, $fileURI, $filename, $status, $status_obs, $return_vars, $worker_pid, $priority, $created, $modified, $formats_id, $title, $videoDownloadedLink, $downloadedFileName, $streamers_id; + protected $id, $fileURI, $filename, $status, $status_obs, $return_vars, $worker_pid, $priority, $created, $modified, $formats_id, $title, $videoDownloadedLink, $downloadedFileName, $streamers_id, $override_status; static function getSearchFieldsNames() { return array('filename'); @@ -198,6 +198,14 @@ function setStreamers_id($streamers_id) { $this->streamers_id = $streamers_id; } + function getOverride_status() { + return $this->override_status; + } + + function setOverride_status($override_status) { + $this->override_status = $override_status; + } + function setFormats_id($formats_id) { if (!preg_match('/^[0-9]+$/', $formats_id)) { $formats_id = Format::createIfNotExists($formats_id); @@ -679,6 +687,10 @@ private function notifyVideoIsDone($fail = 0) { 'password' => $pass, 'fail' => $fail ); + + if (!empty($this->override_status)) + $postFields['overrideStatus'] = $this->override_status; + $obj->postFields = $postFields; $curl = curl_init(); @@ -935,6 +947,19 @@ static function sendFile($file, $videos_id, $format, $encoder = null, $resolutio 'encoderURL' => $global['webSiteRootURL'], 'keepEncoding' => $keep_encoding ? "1" : "0", ); + + if (!empty($encoder->override_status)) { + $override_status = $encoder->override_status; + + // If unfinished progressive upload, status is + // active and coding (k) if active (a) was requested + // or encoding (e) otherwise. + if ($keep_encoding) + $override_status = $override_status == 'a' ? 'k' : 'e'; + + $postFields['overrideStatus'] = $override_status; + } + $count = 0; foreach ($usergroups_id as $value) { $postFields["usergroups_id[{$count}]"] = $value; diff --git a/update/updateDb.v3.5.sql b/update/updateDb.v3.5.sql index cae037cda..8caec9ee2 100644 --- a/update/updateDb.v3.5.sql +++ b/update/updateDb.v3.5.sql @@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS `upload_queue` ( ON UPDATE CASCADE) ENGINE = InnoDB; +ALTER TABLE `encoder_queue` ADD COLUMN `override_status` VARCHAR(45) NULL; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; diff --git a/view/index.php b/view/index.php index 5642385a3..1e2c100ae 100644 --- a/view/index.php +++ b/view/index.php @@ -556,6 +556,15 @@ function checkProgress() { } }); +
+ +
} function createQueueItem(queueItem, queueItemAfter) { @@ -724,6 +733,7 @@ function (isConfirm) { "audioOnly": $('#inputAudioOnly').is(":checked"), "spectrum": $('#inputAudioSpectrum').is(":checked"), "webm": $('#inputWebM').is(":checked"), + "override_status": $('#override_status').val(), "inputHLS": $('#inputHLS').is(":checked"), "inputLow": $('#inputLow').is(":checked"), "inputSD": $('#inputSD').is(":checked"), @@ -786,6 +796,7 @@ function (isConfirm) { "audioOnly": $('#inputAudioOnly').is(":checked"), "spectrum": $('#inputAudioSpectrum').is(":checked"), "webm": $('#inputWebM').is(":checked"), + "override_status": $('#override_status').val(), "inputHLS": $('#inputHLS').is(":checked"), "inputLow": $('#inputLow').is(":checked"), "inputSD": $('#inputSD').is(":checked"), diff --git a/view/jquery-file-upload/js/main.js b/view/jquery-file-upload/js/main.js index 9ff2ba09d..77b04c8e2 100644 --- a/view/jquery-file-upload/js/main.js +++ b/view/jquery-file-upload/js/main.js @@ -117,6 +117,7 @@ $(function () { "audioOnly": $('#inputAudioOnly').is(":checked"), "spectrum": $('#inputAudioSpectrum').is(":checked"), "webm": $('#inputWebM').is(":checked"), + "override_status": $('#override_status').val(), "inputHLS": $('#inputHLS').is(":checked"), "inputLow": $('#inputLow').is(":checked"), "inputSD": $('#inputSD').is(":checked"), @@ -141,6 +142,7 @@ $(function () { "audioOnly": $('#inputAudioOnly').is(":checked"), "spectrum": $('#inputAudioSpectrum').is(":checked"), "webm": $('#inputWebM').is(":checked"), + "override_status": $('#override_status').val(), "inputHLS": $('#inputHLS').is(":checked"), "inputLow": $('#inputLow').is(":checked"), "inputSD": $('#inputSD').is(":checked"), diff --git a/view/upload.php b/view/upload.php index 9d4e4f0be..b773998f5 100644 --- a/view/upload.php +++ b/view/upload.php @@ -92,7 +92,8 @@ $e->setFormats_id(3); } } - + if (!empty($_POST['override_status'])) + $e->setOverride_status($_POST['override_status']); $obj = new stdClass(); $f = new Format($e->getFormats_id());