Dm5: Add mirror selection in preference (#10330)

* Dm5: Add mirror selection in preference

* Add MIRROR_PREF constant
This commit is contained in:
tanaka-shizuku3 2025-08-30 19:25:00 +08:00 committed by Draff
parent 6c255f4658
commit ef7a5f6faa
Signed by: Draff
GPG Key ID: E8A89F3211677653
2 changed files with 16 additions and 2 deletions

View File

@ -1,7 +1,7 @@
ext { ext {
extName = 'Dm5' extName = 'Dm5'
extClass = '.Dm5' extClass = '.Dm5'
extVersionCode = 5 extVersionCode = 6
isNsfw = true isNsfw = true
} }

View File

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.extension.zh.dm5 package eu.kanade.tachiyomi.extension.zh.dm5
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat import androidx.preference.SwitchPreferenceCompat
import eu.kanade.tachiyomi.lib.unpacker.Unpacker import eu.kanade.tachiyomi.lib.unpacker.Unpacker
@ -26,12 +27,12 @@ class Dm5 : ParsedHttpSource(), ConfigurableSource {
override val lang = "zh" override val lang = "zh"
override val supportsLatest = true override val supportsLatest = true
override val name = "动漫屋" override val name = "动漫屋"
override val baseUrl = "https://www.dm5.cn"
override val client: OkHttpClient = network.cloudflareClient.newBuilder() override val client: OkHttpClient = network.cloudflareClient.newBuilder()
.addInterceptor(CommentsInterceptor) .addInterceptor(CommentsInterceptor)
.build() .build()
private val preferences: SharedPreferences = getPreferences() private val preferences: SharedPreferences = getPreferences()
override val baseUrl = preferences.getString(MIRROR_PREF, MIRROR_ENTRIES[0])!!
// Some mangas are blocked without this // Some mangas are blocked without this
override fun headersBuilder() = super.headersBuilder().set("Accept-Language", "zh-TW") override fun headersBuilder() = super.headersBuilder().set("Accept-Language", "zh-TW")
@ -186,6 +187,13 @@ class Dm5 : ParsedHttpSource(), ConfigurableSource {
} }
override fun setupPreferenceScreen(screen: PreferenceScreen) { override fun setupPreferenceScreen(screen: PreferenceScreen) {
val mirrorPreference = ListPreference(screen.context).apply {
key = MIRROR_PREF
title = "使用镜像网址"
entries = MIRROR_ENTRIES
entryValues = MIRROR_ENTRIES
setDefaultValue(MIRROR_ENTRIES[0])
}
val chapterCommentsPreference = SwitchPreferenceCompat(screen.context).apply { val chapterCommentsPreference = SwitchPreferenceCompat(screen.context).apply {
key = CHAPTER_COMMENTS_PREF key = CHAPTER_COMMENTS_PREF
title = "章末吐槽页" title = "章末吐槽页"
@ -197,11 +205,17 @@ class Dm5 : ParsedHttpSource(), ConfigurableSource {
title = "依照上傳時間排序章節" title = "依照上傳時間排序章節"
setDefaultValue(false) setDefaultValue(false)
} }
screen.addPreference(mirrorPreference)
screen.addPreference(chapterCommentsPreference) screen.addPreference(chapterCommentsPreference)
screen.addPreference(sortChapterPreference) screen.addPreference(sortChapterPreference)
} }
companion object { companion object {
private val MIRROR_ENTRIES get() = arrayOf(
"https://www.dm5.cn",
"https://www.dm5.com",
)
private const val MIRROR_PREF = "mirror"
private const val CHAPTER_COMMENTS_PREF = "chapterComments" private const val CHAPTER_COMMENTS_PREF = "chapterComments"
private const val SORT_CHAPTER_PREF = "sortChapter" private const val SORT_CHAPTER_PREF = "sortChapter"
private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT) private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT)