[RU]GroupLe fix chapter loads and manga status (#6828)

* [RU]GroupLe fix chapter loads and manga status

* [RU]GroupLe small fix of manga status

* [RU]GroupLe review fix

* [RU]GroupLe fix for allhentai

* [RU]GroupLe checks for allhentai and mintmanga
This commit is contained in:
Dr1ks 2024-12-30 09:06:33 -08:00 committed by Draff
parent 64b447a4ac
commit 18b1977691
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
4 changed files with 27 additions and 32 deletions

View File

@ -2,4 +2,4 @@ plugins {
id("lib-multisrc")
}
baseVersionCode = 26
baseVersionCode = 27

View File

@ -177,17 +177,16 @@ abstract class GroupLe(
"div#tab-description .manga-description",
).text()
manga.status = when {
infoElement.html()
.contains("Запрещена публикация произведения по копирайту") || infoElement.html()
document.html()
.contains("Запрещена публикация произведения по копирайту") || document.html()
.contains("ЗАПРЕЩЕНА К ПУБЛИКАЦИИ НА ТЕРРИТОРИИ РФ!") -> SManga.LICENSED
infoElement.html().contains("<b>Сингл</b>") -> SManga.COMPLETED
infoElement.html().contains("<b>Сингл") -> SManga.COMPLETED
else ->
when (infoElement.select("p:contains(Перевод:) span").first()?.text()) {
"продолжается" -> SManga.ONGOING
"начат" -> SManga.ONGOING
"переведено" -> SManga.COMPLETED
"завершён" -> SManga.COMPLETED
"приостановлен" -> SManga.ON_HIATUS
when (infoElement.selectFirst("span.badge:contains(выпуск)")?.text()) {
"выпуск продолжается" -> SManga.ONGOING
"выпуск начат" -> SManga.ONGOING
"выпуск завершён" -> if (infoElement.selectFirst("span.badge:contains(переведено)")?.text()?.isNotEmpty() == true) SManga.COMPLETED else SManga.PUBLISHING_FINISHED
"выпуск приостановлен" -> SManga.ON_HIATUS
else -> SManga.UNKNOWN
}
}
@ -213,15 +212,9 @@ abstract class GroupLe(
private fun chapterListParse(response: Response, manga: SManga): List<SChapter> {
val document = response.asJsoup()
if ((
document.select(".expandable.hide-dn").isNotEmpty() && document.select(".user-avatar")
.isEmpty() && document.toString()
.contains("current_user_country_code = 'RU'")
) || (
document.select("img.logo")
.first()?.attr("title")
?.contains("Allhentai") == true && document.select(".user-avatar").isEmpty()
)
if (document.select(".user-avatar").isEmpty() &&
document.title().run { contains("AllHentai") || contains("MintManga") || contains("МинтМанга") }
) {
throw Exception("Для просмотра контента необходима авторизация через WebView\uD83C\uDF0E")
}
@ -313,20 +306,22 @@ abstract class GroupLe(
val html = document.html()
val readerMark = "rm_h.readerDoInit(["
if (document.select(".user-avatar").isEmpty() &&
document.title().run { contains("AllHentai") || contains("MintManga") || contains("МинтМанга") }
if (!html.contains(readerMark)) {
if (document.select(".input-lg").isNotEmpty() || (
document.select(".user-avatar")
.isEmpty() && document.select("img.logo").first()?.attr("title")
?.contains("Allhentai") == true
)
) {
throw Exception("Для просмотра контента необходима авторизация через WebView\uD83C\uDF0E")
}
if (!response.request.url.toString().contains(baseUrl)) {
) {
throw Exception("Для просмотра контента необходима авторизация через WebView\uD83C\uDF0E")
}
val readerMark = when {
html.contains("rm_h.readerDoInit([") -> "rm_h.readerDoInit(["
html.contains("rm_h.readerInit([") -> "rm_h.readerInit(["
!response.request.url.toString().contains(baseUrl) -> {
throw Exception("Не удалось загрузить главу. Url: ${response.request.url}")
}
else -> {
throw Exception("Дизайн сайта обновлен, для дальнейшей работы необходимо обновление дополнения")
}
}
val beginIndex = html.indexOf(readerMark)

View File

@ -2,7 +2,7 @@ ext {
extName = 'AllHentai'
extClass = '.AllHentai'
themePkg = 'grouple'
baseUrl = 'https://z.ahen.me'
baseUrl = 'https://20.allhen.online'
overrideVersionCode = 24
isNsfw = true
}

View File

@ -12,7 +12,7 @@ import org.jsoup.nodes.Document
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class AllHentai : GroupLe("AllHentai", "https://z.ahen.me", "ru") {
class AllHentai : GroupLe("AllHentai", "https://20.allhen.online", "ru") {
override val id = 1809051393403180443
private val preferences = Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)