feat(MangaDexProvider): add content rating filtering to manga feed retrieval
This commit is contained in:
parent
b238f66e08
commit
f98b76bc76
@ -14,11 +14,11 @@ public interface MangaDexClient {
|
|||||||
MangaDexMangaDTO getManga(@PathVariable UUID id);
|
MangaDexMangaDTO getManga(@PathVariable UUID id);
|
||||||
|
|
||||||
@GetMapping("/manga/{id}/feed")
|
@GetMapping("/manga/{id}/feed")
|
||||||
MangaDexMangaFeedDTO getMangaFeed(@PathVariable UUID id);
|
MangaDexMangaFeedDTO getMangaFeed(@PathVariable UUID id, @RequestParam("contentRating[]") List<String> contentRating);
|
||||||
|
|
||||||
@GetMapping("/manga/{id}/feed")
|
@GetMapping("/manga/{id}/feed")
|
||||||
MangaDexMangaFeedDTO getMangaFeed(
|
MangaDexMangaFeedDTO getMangaFeed(
|
||||||
@PathVariable UUID id, @RequestParam int limit, @RequestParam int offset);
|
@PathVariable UUID id, @RequestParam int limit, @RequestParam int offset, @RequestParam("contentRating[]") List<String> contentRating);
|
||||||
|
|
||||||
@GetMapping("/at-home/server/{chapterId}")
|
@GetMapping("/at-home/server/{chapterId}")
|
||||||
MangaChapterDataDTO getMangaChapter(@PathVariable UUID chapterId);
|
MangaChapterDataDTO getMangaChapter(@PathVariable UUID chapterId);
|
||||||
|
|||||||
@ -15,6 +15,8 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import static java.util.Objects.isNull;
|
||||||
|
|
||||||
@Log4j2
|
@Log4j2
|
||||||
@Service(ContentProviders.MANGA_DEX)
|
@Service(ContentProviders.MANGA_DEX)
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ -27,13 +29,12 @@ public class MangaDexProvider implements ContentProvider, ManualImportContentPro
|
|||||||
public List<ContentProviderMangaChapterResponseDTO> getAvailableChapters(MangaProvider provider) {
|
public List<ContentProviderMangaChapterResponseDTO> getAvailableChapters(MangaProvider provider) {
|
||||||
try {
|
try {
|
||||||
mangaDexRateLimiter.acquire();
|
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 mangas = new ArrayList<>(response.data());
|
||||||
var totalPages = (int) Math.ceil((double) response.total() / 500);
|
var totalPages = (int) Math.ceil((double) response.total() / 500);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
IntStream.range(1, totalPages)
|
IntStream.range(1, totalPages)
|
||||||
.parallel()
|
.parallel()
|
||||||
.forEach(
|
.forEach(
|
||||||
@ -41,7 +42,7 @@ public class MangaDexProvider implements ContentProvider, ManualImportContentPro
|
|||||||
mangaDexRateLimiter.acquire();
|
mangaDexRateLimiter.acquire();
|
||||||
|
|
||||||
var pagedResponse =
|
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());
|
mangas.addAll(pagedResponse.data());
|
||||||
});
|
});
|
||||||
@ -61,6 +62,10 @@ public class MangaDexProvider implements ContentProvider, ManualImportContentPro
|
|||||||
&& languagesToImport.containsKey(c.attributes().translatedLanguage()))
|
&& languagesToImport.containsKey(c.attributes().translatedLanguage()))
|
||||||
.sorted(
|
.sorted(
|
||||||
(o1, o2) -> {
|
(o1, o2) -> {
|
||||||
|
if (isNull(o1.attributes().chapter()) || isNull(o2.attributes().chapter())) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Float chapter1 = Float.parseFloat(o1.attributes().chapter());
|
Float chapter1 = Float.parseFloat(o1.attributes().chapter());
|
||||||
Float chapter2 = Float.parseFloat(o2.attributes().chapter());
|
Float chapter2 = Float.parseFloat(o2.attributes().chapter());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user