diff --git a/app/views/anime/details.php b/app/views/anime/details.php index f7d4b313..f8d0dd09 100644 --- a/app/views/anime/details.php +++ b/app/views/anime/details.php @@ -17,6 +17,13 @@ use function Aviat\AnimeClient\getLocalImg; + + + Original Airing + + + + Show Type 3) ? ucfirst(strtolower($data['show_type'])) : $data['show_type'] ?> diff --git a/src/AnimeClient/API/Kitsu/Transformer/AnimeTransformer.php b/src/AnimeClient/API/Kitsu/Transformer/AnimeTransformer.php index 6da23ae1..16ed9a29 100644 --- a/src/AnimeClient/API/Kitsu/Transformer/AnimeTransformer.php +++ b/src/AnimeClient/API/Kitsu/Transformer/AnimeTransformer.php @@ -121,6 +121,7 @@ final class AnimeTransformer extends AbstractTransformer { } return AnimePage::from([ + 'airDate' => Kitsu::formatAirDates($base['startDate'], $base['endDate']), 'age_rating' => $base['ageRating'], 'age_rating_guide' => $base['ageRatingGuide'], 'characters' => $characters, diff --git a/src/AnimeClient/Kitsu.php b/src/AnimeClient/Kitsu.php index 11013a13..29078174 100644 --- a/src/AnimeClient/Kitsu.php +++ b/src/AnimeClient/Kitsu.php @@ -68,6 +68,57 @@ final class Kitsu { return AnimeAiringStatus::NOT_YET_AIRED; } + /** + * Reformat the airing date range for an Anime + * + * @param string|null $startDate + * @param string|null $endDate + * @return string + */ + public static function formatAirDates(string $startDate = NULL, string $endDate = NULL): string + { + if (empty($startDate)) + { + return ''; + } + + $monthMap = [ + '01' => 'Jan', + '02' => 'Feb', + '03' => 'Mar', + '04' => 'Apr', + '05' => 'May', + '06' => 'Jun', + '07' => 'Jul', + '08' => 'Aug', + '09' => 'Sep', + '10' => 'Oct', + '11' => 'Nov', + '12' => 'Dec', + ]; + + [$startYear, $startMonth, $startDay] = explode('-', $startDate); + + if ($startDate === $endDate) + { + return "{$monthMap[$startMonth]} $startDay, $startYear"; + } + + if (empty($endDate)) + { + return "{$monthMap[$startMonth]} {$startYear} - "; + } + + [$endYear, $endMonth] = explode('-', $endDate); + + if ($startYear === $endYear) + { + return "{$monthMap[$startMonth]} - {$monthMap[$endMonth]} $startYear"; + } + + return "{$monthMap[$startMonth]} {$startYear} - {$monthMap[$endMonth]} {$endYear}"; + } + public static function getPublishingStatus(string $kitsuStatus, string $startDate = NULL, string $endDate = NULL): string { $startPubDate = new DateTimeImmutable($startDate ?? 'tomorrow'); diff --git a/src/AnimeClient/Types/AnimePage.php b/src/AnimeClient/Types/AnimePage.php index 8679a7ee..a9f851ff 100644 --- a/src/AnimeClient/Types/AnimePage.php +++ b/src/AnimeClient/Types/AnimePage.php @@ -25,4 +25,6 @@ final class AnimePage extends Anime { public array $links = []; public array $staff = []; + + public ?string $airDate = ''; } \ No newline at end of file