Fix LectorManga and TuMangaOnline (#15268)

* Fix LectorManga and TuMangaOnline

* Miskey

* Obtain newUrl in pageListParse
This commit is contained in:
seew3l 2023-02-08 07:28:52 -05:00 committed by GitHub
parent 82224c14f4
commit 87f34dd479
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 22 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'LectorManga' extName = 'LectorManga'
pkgNameSuffix = 'es.lectormanga' pkgNameSuffix = 'es.lectormanga'
extClass = '.LectorManga' extClass = '.LectorManga'
extVersionCode = 25 extVersionCode = 26
isNsfw = true isNsfw = true
} }

View File

@ -77,7 +77,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
override fun popularMangaRequest(page: Int) = GET("$baseUrl/library?order_item=likes_count&order_dir=desc&type=&filter_by=title&page=$page", headers) override fun popularMangaRequest(page: Int) = GET("$baseUrl/library?order_item=likes_count&order_dir=desc&type=&filter_by=title&page=$page", headers)
override fun popularMangaNextPageSelector() = ".pagination .page-item:not(.disabled) a[rel='next']" override fun popularMangaNextPageSelector() = "a[rel='next']"
override fun popularMangaSelector() = ".col-6 .card" override fun popularMangaSelector() = ".col-6 .card"
@ -247,25 +247,26 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
} }
override fun pageListRequest(chapter: SChapter): Request { override fun pageListRequest(chapter: SChapter): Request {
val currentUrl = client.newCall(GET(chapter.url, headers)).execute().asJsoup().body().baseUri() return GET(chapter.url, headers)
}
override fun pageListParse(document: Document): List<Page> = mutableListOf<Page>().apply {
val currentUrl = document.body().baseUri()
// Get /cascade instead of /paginate to get all pages at once
val newUrl = if (getPageMethodPref() == PAGE_METHOD_PREF_CASCADE && currentUrl.contains(PAGE_METHOD_PREF_PAGINATED)) { val newUrl = if (getPageMethodPref() == PAGE_METHOD_PREF_CASCADE && currentUrl.contains(PAGE_METHOD_PREF_PAGINATED)) {
currentUrl.substringBefore(PAGE_METHOD_PREF_PAGINATED) + PAGE_METHOD_PREF_CASCADE currentUrl.substringBefore(PAGE_METHOD_PREF_PAGINATED) + PAGE_METHOD_PREF_CASCADE
} else if (getPageMethodPref() == PAGE_METHOD_PREF_PAGINATED && currentUrl.contains(PAGE_METHOD_PREF_CASCADE)) { } else if (getPageMethodPref() == PAGE_METHOD_PREF_PAGINATED && currentUrl.contains(PAGE_METHOD_PREF_CASCADE)) {
currentUrl.substringBefore(PAGE_METHOD_PREF_CASCADE) + PAGE_METHOD_PREF_PAGINATED currentUrl.substringBefore(PAGE_METHOD_PREF_CASCADE) + PAGE_METHOD_PREF_PAGINATED
} else currentUrl } else currentUrl
return GET(newUrl, headers) val doc = client.newCall(GET(newUrl, headers)).execute().asJsoup()
}
override fun pageListParse(document: Document): List<Page> = mutableListOf<Page>().apply {
if (getPageMethodPref() == PAGE_METHOD_PREF_CASCADE) { if (getPageMethodPref() == PAGE_METHOD_PREF_CASCADE) {
document.select("div.viewer-image-container img").forEach { doc.select("div.viewer-image-container img").forEach {
add( add(
Page( Page(
size, size,
document.baseUri(), doc.baseUri(),
it.let { it.let {
if (it.hasAttr("data-src")) it.attr("abs:data-src") if (it.hasAttr("data-src")) it.attr("abs:data-src")
else it.attr("abs:src") else it.attr("abs:src")
@ -274,7 +275,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
) )
} }
} else { } else {
val body = document.select("script:containsData(var dirPath)").first().data() val body = doc.select("script:containsData(var dirPath)").first().data()
val path = body.substringAfter("var dirPath = '").substringBefore("'") val path = body.substringAfter("var dirPath = '").substringBefore("'")
body.substringAfter("var images = JSON.parse('[") body.substringAfter("var images = JSON.parse('[")
@ -282,7 +283,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
.replace("\"", "") .replace("\"", "")
.split(",") .split(",")
.forEach { .forEach {
add(Page(size, document.baseUri(), path + it)) add(Page(size, doc.baseUri(), path + it))
} }
} }
} }

View File

@ -5,7 +5,7 @@ ext {
extName = 'TuMangaOnline' extName = 'TuMangaOnline'
pkgNameSuffix = 'es.tumangaonline' pkgNameSuffix = 'es.tumangaonline'
extClass = '.TuMangaOnline' extClass = '.TuMangaOnline'
extVersionCode = 40 extVersionCode = 41
isNsfw = true isNsfw = true
} }

View File

@ -70,7 +70,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
override fun popularMangaRequest(page: Int) = GET("$baseUrl/library?order_item=likes_count&order_dir=desc&filter_by=title$getSFWUrlPart&_pg=1&page=$page", headers) override fun popularMangaRequest(page: Int) = GET("$baseUrl/library?order_item=likes_count&order_dir=desc&filter_by=title$getSFWUrlPart&_pg=1&page=$page", headers)
override fun popularMangaNextPageSelector() = "a.page-link" override fun popularMangaNextPageSelector() = "a[rel='next']"
override fun popularMangaSelector() = "div.element" override fun popularMangaSelector() = "div.element"
@ -214,18 +214,21 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
private fun parseChapterDate(date: String): Long = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(date)?.time private fun parseChapterDate(date: String): Long = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(date)?.time
?: 0 ?: 0
override fun pageListRequest(chapter: SChapter): Request { override fun pageListRequest(chapter: SChapter): Request {
val currentUrl = client.newCall(GET(chapter.url, headers)).execute().asJsoup().body().baseUri() return GET(chapter.url, headers)
// Get /cascade instead of /paginate to get all pages at once }
override fun pageListParse(document: Document): List<Page> = mutableListOf<Page>().apply {
val currentUrl = document.body().baseUri()
val newUrl = if (getPageMethodPref() == "cascade" && currentUrl.contains("paginated")) { val newUrl = if (getPageMethodPref() == "cascade" && currentUrl.contains("paginated")) {
currentUrl.substringBefore("paginated") + "cascade" currentUrl.substringBefore("paginated") + "cascade"
} else if (getPageMethodPref() == "paginated" && currentUrl.contains("cascade")) { } else if (getPageMethodPref() == "paginated" && currentUrl.contains("cascade")) {
currentUrl.substringBefore("cascade") + "paginated" currentUrl.substringBefore("cascade") + "paginated"
} else currentUrl } else currentUrl
return GET(newUrl, headers)
} val doc = client.newCall(GET(newUrl, headers)).execute().asJsoup()
override fun pageListParse(document: Document): List<Page> = mutableListOf<Page>().apply {
if (getPageMethodPref() == "cascade") { if (getPageMethodPref() == "cascade") {
document.select("div.viewer-container img").forEach { doc.select("div.viewer-container img").forEach {
add( add(
Page( Page(
size, size,
@ -238,8 +241,8 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
) )
} }
} else { } else {
val pageList = document.select("#viewer-pages-select").first().select("option").map { it.attr("value").toInt() } val pageList = doc.select("#viewer-pages-select").first().select("option").map { it.attr("value").toInt() }
val url = document.baseUri() val url = doc.baseUri()
pageList.forEach { pageList.forEach {
add(Page(it, "$url/$it")) add(Page(it, "$url/$it"))
} }
@ -249,7 +252,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
override fun imageRequest(page: Page) = GET(page.imageUrl!!, headers) override fun imageRequest(page: Page) = GET(page.imageUrl!!, headers)
override fun imageUrlParse(document: Document): String { override fun imageUrlParse(document: Document): String {
return document.select("div.viewer-container > div.viewer-image-container > img.viewer-image").attr("src") return document.select("div.viewer-container > div.img-container > img.viewer-image").attr("src")
} }
private fun searchMangaByIdRequest(id: String) = GET("$baseUrl/$PREFIX_LIBRARY/$id", headers) private fun searchMangaByIdRequest(id: String) = GET("$baseUrl/$PREFIX_LIBRARY/$id", headers)