use api, instead of html parse

scryptan 1 year ago
parent 51fe77ff33
commit e1175d01cc

@ -73,27 +73,14 @@ internal class WaMangaParser(
val url = "https://$domain/api${manga.url}" val url = "https://$domain/api${manga.url}"
val doc = webClient.httpGet(url).parseJson().getJSONObject("comic") val doc = webClient.httpGet(url).parseJson().getJSONObject("comic")
val thumbnailUrl = doc.getString("thumbnail")
val mangaNamePath =
thumbnailUrl.slice(thumbnailUrl.indexOf(doc.getString("slug"))..<thumbnailUrl.length).split('/')[0]
val mangaFolderUrl = "https://$domain/public/storage/comics/$mangaNamePath"
val chapters = webClient
.httpGet(mangaFolderUrl)
.parseHtml()
.getElementsByTag("a")
.map { it.ownText() }
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", sourceLocale) val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", sourceLocale)
return manga.copy( return manga.copy(
url = doc.getString("url"), url = doc.getString("url"),
title = doc.getString("title"), title = doc.getString("title"),
largeCoverUrl = thumbnailUrl, largeCoverUrl = doc.getString("thumbnail"),
description = doc.getStringOrNull("description") ?: manga.description, description = doc.getStringOrNull("description") ?: manga.description,
chapters = doc.getJSONArray("chapters").asTypedList<JSONObject>().mapChapters { _, it -> chapters = doc.getJSONArray("chapters").asTypedList<JSONObject>().mapChapters { _, it ->
val chapterPrefix = it.getString("slug_lang_vol_ch_sub") val chapterUrl = it.getString("url")
val chapterName = chapters.first { chap -> chap.startsWith(chapterPrefix) }
val chapterUrl = "$mangaFolderUrl/$chapterName"
MangaChapter( MangaChapter(
id = generateUid(chapterUrl), id = generateUid(chapterUrl),
url = chapterUrl, url = chapterUrl,
@ -110,16 +97,15 @@ internal class WaMangaParser(
} }
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> { override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val doc = webClient.httpGet(chapter.url).parseHtml() return webClient.httpGet("https://$domain/api${chapter.url}")
val images = doc.getElementsByTag("a").map { it.ownText() } .parseJson()
.getJSONObject("chapter")
return images .getJSONArray("pages")
.drop(1) // drop first, because of first is "Parent directory" link .asTypedList<String>()
.map { img -> .map { img ->
val imageUrl = "${chapter.url}$img"
MangaPage( MangaPage(
id = generateUid(imageUrl), id = generateUid(img),
url = imageUrl, url = img,
preview = null, preview = null,
source = source, source = source,
) )

Loading…
Cancel
Save