Bato.to: update mirrors, pick one at random, deprecated mirror migration (#7317)
* Bato.to: update mirrors, pick one at random * add 'auto' mirror option * Do not use a deprecated mirror, even if explicitly set
This commit is contained in:
parent
7722a6e458
commit
a0e3441507
|
@ -14,8 +14,12 @@
|
|||
|
||||
<data android:host="*.bato.to" />
|
||||
<data android:host="bato.to" />
|
||||
<data android:host="*.batocc.com" />
|
||||
<data android:host="batocc.com" />
|
||||
<data android:host="*.batocomic.com" />
|
||||
<data android:host="batocomic.com" />
|
||||
<data android:host="*.batocomic.net" />
|
||||
<data android:host="batocomic.net" />
|
||||
<data android:host="*.batocomic.org" />
|
||||
<data android:host="batocomic.org" />
|
||||
<data android:host="*.batotoo.com" />
|
||||
<data android:host="batotoo.com" />
|
||||
<data android:host="*.batotwo.com" />
|
||||
|
@ -24,18 +28,40 @@
|
|||
<data android:host="battwo.com" />
|
||||
<data android:host="*.comiko.net" />
|
||||
<data android:host="comiko.net" />
|
||||
<data android:host="*.comiko.org" />
|
||||
<data android:host="comiko.org" />
|
||||
<data android:host="*.mangatoto.com" />
|
||||
<data android:host="mangatoto.com" />
|
||||
<data android:host="*.mangatoto.net" />
|
||||
<data android:host="mangatoto.net" />
|
||||
<data android:host="*.mangatoto.org" />
|
||||
<data android:host="mangatoto.org" />
|
||||
<data android:host="*.mycordant.co.uk" />
|
||||
<data android:host="mycordant.co.uk" />
|
||||
<data android:host="*.readtoto.com" />
|
||||
<data android:host="readtoto.com" />
|
||||
<data android:host="*.readtoto.net" />
|
||||
<data android:host="readtoto.net" />
|
||||
<data android:host="*.readtoto.org" />
|
||||
<data android:host="readtoto.org" />
|
||||
<data android:host="*.xbato.com" />
|
||||
<data android:host="xbato.com" />
|
||||
<data android:host="*.xbato.net" />
|
||||
<data android:host="xbato.net" />
|
||||
<data android:host="*.xbato.org" />
|
||||
<data android:host="xbato.org" />
|
||||
<data android:host="*.zbato.com" />
|
||||
<data android:host="zbato.com" />
|
||||
<data android:host="*.zbato.net" />
|
||||
<data android:host="zbato.net" />
|
||||
<data android:host="*.zbato.org" />
|
||||
<data android:host="zbato.org" />
|
||||
<data android:host="*.dto.to" />
|
||||
<data android:host="dto.to" />
|
||||
<data android:host="*.fto.to" />
|
||||
<data android:host="fto.to" />
|
||||
<data android:host="*.hto.to" />
|
||||
<data android:host="hto.to" />
|
||||
<data android:host="*.jto.to" />
|
||||
<data android:host="jto.to" />
|
||||
<data android:host="*.mto.to" />
|
||||
<data android:host="mto.to" />
|
||||
<data android:host="*.wto.to" />
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
ext {
|
||||
extName = 'Bato.to'
|
||||
extClass = '.BatoToFactory'
|
||||
extVersionCode = 47
|
||||
extVersionCode = 48
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.content.SharedPreferences
|
|||
import androidx.preference.CheckBoxPreference
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.extension.BuildConfig
|
||||
import eu.kanade.tachiyomi.lib.cryptoaes.CryptoAES
|
||||
import eu.kanade.tachiyomi.lib.cryptoaes.Deobfuscator
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
|
@ -100,11 +101,25 @@ open class BatoTo(
|
|||
if (current.isNotEmpty()) {
|
||||
return current
|
||||
}
|
||||
field = getMirrorPref()!!
|
||||
field = getMirrorPref()
|
||||
return field
|
||||
}
|
||||
|
||||
private fun getMirrorPref(): String? = preferences.getString("${MIRROR_PREF_KEY}_$lang", MIRROR_PREF_DEFAULT_VALUE)
|
||||
private fun getMirrorPref(): String {
|
||||
return preferences.getString("${MIRROR_PREF_KEY}_$lang", MIRROR_PREF_DEFAULT_VALUE)
|
||||
?.takeUnless { it == MIRROR_PREF_DEFAULT_VALUE }
|
||||
?: let {
|
||||
val seed = runCatching {
|
||||
val pm = Injekt.get<Application>().packageManager
|
||||
pm.getPackageInfo(BuildConfig.APPLICATION_ID, 0).lastUpdateTime
|
||||
}.getOrElse {
|
||||
BuildConfig.VERSION_NAME.hashCode().toLong()
|
||||
}
|
||||
|
||||
MIRROR_PREF_ENTRY_VALUES[1 + (seed % (MIRROR_PREF_ENTRIES.size - 1)).toInt()]
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAltChapterListPref(): Boolean = preferences.getBoolean("${ALT_CHAPTER_LIST_PREF_KEY}_$lang", ALT_CHAPTER_LIST_PREF_DEFAULT_VALUE)
|
||||
private fun isRemoveTitleVersion(): Boolean {
|
||||
return preferences.getBoolean("${REMOVE_TITLE_VERSION_PREF}_$lang", false)
|
||||
|
@ -327,6 +342,12 @@ open class BatoTo(
|
|||
|
||||
override fun mangaDetailsRequest(manga: SManga): Request {
|
||||
if (manga.url.startsWith("http")) {
|
||||
// Check if trying to use a deprecated mirror, force current mirror
|
||||
val httpUrl = manga.url.toHttpUrl()
|
||||
if ("https://${httpUrl.host}" in DEPRECATED_MIRRORS) {
|
||||
val newHttpUrl = httpUrl.newBuilder().host(getMirrorPref().toHttpUrl().host)
|
||||
return GET(newHttpUrl.build(), headers)
|
||||
}
|
||||
return GET(manga.url, headers)
|
||||
}
|
||||
return super.mangaDetailsRequest(manga)
|
||||
|
@ -414,6 +435,12 @@ open class BatoTo(
|
|||
|
||||
GET("$baseUrl/rss/series/$id.xml", headers)
|
||||
} else if (manga.url.startsWith("http")) {
|
||||
// Check if trying to use a deprecated mirror, force current mirror
|
||||
val httpUrl = manga.url.toHttpUrl()
|
||||
if ("https://${httpUrl.host}" in DEPRECATED_MIRRORS) {
|
||||
val newHttpUrl = httpUrl.newBuilder().host(getMirrorPref().toHttpUrl().host)
|
||||
return GET(newHttpUrl.build(), headers)
|
||||
}
|
||||
GET(manga.url, headers)
|
||||
} else {
|
||||
super.chapterListRequest(manga)
|
||||
|
@ -510,6 +537,12 @@ open class BatoTo(
|
|||
|
||||
override fun pageListRequest(chapter: SChapter): Request {
|
||||
if (chapter.url.startsWith("http")) {
|
||||
// Check if trying to use a deprecated mirror, force current mirror
|
||||
val httpUrl = chapter.url.toHttpUrl()
|
||||
if ("https://${httpUrl.host}" in DEPRECATED_MIRRORS) {
|
||||
val newHttpUrl = httpUrl.newBuilder().host(getMirrorPref().toHttpUrl().host)
|
||||
return GET(newHttpUrl.build(), headers)
|
||||
}
|
||||
return GET(chapter.url, headers)
|
||||
}
|
||||
return super.pageListRequest(chapter)
|
||||
|
@ -1004,7 +1037,7 @@ open class BatoTo(
|
|||
private const val MIRROR_PREF_TITLE = "Mirror"
|
||||
private const val REMOVE_TITLE_VERSION_PREF = "REMOVE_TITLE_VERSION"
|
||||
private val MIRROR_PREF_ENTRIES = arrayOf(
|
||||
"zbato.org",
|
||||
"Auto",
|
||||
"batocomic.com",
|
||||
"batocomic.net",
|
||||
"batocomic.org",
|
||||
|
@ -1016,23 +1049,25 @@ open class BatoTo(
|
|||
"readtoto.com",
|
||||
"readtoto.net",
|
||||
"readtoto.org",
|
||||
"dto.to",
|
||||
"fto.to",
|
||||
"jto.to",
|
||||
"hto.to",
|
||||
"mto.to",
|
||||
"wto.to",
|
||||
"xbato.com",
|
||||
"xbato.net",
|
||||
"xbato.org",
|
||||
"zbato.com",
|
||||
"zbato.net",
|
||||
"zbato.org",
|
||||
"dto.to",
|
||||
"fto.to",
|
||||
"hto.to",
|
||||
"jto.to",
|
||||
"mto.to",
|
||||
"wto.to",
|
||||
)
|
||||
private val MIRROR_PREF_ENTRY_VALUES = MIRROR_PREF_ENTRIES.map { "https://$it" }.toTypedArray()
|
||||
private val MIRROR_PREF_DEFAULT_VALUE = MIRROR_PREF_ENTRY_VALUES[0]
|
||||
|
||||
private val DEPRECATED_MIRRORS = listOf(
|
||||
"https://bato.to",
|
||||
"https://batocc.com", // parked
|
||||
"https://mangatoto.com",
|
||||
"https://mangatoto.net",
|
||||
"https://mangatoto.org",
|
||||
|
|
Loading…
Reference in New Issue