[RU]GroupLe add "No auth" message and AllHentai domain switcher (#13498)
* [RU]GroupLe add "No auth" message and AllHentai domain switcher * auto redirectable domain * fix pars breaked image text * change redirect Exception massage
This commit is contained in:
parent
2d31ba573a
commit
1df19dcf90
@ -1,16 +1,29 @@
|
|||||||
package eu.kanade.tachiyomi.extension.ru.allhentai
|
package eu.kanade.tachiyomi.extension.ru.allhentai
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.preference.EditTextPreference
|
||||||
import eu.kanade.tachiyomi.multisrc.grouple.GroupLe
|
import eu.kanade.tachiyomi.multisrc.grouple.GroupLe
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.source.model.Filter
|
import eu.kanade.tachiyomi.source.model.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
class AllHentai : GroupLe("AllHentai", "http://23.allhen.online", "ru") {
|
class AllHentai : GroupLe("AllHentai", "http://allhen.online", "ru") {
|
||||||
|
|
||||||
override val id: Long = 1809051393403180443
|
override val id: Long = 1809051393403180443
|
||||||
|
|
||||||
|
private val preferences: SharedPreferences by lazy {
|
||||||
|
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||||
|
}
|
||||||
|
|
||||||
|
private var domain: String = preferences.getString(DOMAIN_TITLE, DOMAIN_DEFAULT)!!
|
||||||
|
override val baseUrl: String = domain
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
val url = super.searchMangaRequest(page, query, filters).url.newBuilder()
|
val url = super.searchMangaRequest(page, query, filters).url.newBuilder()
|
||||||
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
|
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
|
||||||
@ -253,4 +266,30 @@ class AllHentai : GroupLe("AllHentai", "http://23.allhen.online", "ru") {
|
|||||||
private val tagsName = getTagsList().map {
|
private val tagsName = getTagsList().map {
|
||||||
it.name
|
it.name
|
||||||
}.toTypedArray()
|
}.toTypedArray()
|
||||||
|
|
||||||
|
override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
|
||||||
|
super.setupPreferenceScreen(screen)
|
||||||
|
EditTextPreference(screen.context).apply {
|
||||||
|
key = DOMAIN_TITLE
|
||||||
|
this.title = DOMAIN_TITLE
|
||||||
|
summary = domain
|
||||||
|
this.setDefaultValue(DOMAIN_DEFAULT)
|
||||||
|
dialogTitle = DOMAIN_TITLE
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
try {
|
||||||
|
val res = preferences.edit().putString(DOMAIN_TITLE, newValue as String).commit()
|
||||||
|
Toast.makeText(screen.context, "Для смены домена необходимо перезапустить приложение с полной остановкой.", Toast.LENGTH_LONG).show()
|
||||||
|
res
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.let(screen::addPreference)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val DOMAIN_TITLE = "Домен"
|
||||||
|
private const val DOMAIN_DEFAULT = "http://allhen.online"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ abstract class GroupLe(
|
|||||||
val originalRequest = chain.request()
|
val originalRequest = chain.request()
|
||||||
val response = chain.proceed(originalRequest)
|
val response = chain.proceed(originalRequest)
|
||||||
if (originalRequest.url.toString().contains(baseUrl) and (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301)))
|
if (originalRequest.url.toString().contains(baseUrl) and (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301)))
|
||||||
throw IOException("Манга переехала на другой адрес/ссылку!")
|
throw IOException("Ссылка на мангу была изменена. Перемегрируйте мангу на тотже (или смежный с GroupLe) источник или передабавте из Поисковика/Каталога.")
|
||||||
response
|
response
|
||||||
}
|
}
|
||||||
.build()
|
.build()
|
||||||
@ -186,7 +186,7 @@ abstract class GroupLe(
|
|||||||
override fun chapterListSelector() = "div.chapters-link > table > tbody > tr:has(td > a):has(td.date:not(.text-info))"
|
override fun chapterListSelector() = "div.chapters-link > table > tbody > tr:has(td > a):has(td.date:not(.text-info))"
|
||||||
|
|
||||||
private fun chapterFromElement(element: Element, manga: SManga): SChapter {
|
private fun chapterFromElement(element: Element, manga: SManga): SChapter {
|
||||||
val urlElement = element.select("a").first()
|
val urlElement = element.select("a.chapter-link").first()
|
||||||
val chapterInf = element.select("td.item-title").first()
|
val chapterInf = element.select("td.item-title").first()
|
||||||
val urlText = urlElement.text()
|
val urlText = urlElement.text()
|
||||||
|
|
||||||
@ -249,7 +249,14 @@ abstract class GroupLe(
|
|||||||
|
|
||||||
override fun pageListParse(response: Response): List<Page> {
|
override fun pageListParse(response: Response): List<Page> {
|
||||||
val html = response.body!!.string()
|
val html = response.body!!.string()
|
||||||
val beginIndex = html.indexOf("rm_h.initReader( [")
|
|
||||||
|
val readerMark = "rm_h.initReader( ["
|
||||||
|
|
||||||
|
if (!html.contains(readerMark)) {
|
||||||
|
throw Exception("Для просмотра 18+ контента необходима авторизация через WebView")
|
||||||
|
}
|
||||||
|
|
||||||
|
val beginIndex = html.indexOf(readerMark)
|
||||||
val endIndex = html.indexOf(");", beginIndex)
|
val endIndex = html.indexOf(");", beginIndex)
|
||||||
val trimmedHtml = html.substring(beginIndex, endIndex)
|
val trimmedHtml = html.substring(beginIndex, endIndex)
|
||||||
|
|
||||||
|
@ -9,12 +9,12 @@ class GroupLeGenerator : ThemeSourceGenerator {
|
|||||||
|
|
||||||
override val themeClass = "GroupLe"
|
override val themeClass = "GroupLe"
|
||||||
|
|
||||||
override val baseVersionCode: Int = 7
|
override val baseVersionCode: Int = 8
|
||||||
|
|
||||||
override val sources = listOf(
|
override val sources = listOf(
|
||||||
SingleLang("ReadManga", "https://readmanga.live", "ru", overrideVersionCode = 46),
|
SingleLang("ReadManga", "https://readmanga.live", "ru", overrideVersionCode = 46),
|
||||||
SingleLang("MintManga", "https://mintmanga.live", "ru", overrideVersionCode = 46),
|
SingleLang("MintManga", "https://mintmanga.live", "ru", overrideVersionCode = 46),
|
||||||
SingleLang("AllHentai", "http://23.allhen.online", "ru", isNsfw = true, overrideVersionCode = 22),
|
SingleLang("AllHentai", "http://allhen.online", "ru", isNsfw = true, overrideVersionCode = 22),
|
||||||
SingleLang("SelfManga", "https://selfmanga.live", "ru", overrideVersionCode = 22),
|
SingleLang("SelfManga", "https://selfmanga.live", "ru", overrideVersionCode = 22),
|
||||||
SingleLang("RuMIX", "https://rumix.me", "ru", overrideVersionCode = 1)
|
SingleLang("RuMIX", "https://rumix.me", "ru", overrideVersionCode = 1)
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user