From a148fd32d790d1e064ebdaf1c1a5e5e463bd7733 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Tue, 6 Dec 2022 11:29:17 -0600 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Fetch=20season=20and=20episode=20fr?= =?UTF-8?q?om=20file=20tags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Data/DataPipes/GetSeasonEp.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/Data/DataPipes/GetSeasonEp.php b/app/Data/DataPipes/GetSeasonEp.php index 30bd508..57c713c 100644 --- a/app/Data/DataPipes/GetSeasonEp.php +++ b/app/Data/DataPipes/GetSeasonEp.php @@ -2,6 +2,7 @@ namespace App\Data\DataPipes; +use FFMpeg\FFMpeg; use Illuminate\Support\Collection; use SimpleXMLElement; use Spatie\LaravelData\DataPipes\DataPipe; @@ -26,7 +27,7 @@ class GetSeasonEp implements DataPipe return $this->getEpFromNfo($properties, $nfo); } - return $properties; + return $this->getEpFromFfprobe($properties); } protected function getEpFromNfo(Collection $properties, string $nfo): Collection @@ -41,4 +42,21 @@ class GetSeasonEp implements DataPipe return $properties; } + + protected function getEpFromFfprobe(Collection $properties): Collection + { + $ffmpeg = FFMpeg::create(); + $ffprobe = $ffmpeg->getFFProbe(); + $tags = $ffprobe->format($properties->get('path'))->get('tags'); + + if ($season = $tags['season_number'] ?? $tags['SEASON_NUMBER'] ?? null) { + $properties['season'] = (int) $season; + } + + if ($episode = $tags['episode_sort'] ?? $tags['EPISODE_SORT'] ?? null) { + $properties['episode'] = (int) $episode; + } + + return $properties; + } }