[RU]LibGoup fix IOException 18+ & status 1.3 more smart (#12166)

This commit is contained in:
Ejan 2022-06-12 19:14:21 +05:00 committed by GitHub
parent 3f01076936
commit c5cd8463b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 30 deletions

View File

@ -1,22 +1,14 @@
package eu.kanade.tachiyomi.extension.ru.hentailib
import android.app.Application
import android.content.SharedPreferences
import android.widget.Toast
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.multisrc.libgroup.LibGroup
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.multisrc.libgroup.LibGroup
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import java.io.IOException
import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.io.IOException
class HentaiLib : LibGroup("HentaiLib", "https://hentailib.me", "ru") {

View File

@ -5,16 +5,17 @@ import android.content.SharedPreferences
import android.widget.Toast
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.multisrc.libgroup.LibGroup
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.io.IOException
class MangaLib : LibGroup("MangaLib", "https://mangalib.me", "ru") {
@ -26,6 +27,16 @@ class MangaLib : LibGroup("MangaLib", "https://mangalib.me", "ru") {
override val client: OkHttpClient = super.client.newBuilder()
.addInterceptor(::imageContentTypeIntercept)
.addInterceptor { chain ->
val originalRequest = chain.request()
val response = chain.proceed(originalRequest)
if (originalRequest.url.toString().contains(baseUrl))
if (!network.cloudflareClient.newCall(GET(baseUrl, headers))
.execute().body!!.string().contains("m-menu__user-info") && response.code == 404
)
throw IOException("Для просмотра 18+ контента необходима авторизация через WebView")
return@addInterceptor response
}
.build()
private var csrfToken: String = ""

View File

@ -9,7 +9,7 @@ class LibGenerator: ThemeSourceGenerator {
override val themeClass = "LibGroup"
override val baseVersionCode: Int = 2
override val baseVersionCode: Int = 3
override val sources = listOf(
SingleLang("MangaLib", "https://mangalib.me", "ru", overrideVersionCode = 74),

View File

@ -46,6 +46,7 @@ import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
abstract class LibGroup(
override val name: String,
override val baseUrl: String,
@ -238,20 +239,27 @@ abstract class LibGroup(
manga.thumbnail_url = document.select(".media-header__cover").attr("src")
manga.author = body.select("div.media-info-list__title:contains(Автор) + div a").joinToString { it.text() }
manga.artist = body.select("div.media-info-list__title:contains(Художник) + div a").joinToString { it.text() }
val StatusTranslate = body.select("div.media-info-list__title:contains(Статус перевода) + div").text().lowercase(Locale.ROOT)
val StatusTitle = body.select("div.media-info-list__title:contains(Статус тайтла) + div").text().lowercase(Locale.ROOT)
manga.status = if (document.html().contains("paper empty section")
) {
SManga.LICENSED
} else
when (
body.select("div.media-info-list__title:contains(Статус тайтла) + div")
.text()
.lowercase(Locale.ROOT)
) {
"онгоинг" -> SManga.ONGOING
"завершён" -> SManga.COMPLETED
"приостановлен" -> SManga.ON_HIATUS
"выпуск прекращён" -> SManga.CANCELLED
else -> SManga.UNKNOWN
when {
StatusTranslate.contains("завершен" ) && StatusTitle.contains("приостановлен" ) || StatusTranslate.contains("заморожен" ) -> SManga.ON_HIATUS
StatusTranslate.contains("завершен" ) && StatusTitle.contains("выпуск прекращён" ) -> SManga.CANCELLED
StatusTranslate.contains("продолжается" ) -> SManga.ONGOING
StatusTranslate.contains("завершен" ) -> SManga.COMPLETED
else -> when (StatusTitle){
"онгоинг" -> SManga.ONGOING
"анонс" -> SManga.ONGOING
"завершён" -> SManga.COMPLETED
"приостановлен" -> SManga.ON_HIATUS
"выпуск прекращён" -> SManga.CANCELLED
else -> SManga.UNKNOWN
}
}
manga.genre = category + ", " + rawAgeStop + ", " + genres.joinToString { it.trim() }
@ -384,13 +392,6 @@ abstract class LibGroup(
override fun pageListParse(response: Response): List<Page> {
val document = response.asJsoup()
val redirect = document.html()
if (!redirect.contains("window.__info")) {
if (redirect.contains("hold-transition login-page")) {
throw Exception("Для просмотра 18+ контента необходима авторизация через WebView")
}
}
val chapInfo = document
.select("script:containsData(window.__info)")
.first()