get('path'); $pi = pathinfo($path); $nfo = "{$pi['dirname']}/{$pi['filename']}.nfo"; if (file_exists($nfo)) { $properties['epNfo'] = $nfo; return $this->getEpFromNfo($properties, $nfo); } return $this->getEpFromFfprobe($properties); } protected function getEpFromNfo(Collection $properties, string $nfo): Collection { $xml = simplexml_load_file($nfo); if ($xml->season) { $properties['season'] = (int) $xml->season; } if ($xml->episode) { $properties['episode'] = (int) $xml->episode; } 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; } }