From 5a9fa858b35c79ae59cd11bc86ce0424830e34ea Mon Sep 17 00:00:00 2001 From: Kyrch Date: Fri, 8 Mar 2024 22:13:35 -0300 Subject: [PATCH] feat(admin): parse video resolution in upload video action (#609) --- app/Actions/Storage/Wiki/Video/UploadVideoAction.php | 8 +++++++- app/Rules/Wiki/Submission/SubmissionRule.php | 10 +++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Actions/Storage/Wiki/Video/UploadVideoAction.php b/app/Actions/Storage/Wiki/Video/UploadVideoAction.php index 2b1349b1a..eaf0a80bb 100644 --- a/app/Actions/Storage/Wiki/Video/UploadVideoAction.php +++ b/app/Actions/Storage/Wiki/Video/UploadVideoAction.php @@ -12,6 +12,7 @@ use App\Enums\Models\Wiki\VideoOverlap; use App\Enums\Models\Wiki\VideoSource; use App\Models\Wiki\Anime\Theme\AnimeThemeEntry; use App\Models\Wiki\Video; +use App\Rules\Wiki\Submission\SubmissionRule; use Exception; use Illuminate\Http\UploadedFile; use Illuminate\Support\Arr; @@ -100,7 +101,12 @@ class UploadVideoAction extends UploadAction ]; if (Arr::has($this->attributes, Video::ATTRIBUTE_RESOLUTION)) { - $attributes[Video::ATTRIBUTE_RESOLUTION] = Arr::get($this->attributes, Video::ATTRIBUTE_RESOLUTION); + if (!empty($this->attributes[Video::ATTRIBUTE_RESOLUTION])) { + $attributes[Video::ATTRIBUTE_RESOLUTION] = Arr::get($this->attributes, Video::ATTRIBUTE_RESOLUTION); + } else { + $ffprobeData = SubmissionRule::$ffprobeData; + $attributes[Video::ATTRIBUTE_RESOLUTION] = intval($ffprobeData['streams'][0]['height']); + } } if (Arr::has($this->attributes, Video::ATTRIBUTE_NC)) { $attributes[Video::ATTRIBUTE_NC] = Arr::get($this->attributes, Video::ATTRIBUTE_NC); diff --git a/app/Rules/Wiki/Submission/SubmissionRule.php b/app/Rules/Wiki/Submission/SubmissionRule.php index 2b03139f7..47b30b930 100644 --- a/app/Rules/Wiki/Submission/SubmissionRule.php +++ b/app/Rules/Wiki/Submission/SubmissionRule.php @@ -22,7 +22,7 @@ abstract class SubmissionRule implements ValidationRule, ValidatorAwareRule * * @var array */ - protected array $ffprobeData; + public static array $ffprobeData; /** * The loudness stats of the input file as parsed by the ffmpeg audio filter. @@ -47,7 +47,7 @@ abstract class SubmissionRule implements ValidationRule, ValidatorAwareRule $ffprobeData = $this->getFFprobeData($file); $validator->setValue('ffprobeData', $ffprobeData); } - $this->ffprobeData = $ffprobeData; + static::$ffprobeData = $ffprobeData; $loudnessStats = Arr::get($validator->getData(), 'loudnessStats'); if ($loudnessStats === null && $file !== null) { @@ -98,7 +98,7 @@ abstract class SubmissionRule implements ValidationRule, ValidatorAwareRule */ protected function streams(): array { - return Arr::get($this->ffprobeData, 'streams', []); + return Arr::get(static::$ffprobeData, 'streams', []); } /** @@ -108,7 +108,7 @@ abstract class SubmissionRule implements ValidationRule, ValidatorAwareRule */ protected function format(): array { - return Arr::get($this->ffprobeData, 'format', []); + return Arr::get(static::$ffprobeData, 'format', []); } /** @@ -118,7 +118,7 @@ abstract class SubmissionRule implements ValidationRule, ValidatorAwareRule */ protected function chapters(): array { - return Arr::get($this->ffprobeData, 'chapters', []); + return Arr::get(static::$ffprobeData, 'chapters', []); } /**