Fix japscan pagecount loading (fallback added) (#14122)

This commit is contained in:
BRAMILLE Sébastien 2022-11-04 11:00:33 +00:00 committed by GitHub
parent 86562fc2cb
commit e12605507a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 25 additions and 8 deletions

View File

@ -1,6 +1,5 @@
package eu.kanade.tachiyomi.extension.en.ninehentai package eu.kanade.tachiyomi.extension.en.ninehentai
import android.util.Log
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess

View File

@ -6,7 +6,7 @@ ext {
extName = 'Japscan' extName = 'Japscan'
pkgNameSuffix = 'fr.japscan' pkgNameSuffix = 'fr.japscan'
extClass = '.Japscan' extClass = '.Japscan'
extVersionCode = 33 extVersionCode = 34
} }
dependencies { dependencies {

View File

@ -351,8 +351,26 @@ class Japscan : ConfigurableSource, ParsedHttpSource() {
Log.d("japscan", "ZJS at $zjsurl") Log.d("japscan", "ZJS at $zjsurl")
val zjs = client.newCall(GET(baseUrl + zjsurl, headers)).execute().body!!.string() val zjs = client.newCall(GET(baseUrl + zjsurl, headers)).execute().body!!.string()
Log.d("japscan", "webtoon, netdumping initiated") Log.d("japscan", "webtoon, netdumping initiated")
val pagesElement = document.getElementById("pages") val pagesElement = document.getElementById("pages")
var pagecount = pagesElement.getElementsByTag("option").size var pagecount = pagesElement.getElementsByTag("option").size
Log.d("japscan", "fallback $pagecount")
if (pagecount == 0) {
Log.d("japscan", "pagecount not found, fallback 1")
val element = document.select(".card:first-child .card-body p").toString()
val regex = """Pages<\/span>: ([0-9]+)<\/p>""".toRegex()
val matchResult = regex.find(element)
val (pagecountFromRegex) = matchResult!!.destructured
pagecount = pagecountFromRegex.toInt()
Log.d("japscan", "fallback pagecount with regex, result: $pagecount")
}
val pages = ArrayList<Page>() val pages = ArrayList<Page>()
val handler = Handler(Looper.getMainLooper()) val handler = Handler(Looper.getMainLooper())
val checkNew = ArrayList<String>(pagecount) val checkNew = ArrayList<String>(pagecount)
@ -379,6 +397,7 @@ class Japscan : ConfigurableSource, ParsedHttpSource() {
webview.webViewClient = object : WebViewClient() { webview.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String?) { override fun onPageFinished(view: WebView, url: String?) {
if (pagecount === 0) { if (pagecount === 0) {
Log.d("japscan", "pagecount not found, fallback 2")
Log.d("japscan", "dynamic page count detected, loading it through JS") Log.d("japscan", "dynamic page count detected, loading it through JS")
super.onPageFinished(view, url) super.onPageFinished(view, url)
view.evaluateJavascript( view.evaluateJavascript(

View File

@ -87,7 +87,6 @@ class Niceoppai : ParsedHttpSource() {
} }
MangasPage(mangas, false) MangasPage(mangas, false)
} }
} }