Show fewer sync errors by filtering common data disparity issues
This commit is contained in:
parent
5bf8277376
commit
c93629dea2
19
src/API/Anilist/MissingIdException.php
Normal file
19
src/API/Anilist/MissingIdException.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php declare(strict_types=1);
|
||||
/**
|
||||
* Hummingbird Anime List Client
|
||||
*
|
||||
* An API client for Kitsu to manage anime and manga watch lists
|
||||
*
|
||||
* PHP version 7.1
|
||||
*
|
||||
* @package HummingbirdAnimeClient
|
||||
* @author Timothy J. Warren <tim@timshomepage.net>
|
||||
* @copyright 2015 - 2018 Timothy J. Warren
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 4.1
|
||||
* @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient
|
||||
*/
|
||||
|
||||
namespace Aviat\AnimeClient\API\Anilist;
|
||||
|
||||
class MissingIdException extends \InvalidArgumentException {}
|
@ -124,10 +124,10 @@ final class Model
|
||||
|
||||
$mediaId = $this->getMediaIdFromMalId($data['mal_id'], mb_strtoupper($type));
|
||||
|
||||
if (empty($mediaId))
|
||||
/* if (empty($mediaId))
|
||||
{
|
||||
throw new InvalidArgumentException('Media id missing');
|
||||
}
|
||||
} */
|
||||
|
||||
if ($type === 'ANIME')
|
||||
{
|
||||
@ -159,6 +159,11 @@ final class Model
|
||||
$createData = $data['data'];
|
||||
$mediaId = $this->getMediaIdFromMalId($data['mal_id'], strtoupper($type));
|
||||
|
||||
if (empty($mediaId))
|
||||
{
|
||||
throw new MissingIdException('No id mapping found');
|
||||
}
|
||||
|
||||
$createData['id'] = $mediaId;
|
||||
|
||||
return $this->listItem->createFull($createData);
|
||||
|
@ -16,11 +16,8 @@
|
||||
|
||||
namespace Aviat\AnimeClient\Command;
|
||||
|
||||
use Aviat\AnimeClient\API\{
|
||||
FailedResponseException,
|
||||
JsonAPI,
|
||||
ParallelAPIRequest
|
||||
};
|
||||
use Aviat\AnimeClient\API\
|
||||
{Anilist\MissingIdException, FailedResponseException, JsonAPI, ParallelAPIRequest};
|
||||
use Aviat\AnimeClient\API\Anilist\Transformer\{
|
||||
AnimeListTransformer as AALT,
|
||||
MangaListTransformer as AMLT
|
||||
@ -311,19 +308,19 @@ final class SyncLists extends BaseCommand {
|
||||
$anilistUpdateItems = [];
|
||||
$kitsuUpdateItems = [];
|
||||
|
||||
$malBlackList = ($type === 'anime')
|
||||
/* $malBlackList = ($type === 'anime')
|
||||
? [
|
||||
27821, // Fate/stay night: Unlimited Blade Works - Prologue
|
||||
29317, // Saekano: How to Raise a Boring Girlfriend Prologue
|
||||
30514, // Nisekoinogatari
|
||||
] : [
|
||||
114638, // Cells at Work: Black
|
||||
];
|
||||
]; */
|
||||
|
||||
$malIds = array_keys($anilistList);
|
||||
$kitsuMalIds = array_map('intval', array_column($kitsuList, 'malId'));
|
||||
$missingMalIds = array_diff($malIds, $kitsuMalIds);
|
||||
$missingMalIds = array_diff($missingMalIds, $malBlackList);
|
||||
// $missingMalIds = array_diff($missingMalIds, $malBlackList);
|
||||
|
||||
// Add items on Anilist, but not Kitsu to Kitsu
|
||||
foreach($missingMalIds as $mid)
|
||||
@ -338,10 +335,10 @@ final class SyncLists extends BaseCommand {
|
||||
{
|
||||
$malId = $kitsuItem['malId'];
|
||||
|
||||
if (\in_array((int)$malId, $malBlackList, TRUE))
|
||||
/* if (\in_array((int)$malId, $malBlackList, TRUE))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
} */
|
||||
|
||||
if (array_key_exists($malId, $anilistList))
|
||||
{
|
||||
@ -629,13 +626,25 @@ final class SyncLists extends BaseCommand {
|
||||
{
|
||||
$verb = ($action === 'update') ? 'updated' : 'created';
|
||||
$this->echoBox("Successfully {$verb} Kitsu {$type} list item with id: {$id}");
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
||||
// Show a different message when you have an episode count mismatch
|
||||
if (isset($responseData['errors'][0]['title']))
|
||||
{
|
||||
dump($responseData);
|
||||
$verb = ($action === 'update') ? 'update' : 'create';
|
||||
$this->echoBox("Failed to {$verb} Kitsu {$type} list item with id: {$id}");
|
||||
$errorTitle = $responseData['errors'][0]['title'];
|
||||
|
||||
if ($errorTitle === 'cannot exceed length of media')
|
||||
{
|
||||
$this->echoBox("Skipped Kitsu {$type} {$id} due to episode count mismatch with other API");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
dump($responseData);
|
||||
$verb = ($action === 'update') ? 'update' : 'create';
|
||||
$this->echoBox("Failed to {$verb} Kitsu {$type} list item with id: {$id}");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -661,7 +670,15 @@ final class SyncLists extends BaseCommand {
|
||||
}
|
||||
else if ($action === 'create')
|
||||
{
|
||||
$requester->addRequest($this->anilistModel->createFullListItem($item, $type));
|
||||
try
|
||||
{
|
||||
$requester->addRequest($this->anilistModel->createFullListItem($item, $type));
|
||||
}
|
||||
catch (MissingIdException $e)
|
||||
{
|
||||
$id = $item['mal_id'];
|
||||
$this->echoBox("Skipping Anilist ${type} with mal_id: {$id} due to missing mapping");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user