diff --git a/src/main/java/com/magamochi/mangamochi/client/MangaDexClient.java b/src/main/java/com/magamochi/mangamochi/client/MangaDexClient.java index 40a3ed7..e4b447f 100644 --- a/src/main/java/com/magamochi/mangamochi/client/MangaDexClient.java +++ b/src/main/java/com/magamochi/mangamochi/client/MangaDexClient.java @@ -14,11 +14,11 @@ public interface MangaDexClient { MangaDexMangaDTO getManga(@PathVariable UUID id); @GetMapping("/manga/{id}/feed") - MangaDexMangaFeedDTO getMangaFeed(@PathVariable UUID id); + MangaDexMangaFeedDTO getMangaFeed(@PathVariable UUID id, @RequestParam("contentRating[]") List contentRating); @GetMapping("/manga/{id}/feed") MangaDexMangaFeedDTO getMangaFeed( - @PathVariable UUID id, @RequestParam int limit, @RequestParam int offset); + @PathVariable UUID id, @RequestParam int limit, @RequestParam int offset, @RequestParam("contentRating[]") List contentRating); @GetMapping("/at-home/server/{chapterId}") MangaChapterDataDTO getMangaChapter(@PathVariable UUID chapterId); diff --git a/src/main/java/com/magamochi/mangamochi/service/providers/impl/MangaDexProvider.java b/src/main/java/com/magamochi/mangamochi/service/providers/impl/MangaDexProvider.java index 9dc2d0d..34ed713 100644 --- a/src/main/java/com/magamochi/mangamochi/service/providers/impl/MangaDexProvider.java +++ b/src/main/java/com/magamochi/mangamochi/service/providers/impl/MangaDexProvider.java @@ -15,6 +15,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; +import static java.util.Objects.isNull; + @Log4j2 @Service(ContentProviders.MANGA_DEX) @RequiredArgsConstructor @@ -27,13 +29,12 @@ public class MangaDexProvider implements ContentProvider, ManualImportContentPro public List getAvailableChapters(MangaProvider provider) { try { mangaDexRateLimiter.acquire(); - var response = mangaDexClient.getMangaFeed(UUID.fromString(provider.getUrl())); + var response = mangaDexClient.getMangaFeed(UUID.fromString(provider.getUrl()), List.of("safe", "suggestive", "erotica", "pornographic")); var mangas = new ArrayList<>(response.data()); var totalPages = (int) Math.ceil((double) response.total() / 500); try { - IntStream.range(1, totalPages) .parallel() .forEach( @@ -41,7 +42,7 @@ public class MangaDexProvider implements ContentProvider, ManualImportContentPro mangaDexRateLimiter.acquire(); var pagedResponse = - mangaDexClient.getMangaFeed(UUID.fromString(provider.getUrl()), 500, i * 500); + mangaDexClient.getMangaFeed(UUID.fromString(provider.getUrl()), 500, i * 500, List.of("safe", "suggestive", "erotica", "pornographic")); mangas.addAll(pagedResponse.data()); }); @@ -61,6 +62,10 @@ public class MangaDexProvider implements ContentProvider, ManualImportContentPro && languagesToImport.containsKey(c.attributes().translatedLanguage())) .sorted( (o1, o2) -> { + if (isNull(o1.attributes().chapter()) || isNull(o2.attributes().chapter())) { + return 0; + } + try { Float chapter1 = Float.parseFloat(o1.attributes().chapter()); Float chapter2 = Float.parseFloat(o2.attributes().chapter());