e-hentai: favorite filtering and manual igneous cookie setting (#7098)
* feat: igneous header override * feat: favorites filter * chore: simple code clean * chore: version bump * feat: force e-hentai setting * fix: requested changes * fix: force default to true
This commit is contained in:
parent
d470490087
commit
5ac0b9b5f6
src/all/ehentai
@ -1,7 +1,7 @@
|
||||
ext {
|
||||
extName = 'E-Hentai'
|
||||
extClass = '.EHFactory'
|
||||
extVersionCode = 23
|
||||
extVersionCode = 24
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
|
@ -48,11 +48,13 @@ abstract class EHentai(
|
||||
private val webViewCookieManager: CookieManager by lazy { CookieManager.getInstance() }
|
||||
private val memberId: String by lazy { getMemberIdPref() }
|
||||
private val passHash: String by lazy { getPassHashPref() }
|
||||
private val igneous: String by lazy { getIgneousPref() }
|
||||
private val forceEh: Boolean by lazy { getForceEhPref() }
|
||||
|
||||
override val baseUrl: String
|
||||
get() = when {
|
||||
System.getenv("CI") == "true" -> "https://e-hentai.org"
|
||||
memberId.isNotEmpty() && passHash.isNotEmpty() -> "https://exhentai.org"
|
||||
!forceEh && memberId.isNotEmpty() && passHash.isNotEmpty() -> "https://exhentai.org"
|
||||
else -> "https://e-hentai.org"
|
||||
}
|
||||
|
||||
@ -170,18 +172,18 @@ abstract class EHentai(
|
||||
query.isBlank() -> languageTag(enforceLanguageFilter)
|
||||
else -> languageTag(enforceLanguageFilter).let { if (it.isNotEmpty()) "$query,$it" else query }
|
||||
}
|
||||
filters.filterIsInstance<TextFilter>().forEach { it ->
|
||||
if (it.state.isNotEmpty()) {
|
||||
val splitted = it.state.split(",").filter(String::isNotBlank)
|
||||
if (splitted.size < 2 && it.type != "tags") {
|
||||
modifiedQuery += " ${it.type}:\"${it.state.replace(" ", "+")}\""
|
||||
filters.filterIsInstance<TextFilter>().forEach { filter ->
|
||||
if (filter.state.isNotEmpty()) {
|
||||
val splitted = filter.state.split(",").filter(String::isNotBlank)
|
||||
if (splitted.size < 2 && filter.type != "tags") {
|
||||
modifiedQuery += " ${filter.type}:\"${filter.state.replace(" ", "+")}\""
|
||||
} else {
|
||||
splitted.forEach { tag ->
|
||||
val trimmed = tag.trim().lowercase()
|
||||
if (trimmed.startsWith('-')) {
|
||||
modifiedQuery += " -${it.type}:\"${trimmed.removePrefix("-").replace(" ", "+")}\""
|
||||
modifiedQuery += if (trimmed.startsWith('-')) {
|
||||
" -${filter.type}:\"${trimmed.removePrefix("-").replace(" ", "+")}\""
|
||||
} else {
|
||||
modifiedQuery += " ${it.type}:\"${trimmed.replace(" ", "+")}\""
|
||||
" ${filter.type}:\"${trimmed.replace(" ", "+")}\""
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -378,7 +380,7 @@ abstract class EHentai(
|
||||
|
||||
cookies["ipb_pass_hash"] = passHash
|
||||
|
||||
cookies["igneous"] = ""
|
||||
cookies["igneous"] = igneous
|
||||
|
||||
buildCookies(cookies)
|
||||
}
|
||||
@ -414,6 +416,7 @@ abstract class EHentai(
|
||||
// Filters
|
||||
override fun getFilterList() = FilterList(
|
||||
EnforceLanguageFilter(getEnforceLanguagePref()),
|
||||
Favorites(),
|
||||
Watched(),
|
||||
GenreGroup(),
|
||||
Filter.Header("Separate tags with commas (,)"),
|
||||
@ -435,6 +438,14 @@ abstract class EHentai(
|
||||
}
|
||||
}
|
||||
|
||||
class Favorites : CheckBox("Favorites"), UriFilter {
|
||||
override fun addToUri(builder: Uri.Builder) {
|
||||
if (state) {
|
||||
builder.appendPath("favorites.php")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class GenreOption(name: String, private val genreId: String) : CheckBox(name, false), UriFilter {
|
||||
override fun addToUri(builder: Uri.Builder) {
|
||||
builder.appendQueryParameter("f_$genreId", if (state) "1" else "0")
|
||||
@ -561,21 +572,33 @@ abstract class EHentai(
|
||||
private const val PASS_HASH_PREF_TITLE = "ipb_pass_hash"
|
||||
private const val PASS_HASH_PREF_SUMMARY = "ipb_pass_hash value"
|
||||
private const val PASS_HASH_PREF_DEFAULT_VALUE = ""
|
||||
|
||||
private const val IGNEOUS_PREF_KEY = "IGNEOUS"
|
||||
private const val IGNEOUS_PREF_TITLE = "igneous"
|
||||
private const val IGNEOUS_PREF_SUMMARY = "igneous value override"
|
||||
private const val IGNEOUS_PREF_DEFAULT_VALUE = ""
|
||||
|
||||
private const val FORCE_EH = "FORCE_EH"
|
||||
private const val FORCE_EH_TITLE = "Force e-hentai"
|
||||
private const val FORCE_EH_SUMMARY = "Force e-hentai to avoid content on exhentai"
|
||||
private const val FORCE_EH_DEFAULT_VALUE = true
|
||||
}
|
||||
|
||||
// Preferences
|
||||
|
||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||
val forceEhPref = CheckBoxPreference(screen.context).apply {
|
||||
key = FORCE_EH
|
||||
title = FORCE_EH_TITLE
|
||||
summary = FORCE_EH_SUMMARY
|
||||
setDefaultValue(FORCE_EH_DEFAULT_VALUE)
|
||||
}
|
||||
|
||||
val enforceLanguagePref = CheckBoxPreference(screen.context).apply {
|
||||
key = "${ENFORCE_LANGUAGE_PREF_KEY}_$lang"
|
||||
title = ENFORCE_LANGUAGE_PREF_TITLE
|
||||
summary = ENFORCE_LANGUAGE_PREF_SUMMARY
|
||||
setDefaultValue(ENFORCE_LANGUAGE_PREF_DEFAULT_VALUE)
|
||||
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val checkValue = newValue as Boolean
|
||||
preferences.edit().putBoolean("${ENFORCE_LANGUAGE_PREF_KEY}_$lang", checkValue).commit()
|
||||
}
|
||||
}
|
||||
|
||||
val memberIdPref = EditTextPreference(screen.context).apply {
|
||||
@ -593,8 +616,19 @@ abstract class EHentai(
|
||||
|
||||
setDefaultValue(PASS_HASH_PREF_DEFAULT_VALUE)
|
||||
}
|
||||
|
||||
val igneousPref = EditTextPreference(screen.context).apply {
|
||||
key = IGNEOUS_PREF_KEY
|
||||
title = IGNEOUS_PREF_TITLE
|
||||
summary = IGNEOUS_PREF_SUMMARY
|
||||
|
||||
setDefaultValue(IGNEOUS_PREF_DEFAULT_VALUE)
|
||||
}
|
||||
|
||||
screen.addPreference(forceEhPref)
|
||||
screen.addPreference(memberIdPref)
|
||||
screen.addPreference(passHashPref)
|
||||
screen.addPreference(igneousPref)
|
||||
screen.addPreference(enforceLanguagePref)
|
||||
}
|
||||
|
||||
@ -629,4 +663,12 @@ abstract class EHentai(
|
||||
private fun getMemberIdPref(): String {
|
||||
return getCookieValue(MEMBER_ID_PREF_TITLE, MEMBER_ID_PREF_DEFAULT_VALUE, MEMBER_ID_PREF_KEY)
|
||||
}
|
||||
|
||||
private fun getIgneousPref(): String {
|
||||
return getCookieValue(IGNEOUS_PREF_TITLE, IGNEOUS_PREF_DEFAULT_VALUE, IGNEOUS_PREF_KEY)
|
||||
}
|
||||
|
||||
private fun getForceEhPref(): Boolean {
|
||||
return preferences.getBoolean(FORCE_EH, FORCE_EH_DEFAULT_VALUE)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user