diff --git a/app/views/collection/cover.php b/app/views/collection/cover.php index 22db0c4a..26280031 100644 --- a/app/views/collection/cover.php +++ b/app/views/collection/cover.php @@ -11,7 +11,7 @@
- <?= $item['title'] ?> cover image + <?= $item['title'] ?> cover image
diff --git a/app/views/collection/edit.php b/app/views/collection/edit.php index 37ee2ddf..f77fa7b5 100644 --- a/app/views/collection/edit.php +++ b/app/views/collection/edit.php @@ -13,7 +13,7 @@
- img($urlGenerator->asset_url('images', 'anime', basename($item['cover_image']))); ?> + img($item['cover_image']); ?>
diff --git a/src/API/Kitsu/KitsuModel.php b/src/API/Kitsu/KitsuModel.php index d50cacb6..6c277f1c 100644 --- a/src/API/Kitsu/KitsuModel.php +++ b/src/API/Kitsu/KitsuModel.php @@ -129,13 +129,19 @@ class KitsuModel { /** * Get information about a particular anime * - * @param string $animeId + * @param string $slug * @return array */ - public function getAnime(string $animeId): array + public function getAnime(string $slug): array { // @TODO catch non-existent anime - $baseData = $this->getRawMediaData('anime', $animeId); + $baseData = $this->getRawMediaData('anime', $slug); + return $this->animeTransformer->transform($baseData); + } + + public function getAnimeById(string $animeId): array + { + $baseData = $this->getRawMediaDataById('anime', $animeId); return $this->animeTransformer->transform($baseData); } @@ -310,6 +316,22 @@ class KitsuModel { ->get('config') ->get(['kitsu_username']); } + + private function getRawMediaDataById(string $type, string $id): array + { + $options = [ + 'query' => [ + 'include' => ($type === 'anime') + ? 'genres,mappings,streamingLinks' + : 'genres,mappings', + ] + ]; + + $data = $this->getRequest("{$type}/{$id}", $options); + $baseData = $data['data']['attributes']; + $baseData['included'] = $data['included']; + return $baseData; + } private function getRawMediaData(string $type, string $slug): array { diff --git a/src/API/Kitsu/Transformer/AnimeTransformer.php b/src/API/Kitsu/Transformer/AnimeTransformer.php index 66f344f1..a72a0779 100644 --- a/src/API/Kitsu/Transformer/AnimeTransformer.php +++ b/src/API/Kitsu/Transformer/AnimeTransformer.php @@ -40,6 +40,7 @@ class AnimeTransformer extends AbstractTransformer { $titles = Kitsu::filterTitles($item); return [ + 'slug' => $item['slug'], 'title' => $titles[0], 'titles' => $titles, 'status' => Kitsu::getAiringStatus($item['startDate'], $item['endDate']), diff --git a/src/Model/Anime.php b/src/Model/Anime.php index 7d644bc2..ba2eb889 100644 --- a/src/Model/Anime.php +++ b/src/Model/Anime.php @@ -71,14 +71,19 @@ class Anime extends API { } /** - * Get information about an anime from its id + * Get information about an anime from its slug * - * @param string $anime_id + * @param string $slug * @return array */ - public function getAnime($anime_id) + public function getAnime($slug) { - return $this->kitsuModel->getAnime($anime_id); + return $this->kitsuModel->getAnime($slug); + } + + public function getAnimeById($anime_id) + { + return $this->kitsuModel->getAnimeById($anime_id); } /** diff --git a/src/Model/AnimeCollection.php b/src/Model/AnimeCollection.php index 83c64123..822d20e0 100644 --- a/src/Model/AnimeCollection.php +++ b/src/Model/AnimeCollection.php @@ -16,6 +16,7 @@ namespace Aviat\AnimeClient\Model; +use Aviat\AnimeClient\API\Kitsu; use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Json; use PDO; @@ -35,7 +36,7 @@ class AnimeCollection extends Collection { parent::__construct($container); // Do an import if an import file exists - $this->json_import(); + // $this->json_import(); } /** @@ -131,20 +132,17 @@ class AnimeCollection extends Collection { */ public function add($data) { - $anime = (object)$this->anime_model->get_anime($data['id']); - + $anime = (object)$this->anime_model->getAnimeById($data['id']); $util = $this->container->get('util'); $this->db->set([ 'hummingbird_id' => $data['id'], 'slug' => $anime->slug, 'title' => $anime->title, - 'alternate_title' => $anime->alternate_title, + 'alternate_title' => implode('
', $anime->titles), 'show_type' => $anime->show_type, 'age_rating' => $anime->age_rating, - 'cover_image' => basename( - $util->get_cached_image($anime->cover_image, $anime->slug, 'anime') - ), + 'cover_image' => $anime->cover_image, 'episode_count' => $anime->episode_count, 'episode_length' => $anime->episode_length, 'media_id' => $data['media_id'], @@ -264,17 +262,17 @@ class AnimeCollection extends Collection { extract($genre_info); // Get api information - $anime = $this->anime_model->get_anime($anime_id); + $anime = $this->anime_model->getAnimeById($anime_id); foreach ($anime['genres'] as $genre) { // Add genres that don't currently exist - if ( ! in_array($genre['name'], $genres)) + if ( ! in_array($genre, $genres)) { - $this->db->set('genre', $genre['name']) + $this->db->set('genre', $genre) ->insert('genres'); - $genres[] = $genre['name']; + $genres[] = $genre; } // Update link table @@ -282,13 +280,13 @@ class AnimeCollection extends Collection { $flipped_genres = array_flip($genres); $insert_array = [ - 'hummingbird_id' => $anime['id'], - 'genre_id' => $flipped_genres[$genre['name']] + 'hummingbird_id' => $anime_id, + 'genre_id' => $flipped_genres[$genre] ]; - if (array_key_exists($anime['id'], $links)) + if (array_key_exists($anime_id, $links)) { - if ( ! in_array($flipped_genres[$genre['name']], $links[$anime['id']])) + if ( ! in_array($flipped_genres[$genre], $links[$anime_id])) { $this->db->set($insert_array)->insert('genre_anime_set_link'); } diff --git a/src/Model/Collection.php b/src/Model/Collection.php index 1abf5bfc..e3ff607c 100644 --- a/src/Model/Collection.php +++ b/src/Model/Collection.php @@ -16,6 +16,8 @@ namespace Aviat\AnimeClient\Model; + +use Aviat\Ion\Di\ContainerAware; use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Model\DB; use PDO; @@ -25,6 +27,8 @@ use PDOException; * Base model for anime and manga collections */ class Collection extends DB { + + use ContainerAware; /** * Anime API Model @@ -45,6 +49,8 @@ class Collection extends DB { */ public function __construct(ContainerInterface $container) { + $this->container = $container; + parent::__construct($container->get('config')); try @@ -53,8 +59,8 @@ class Collection extends DB { } catch (PDOException $e) { - $this->valid_database = FALSE; - return FALSE; + //$this->valid_database = FALSE; + //return FALSE; } $this->anime_model = $container->get('anime-model');