[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' extName = 'HentaiLib'
pkgNameSuffix = 'ru.libhentai' pkgNameSuffix = 'ru.libhentai'
extClass = '.LibHentai' extClass = '.LibHentai'
extVersionCode = 12 extVersionCode = 13
isNsfw = true isNsfw = true
} }

View File

@ -8,6 +8,7 @@ import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
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.asObservable
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.Filter
@ -63,7 +64,7 @@ class LibHentai : ConfigurableSource, HttpSource() {
override val baseUrl = "https://hentailib.me" override val baseUrl = "https://hentailib.me"
override fun headersBuilder() = Headers.Builder().apply { 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("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("Accept", "image/webp,*/*;q=0.8")
add("Referer", baseUrl) add("Referer", baseUrl)
@ -91,7 +92,7 @@ class LibHentai : ConfigurableSource, HttpSource() {
val originalRequest = chain.request() val originalRequest = chain.request()
if (originalRequest.url.toString().contains(baseUrl)) if (originalRequest.url.toString().contains(baseUrl))
if (!authClient.newCall(GET(baseUrl, headers)) 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") throw Exception("Для просмотра 18+ контента необходима авторизация через WebView")
return@addInterceptor chain.proceed(originalRequest) return@addInterceptor chain.proceed(originalRequest)
@ -150,7 +151,12 @@ class LibHentai : ConfigurableSource, HttpSource() {
private fun fetchPopularMangaFromApi(page: Int): Observable<MangasPage> { private fun fetchPopularMangaFromApi(page: Int): Observable<MangasPage> {
return client.newCall(POST("$baseUrl/filterlist?dir=desc&sort=views&page=$page", catalogHeaders())) 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 -> .map { response ->
popularMangaParse(response) popularMangaParse(response)
} }
@ -203,8 +209,8 @@ class LibHentai : ConfigurableSource, HttpSource() {
rawAgeStop = "0+" rawAgeStop = "0+"
} }
val ratingValue = document.select(".media-rating.media-rating_lg div.media-rating__value").text().toFloat() * 2 val ratingValue = document.select(".media-rating__value").last().text().toFloat() * 2
val ratingVotes = document.select(".media-rating.media-rating_lg div.media-rating__votes").text() val ratingVotes = document.select(".media-rating__votes").last().text()
val ratingStar = when { val ratingStar = when {
ratingValue > 9.5 -> "★★★★★" ratingValue > 9.5 -> "★★★★★"
ratingValue > 8.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 isEng.equals("eng") && dataManga!!.jsonObject["engName"]?.jsonPrimitive?.content.orEmpty().isNotEmpty() -> dataManga.jsonObject["engName"]!!.jsonPrimitive.content
else -> dataManga!!.jsonObject["name"]!!.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.author = body.select("div.media-info-list__title:contains(Автор) + div").text()
manga.artist = 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") manga.status = if (document.html().contains("paper empty section")

View File

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

View File

@ -8,6 +8,7 @@ import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
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.asObservable
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.Filter
@ -84,7 +85,7 @@ class LibManga : ConfigurableSource, HttpSource() {
override val baseUrl: String = domain.toString() override val baseUrl: String = domain.toString()
override fun headersBuilder() = Headers.Builder().apply { 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("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("Accept", "image/webp,*/*;q=0.8")
add("Referer", baseUrl) add("Referer", baseUrl)
@ -143,7 +144,12 @@ class LibManga : ConfigurableSource, HttpSource() {
private fun fetchPopularMangaFromApi(page: Int): Observable<MangasPage> { private fun fetchPopularMangaFromApi(page: Int): Observable<MangasPage> {
return client.newCall(POST("$baseUrl/filterlist?dir=desc&sort=views&page=$page", catalogHeaders())) 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 -> .map { response ->
popularMangaParse(response) popularMangaParse(response)
} }
@ -196,8 +202,8 @@ class LibManga : ConfigurableSource, HttpSource() {
rawAgeStop = "0+" rawAgeStop = "0+"
} }
val ratingValue = document.select(".media-rating.media-rating_lg div.media-rating__value").text().toFloat() * 2 val ratingValue = document.select(".media-rating__value").last().text().toFloat() * 2
val ratingVotes = document.select(".media-rating.media-rating_lg div.media-rating__votes").text() val ratingVotes = document.select(".media-rating__votes").last().text()
val ratingStar = when { val ratingStar = when {
ratingValue > 9.5 -> "★★★★★" ratingValue > 9.5 -> "★★★★★"
ratingValue > 8.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 isEng.equals("eng") && dataManga!!.jsonObject["engName"]?.jsonPrimitive?.content.orEmpty().isNotEmpty() -> dataManga.jsonObject["engName"]!!.jsonPrimitive.content
else -> dataManga!!.jsonObject["name"]!!.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.author = body.select("div.media-info-list__title:contains(Автор) + div").text()
manga.artist = 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") manga.status = if (document.html().contains("paper empty section")