- Gettings chapters from non En/Fr sources
- mercure fonctionne!
This commit is contained in:
Jérémy Guillot
2024-06-16 13:14:32 +02:00
parent bc85649789
commit 671551c7f8
11 changed files with 313 additions and 65 deletions

View File

@@ -69,13 +69,14 @@ readonly class MangadexProvider implements MetadataProviderInterface
return new ArrayCollection($mangas);
}
public function getFeed(Manga $manga): Manga
public function getFeed(Manga $manga): array
{
if($manga->getExternalId() === null) {
return $manga;
return [];
}
$chapters = [];
$chapterEntities = [];
$page = 0;
do {
@@ -105,21 +106,51 @@ readonly class MangadexProvider implements MetadataProviderInterface
$chapter = new Chapter();
$chapter->setNumber($chapterNumber)
->setTitle($result['attributes']['title'])
->setVolume((int)$result['attributes']['volume'] ?? null);
->setVolume((int)$result['attributes']['volume'] ?? null)
->setExternalId($result['id'])
;
$manga->addChapter($chapter);
$chapterEntities[] = $chapter;
// $manga->addChapter($chapter);
}
return $manga;
return $chapterEntities;
}
private function getFeedWithPagination(string $externalId, int $page): array
{
return $this->client->get('/manga/' . $externalId . '/feed', [
'limit' => 500,
'translatedLanguage' =>['en'],
'translatedLanguage' =>['en', 'fr'],
'order' => ['chapter' => 'asc'],
'offset' => $page * 500
]);
}
public function getMangaAggregate(Manga $manga): array
{
if($manga->getExternalId() === null) {
return [];
}
$response = $this->client->get('/manga/' . $manga->getExternalId() . '/aggregate');
$chapterEntities = [];
if($response['result'] === 'ok'){
foreach($response['volumes'] as $volume){
$volumeNumber = $volume['volume'] === 'none' ? 0 : (float) $volume['volume'];
foreach($volume['chapters'] as $chapter){
$chapterEntity = new Chapter();
$chapterEntity->setNumber((float) $chapter['chapter'])
->setTitle('Chapter ' . $chapter['chapter'])
->setVolume($volumeNumber)
->setExternalId('');
$chapterEntities[] = $chapterEntity;
// $manga->addChapter($chapterEntity);
}
}
}
return $chapterEntities;
}
}