fixed page duplicated

Naga 2 years ago
parent e74985d870
commit 3efb5d8520

@ -175,21 +175,21 @@ internal class ReaperComics(context: MangaLoaderContext) :
val url = "https://api.$domain/chapter/query?page=1&perPage=9999&series_id=$seriesid" val url = "https://api.$domain/chapter/query?page=1&perPage=9999&series_id=$seriesid"
val response = makeRequest(url) val response = makeRequest(url)
val data = response.getJSONArray("data") val data = response.getJSONArray("data")
val chapters = data.mapJSONIndexed { index, it ->
val chapterUrl = "/series/${it.getJSONObject("series").getString("series_slug")}/${it.getString("chapter_slug")}"
MangaChapter(
id = it.getLong("id"),
name = it.getString("chapter_name"),
number = data.length() - index,
url = chapterUrl,
scanlator = null,
uploadDate = parseChapterDate(dateFormat, it.getString("created_at")),
branch = null,
source = source,
)
}
return manga.copy( return manga.copy(
chapters = chapters chapters = data.mapJSONIndexed { index, it ->
val chapterUrl = "/series/${it.getJSONObject("series").getString("series_slug")}/${it.getString("chapter_slug")}"
MangaChapter(
id = it.getLong("id"),
name = it.getString("chapter_name"),
number = (data.length() - index).toFloat(),
volume = 0,
url = chapterUrl,
scanlator = null,
uploadDate = parseChapterDate(dateFormat, it.getString("created_at")),
branch = null,
source = source,
)
}
) )
} }
@ -205,14 +205,27 @@ internal class ReaperComics(context: MangaLoaderContext) :
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> { override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml() val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml()
return doc.select(pageSelector).map { img -> val processedUrls = mutableSetOf<String>()
val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found")
MangaPage( return doc.select(pageSelector).mapNotNull { img ->
id = generateUid(url), val url = img.attr("data-cfsrc").takeIf { it.isNotBlank() }
url = url, ?: img.attr("src").takeIf { it.isNotBlank() }
preview = null, ?: img.selectFirst("noscript img")?.attr("src")
source = source, ?: return@mapNotNull null
)
val relativeUrl = url.toRelativeUrl(domain)
if (relativeUrl !in processedUrls) {
processedUrls.add(relativeUrl)
MangaPage(
id = generateUid(relativeUrl),
url = relativeUrl,
preview = null,
source = source,
)
} else {
null
}
} }
} }

Loading…
Cancel
Save