diff --git a/src/Torrentio/Result/ResultFactory.php b/src/Torrentio/Result/ResultFactory.php index 2fa8add..7a92f26 100644 --- a/src/Torrentio/Result/ResultFactory.php +++ b/src/Torrentio/Result/ResultFactory.php @@ -21,29 +21,32 @@ class ResultFactory string $bingeGroup = "-", string $imdbId = "-", ) { - $ptn = (object) (new PTN())->parse($title); - return new TorrentioResult( + $title = trim(preg_replace('/\s+/', ' ', $title)); + $ptn = (object) new PTN()->parse(self::setFilename($url)); + $result = new TorrentioResult( self::trimTitle($title), - urldecode($url), + self::setUrl($url), self::setFilename($url), self::setSize($title), self::setSeeders($title), self::setProvider($title), self::setEpisode($title), - $ptn->season ?? "-", + self::setSeason($ptn), $bingeGroup, - $ptn->resolution ?? "-", - self::setCodec($ptn->codec ?? "-"), - $ptn->quality ?? "-", + self::setResolution($ptn), + self::setCodec($ptn), + self::setQuality($ptn), $ptn, - substr(base64_encode($url), strlen($url) - 10), - $ptn->episode ?? "-", + self::setKey($url), + self::setEpisodeNumber($ptn), self::setLanguages($title), self::setLanguageFlags($title), false, uniqid(), $imdbId, ); + + return $result; } public static function setFilename(string $url) @@ -52,6 +55,11 @@ class ResultFactory return end($file); } + public static function setUrl(string $url): string + { + return urldecode($url); + } + public static function setSize(string $title): string { $sizeMatch = []; @@ -112,9 +120,15 @@ class ResultFactory } } - public static function setCodec(string $codec): string + public static function setCodec(object $ptn): string { - return self::$codecMap[strtolower($codec)] ?? $codec; + if (isset($ptn->codec) && array_key_exists($ptn->codec, self::$codecMap)) { + return self::$codecMap[strtolower($ptn->codec)]; + } elseif (isset($ptn->codec)) { + return $ptn->codec; + } + + return "-"; } private static function setEpisode(string $title) @@ -124,6 +138,36 @@ class ResultFactory return array_key_exists(0, $value) ? strtoupper($value[0]) : "n/a"; } + public static function setSeason(object $ptn): string + { + return $ptn->season ?? "-"; + } + + public static function setBingeGroup(string $bingeGroup): string + { + return $bingeGroup; + } + + public static function setResolution(object $ptn): string + { + return $ptn->resolution ?? "-"; + } + + public static function setQuality(object $ptn): string + { + return $ptn->quality ?? "-"; + } + + public static function setKey(string $url): string + { + return substr(base64_encode($url), strlen($url) - 10); + } + + public static function setEpisodeNumber(object $ptn): string + { + return $ptn->episode ?? "-"; + } + private static function trimTitle(string $title) { $emoji = \Emoji\detect_emoji($title);