* @copyright 2015 - 2020 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @version 5 * @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient */ namespace Aviat\AnimeClient\Command; use Aviat\AnimeClient\API\JsonAPI; use Aviat\AnimeClient\API\Kitsu\Model; use Aviat\AnimeClient\Controller\Images; /** * Clears out image cache directories, then re-creates the image cache * for manga and anime */ final class UpdateThumbnails extends ClearThumbnails { /** * Model for making requests to Kitsu API * @var Model */ protected $kitsuModel; /** * The default controller, which has the method to cache the images */ protected $controller; public function execute(array $args, array $options = []): void { $this->setContainer($this->setupContainer()); $this->setCache($this->container->get('cache')); $this->controller = new Images($this->container); $this->kitsuModel = $this->container->get('kitsu-model'); // Clear the existing thunbnails parent::execute($args, $options); $ids = $this->getImageList(); // Resave the images foreach($ids as $type => $typeIds) { foreach ($typeIds as $id) { $this->controller->cache($type, "{$id}.jpg", FALSE); } $this->echoBox("Finished regenerating {$type} thumbnails"); } $this->echoBox('Finished regenerating all thumbnails'); } /** * @return array array-key[][] * @psalm-return array{anime: list, manga: list} */ public function getImageList(): array { $mangaList = $this->kitsuModel->getFullRawMangaList(); $includes = JsonAPI::organizeIncludes($mangaList['included']); $mangaIds = array_keys($includes['manga']); $animeList = $this->kitsuModel->getFullRawAnimeList(); $includes = JsonAPI::organizeIncludes($animeList['included']); $animeIds = array_keys($includes['anime']); // print_r($mangaIds); // die(); return [ 'anime' => $animeIds, 'manga' => $mangaIds, ]; } }