[RU]Henchan fix jsonerror (#10209)

* [RU]Henchan fix jsonerror

* fix loop

* delete old
This commit is contained in:
e-shl 2021-12-24 00:29:04 +05:00 committed by GitHub
parent 30e8cb6d5c
commit 62ad0bfca7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 22 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'Henchan' extName = 'Henchan'
pkgNameSuffix = 'ru.henchan' pkgNameSuffix = 'ru.henchan'
extClass = '.Henchan' extClass = '.Henchan'
extVersionCode = 27 extVersionCode = 28
isNsfw = true isNsfw = true
} }

View File

@ -11,12 +11,6 @@ import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Headers import okhttp3.Headers
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
@ -24,7 +18,6 @@ import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import rx.Observable import rx.Observable
import uy.kohesive.injekt.injectLazy
import java.net.URL import java.net.URL
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@ -36,8 +29,6 @@ class Henchan : ParsedHttpSource() {
override val baseUrl = "https://hentaichan.live" override val baseUrl = "https://hentaichan.live"
private val exhentaiBaseUrl = "http://exhentai-dono.me"
override val lang = "ru" override val lang = "ru"
override val supportsLatest = true override val supportsLatest = true
@ -246,29 +237,31 @@ class Henchan : ParsedHttpSource() {
override fun pageListRequest(chapter: SChapter): Request { override fun pageListRequest(chapter: SChapter): Request {
val url = if (chapter.url.contains("/manga/")) { val url = if (chapter.url.contains("/manga/")) {
exhentaiBaseUrl + chapter.url.replace("/manga/", "/online/") + "?development_access=true" baseUrl + chapter.url.replace("/manga/", "/online/")
} else { } else {
baseUrl + chapter.url baseUrl + chapter.url
} }
return GET(url, Headers.Builder().add("Accept", "image/webp,image/apng").build()) return GET(url, Headers.Builder().add("Accept", "image/webp,image/apng").build())
} }
override fun pageListParse(response: Response): List<Page> {
val html = response.body!!.string()
val prefix = "fullimg\": ["
val beginIndex = html.indexOf(prefix) + prefix.length
val endIndex = html.indexOf("]", beginIndex)
val trimmedHtml = html.substring(beginIndex, endIndex)
.replace("\"", "")
.replace("\'", "")
override fun imageUrlParse(document: Document) = throw Exception("Not Used") val pageUrls = trimmedHtml.split(", ")
return pageUrls.mapIndexed { i, url -> Page(i, "", url) }
private val json: Json by injectLazy()
private fun Document.parseJsonArray(): JsonArray {
val imgScript = this.select("script:containsData(fullimg)").first().toString()
val imgString = imgScript.substring(imgScript.indexOf('{'), imgScript.lastIndexOf('}') + 1).replace("&quot;", "\"")
return json.decodeFromString<JsonObject>(imgString)["fullimg"]!!.jsonArray
} }
override fun pageListParse(document: Document): List<Page> { override fun pageListParse(document: Document): List<Page> {
return document.parseJsonArray().mapIndexed { index, imageUrl -> throw Exception("Not used")
Page(index, imageUrl = imageUrl.jsonPrimitive.content.replace(".gif.webp", ".gif"))
}
} }
override fun imageUrlParse(document: Document) = ""
private class Genre(val id: String, @SuppressLint("DefaultLocale") name: String = id.replace('_', ' ').capitalize()) : Filter.TriState(name) private class Genre(val id: String, @SuppressLint("DefaultLocale") name: String = id.replace('_', ' ').capitalize()) : Filter.TriState(name)
private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Тэги", genres) private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Тэги", genres)
private class OrderBy : UriPartFilter( private class OrderBy : UriPartFilter(