[RU]Lib fix mobile parse in #11516 (#11520)

* [RU]Lib fix mobile parse in #11516

* authorization message

* other error

* lost
This commit is contained in:
Ejan 2022-04-20 02:55:19 +05:00 committed by GitHub
parent 542d588699
commit b1e252455f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 13 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'HentaiLib'
pkgNameSuffix = 'ru.libhentai'
extClass = '.LibHentai'
extVersionCode = 12
extVersionCode = 13
isNsfw = true
}

View File

@ -8,6 +8,7 @@ import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservable
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.Filter
@ -63,7 +64,7 @@ class LibHentai : ConfigurableSource, HttpSource() {
override val baseUrl = "https://hentailib.me"
override fun headersBuilder() = Headers.Builder().apply {
//User-Agent required for authorization through third-party accounts (mobile version for correct display in WebView)
// User-Agent required for authorization through third-party accounts (mobile version for correct display in WebView)
add("User-Agent", "Mozilla/5.0 (Linux; Android 10; SM-G980F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36")
add("Accept", "image/webp,*/*;q=0.8")
add("Referer", baseUrl)
@ -91,7 +92,7 @@ class LibHentai : ConfigurableSource, HttpSource() {
val originalRequest = chain.request()
if (originalRequest.url.toString().contains(baseUrl))
if (!authClient.newCall(GET(baseUrl, headers))
.execute().body!!.string().contains("header-right-menu__avatar")
.execute().body!!.string().contains("m-menu__user-info")
)
throw Exception("Для просмотра 18+ контента необходима авторизация через WebView")
return@addInterceptor chain.proceed(originalRequest)
@ -150,7 +151,12 @@ class LibHentai : ConfigurableSource, HttpSource() {
private fun fetchPopularMangaFromApi(page: Int): Observable<MangasPage> {
return client.newCall(POST("$baseUrl/filterlist?dir=desc&sort=views&page=$page", catalogHeaders()))
.asObservableSuccess()
.asObservable().doOnNext { response ->
if (!response.isSuccessful) {
response.close()
if (response.code == 419) throw Exception("Для завершения авторизации необходимо перезапустить приложение с полной остановкой.") else throw Exception("HTTP error ${response.code}")
}
}
.map { response ->
popularMangaParse(response)
}
@ -203,8 +209,8 @@ class LibHentai : ConfigurableSource, HttpSource() {
rawAgeStop = "0+"
}
val ratingValue = document.select(".media-rating.media-rating_lg div.media-rating__value").text().toFloat() * 2
val ratingVotes = document.select(".media-rating.media-rating_lg div.media-rating__votes").text()
val ratingValue = document.select(".media-rating__value").last().text().toFloat() * 2
val ratingVotes = document.select(".media-rating__votes").last().text()
val ratingStar = when {
ratingValue > 9.5 -> "★★★★★"
ratingValue > 8.5 -> "★★★★✬"
@ -224,7 +230,7 @@ class LibHentai : ConfigurableSource, HttpSource() {
isEng.equals("eng") && dataManga!!.jsonObject["engName"]?.jsonPrimitive?.content.orEmpty().isNotEmpty() -> dataManga.jsonObject["engName"]!!.jsonPrimitive.content
else -> dataManga!!.jsonObject["name"]!!.jsonPrimitive.content
}
manga.thumbnail_url = document.select(".media-sidebar__cover > img").attr("src")
manga.thumbnail_url = document.select(".media-header__cover").attr("src")
manga.author = body.select("div.media-info-list__title:contains(Автор) + div").text()
manga.artist = body.select("div.media-info-list__title:contains(Художник) + div").text()
manga.status = if (document.html().contains("paper empty section")

View File

@ -6,7 +6,7 @@ ext {
extName = 'MangaLib'
pkgNameSuffix = 'ru.libmanga'
extClass = '.LibManga'
extVersionCode = 68
extVersionCode = 69
}
dependencies {

View File

@ -8,6 +8,7 @@ import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservable
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.Filter
@ -84,7 +85,7 @@ class LibManga : ConfigurableSource, HttpSource() {
override val baseUrl: String = domain.toString()
override fun headersBuilder() = Headers.Builder().apply {
//User-Agent required for authorization through third-party accounts (mobile version for correct display in WebView)
// User-Agent required for authorization through third-party accounts (mobile version for correct display in WebView)
add("User-Agent", "Mozilla/5.0 (Linux; Android 10; SM-G980F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36")
add("Accept", "image/webp,*/*;q=0.8")
add("Referer", baseUrl)
@ -143,7 +144,12 @@ class LibManga : ConfigurableSource, HttpSource() {
private fun fetchPopularMangaFromApi(page: Int): Observable<MangasPage> {
return client.newCall(POST("$baseUrl/filterlist?dir=desc&sort=views&page=$page", catalogHeaders()))
.asObservableSuccess()
.asObservable().doOnNext { response ->
if (!response.isSuccessful) {
response.close()
if (response.code == 419) throw Exception("Для завершения авторизации необходимо перезапустить приложение с полной остановкой.") else throw Exception("HTTP error ${response.code}")
}
}
.map { response ->
popularMangaParse(response)
}
@ -196,8 +202,8 @@ class LibManga : ConfigurableSource, HttpSource() {
rawAgeStop = "0+"
}
val ratingValue = document.select(".media-rating.media-rating_lg div.media-rating__value").text().toFloat() * 2
val ratingVotes = document.select(".media-rating.media-rating_lg div.media-rating__votes").text()
val ratingValue = document.select(".media-rating__value").last().text().toFloat() * 2
val ratingVotes = document.select(".media-rating__votes").last().text()
val ratingStar = when {
ratingValue > 9.5 -> "★★★★★"
ratingValue > 8.5 -> "★★★★✬"
@ -217,7 +223,7 @@ class LibManga : ConfigurableSource, HttpSource() {
isEng.equals("eng") && dataManga!!.jsonObject["engName"]?.jsonPrimitive?.content.orEmpty().isNotEmpty() -> dataManga.jsonObject["engName"]!!.jsonPrimitive.content
else -> dataManga!!.jsonObject["name"]!!.jsonPrimitive.content
}
manga.thumbnail_url = document.select(".media-sidebar__cover > img").attr("src")
manga.thumbnail_url = document.select(".media-header__cover").attr("src")
manga.author = body.select("div.media-info-list__title:contains(Автор) + div").text()
manga.artist = body.select("div.media-info-list__title:contains(Художник) + div").text()
manga.status = if (document.html().contains("paper empty section")