diff --git a/database/seeders/Wiki/AnimeSynonym/AnimeSynonymTypeSeeder.php b/database/seeders/Wiki/AnimeSynonym/AnimeSynonymTypeSeeder.php index 2d2ec1768..0047677b8 100644 --- a/database/seeders/Wiki/AnimeSynonym/AnimeSynonymTypeSeeder.php +++ b/database/seeders/Wiki/AnimeSynonym/AnimeSynonymTypeSeeder.php @@ -25,6 +25,11 @@ class AnimeSynonymTypeSeeder extends Seeder * @return void */ public function run(): void + { + $this->createNewSynonymsByAnilist(); + } + + protected function createNewSynonymsByAnilist() { $chunkSize = 5; @@ -35,6 +40,13 @@ public function run(): void foreach ($animes->chunk($chunkSize) as $chunk) { foreach ($chunk as $anime) { if ($anime instanceof Anime) { + $synonyms = $anime->animesynonyms()->get(); + + if ( + $synonyms->contains(AnimeSynonym::ATTRIBUTE_TYPE, AnimeSynonymType::ENGLISH->value) && + $synonyms->contains(AnimeSynonym::ATTRIBUTE_TYPE, AnimeSynonymType::NATIVE->value) + ) continue; + $titles = $this->getTitlesAvailable($anime); if ($titles === null) continue; @@ -42,45 +54,31 @@ public function run(): void $english = Arr::get($titles, 'english'); $native = Arr::get($titles, 'native'); - $synonyms = $anime->animesynonyms()->get(); + if (!$synonyms->contains(AnimeSynonym::ATTRIBUTE_TYPE, AnimeSynonymType::ENGLISH->value)) { + if ($anime->name === $english) continue; - foreach ($synonyms as $synonym) { - if ($synonym->type === AnimeSynonymType::OTHER->value) continue; + $newSynonymEnglish = new AnimeSynonym([ + AnimeSynonym::ATTRIBUTE_TEXT => $english, + AnimeSynonym::ATTRIBUTE_TYPE => AnimeSynonymType::ENGLISH->value, + AnimeSynonym::ATTRIBUTE_ANIME => $anime->anime_id, + ]); - if (trim($synonym->text) === $english) { - $synonym->update([AnimeSynonym::ATTRIBUTE_TYPE => AnimeSynonymType::ENGLISH->value]); - echo "{$synonym->text} -> update english"."\n"; - continue; - } - - if (trim($synonym->text) === $native) { - $synonym->update([AnimeSynonym::ATTRIBUTE_TYPE => AnimeSynonymType::NATIVE->value]); - echo "{$synonym->text} -> update native"."\n"; - continue; - } + $newSynonymEnglish->save(); + echo "{$newSynonymEnglish->text} -> create english"."\n"; } - // if (!$synonyms->contains(AnimeSynonym::ATTRIBUTE_TYPE, AnimeSynonymType::ENGLISH->value)) { - // $newSynonymEnglish = new AnimeSynonym([ - // AnimeSynonym::ATTRIBUTE_TEXT => $english, - // AnimeSynonym::ATTRIBUTE_TYPE => AnimeSynonymType::ENGLISH->value, - // AnimeSynonym::ATTRIBUTE_ANIME => $anime->anime_id, - // ]); - - // $newSynonymEnglish->save(); - // echo "{$newSynonymEnglish->text} -> create english"."\n"; - // } - - // if (!$synonyms->contains(AnimeSynonym::ATTRIBUTE_TYPE, AnimeSynonymType::NATIVE->value)) { - // $newSynonymNative = new AnimeSynonym([ - // AnimeSynonym::ATTRIBUTE_TEXT => $native, - // AnimeSynonym::ATTRIBUTE_TYPE => AnimeSynonymType::NATIVE->value, - // AnimeSynonym::ATTRIBUTE_ANIME => $anime->anime_id, - // ]); - - // $newSynonymNative->save(); - // echo "{$newSynonymNative->text} -> create native"."\n"; - // } + if (!$synonyms->contains(AnimeSynonym::ATTRIBUTE_TYPE, AnimeSynonymType::NATIVE->value)) { + if ($anime->name === $native) continue; + + $newSynonymNative = new AnimeSynonym([ + AnimeSynonym::ATTRIBUTE_TEXT => $native, + AnimeSynonym::ATTRIBUTE_TYPE => AnimeSynonymType::NATIVE->value, + AnimeSynonym::ATTRIBUTE_ANIME => $anime->anime_id, + ]); + + $newSynonymNative->save(); + echo "{$newSynonymNative->text} -> create native"."\n"; + } } } sleep(11); @@ -91,6 +89,8 @@ protected function getTitlesAvailable(Anime $anime) { $anilistResource = $anime->resources()->firstWhere(ExternalResource::ATTRIBUTE_SITE, ResourceSite::ANILIST->value); + if ($anilistResource === null) return null; + $query = ' query ($id: Int) { Media(id: $id, type: ANIME) {