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
@ -1,7 +1,7 @@
|
|||||||
ext {
|
ext {
|
||||||
extName = 'E-Hentai'
|
extName = 'E-Hentai'
|
||||||
extClass = '.EHFactory'
|
extClass = '.EHFactory'
|
||||||
extVersionCode = 23
|
extVersionCode = 24
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,11 +48,13 @@ abstract class EHentai(
|
|||||||
private val webViewCookieManager: CookieManager by lazy { CookieManager.getInstance() }
|
private val webViewCookieManager: CookieManager by lazy { CookieManager.getInstance() }
|
||||||
private val memberId: String by lazy { getMemberIdPref() }
|
private val memberId: String by lazy { getMemberIdPref() }
|
||||||
private val passHash: String by lazy { getPassHashPref() }
|
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
|
override val baseUrl: String
|
||||||
get() = when {
|
get() = when {
|
||||||
System.getenv("CI") == "true" -> "https://e-hentai.org"
|
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"
|
else -> "https://e-hentai.org"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,18 +172,18 @@ abstract class EHentai(
|
|||||||
query.isBlank() -> languageTag(enforceLanguageFilter)
|
query.isBlank() -> languageTag(enforceLanguageFilter)
|
||||||
else -> languageTag(enforceLanguageFilter).let { if (it.isNotEmpty()) "$query,$it" else query }
|
else -> languageTag(enforceLanguageFilter).let { if (it.isNotEmpty()) "$query,$it" else query }
|
||||||
}
|
}
|
||||||
filters.filterIsInstance<TextFilter>().forEach { it ->
|
filters.filterIsInstance<TextFilter>().forEach { filter ->
|
||||||
if (it.state.isNotEmpty()) {
|
if (filter.state.isNotEmpty()) {
|
||||||
val splitted = it.state.split(",").filter(String::isNotBlank)
|
val splitted = filter.state.split(",").filter(String::isNotBlank)
|
||||||
if (splitted.size < 2 && it.type != "tags") {
|
if (splitted.size < 2 && filter.type != "tags") {
|
||||||
modifiedQuery += " ${it.type}:\"${it.state.replace(" ", "+")}\""
|
modifiedQuery += " ${filter.type}:\"${filter.state.replace(" ", "+")}\""
|
||||||
} else {
|
} else {
|
||||||
splitted.forEach { tag ->
|
splitted.forEach { tag ->
|
||||||
val trimmed = tag.trim().lowercase()
|
val trimmed = tag.trim().lowercase()
|
||||||
if (trimmed.startsWith('-')) {
|
modifiedQuery += if (trimmed.startsWith('-')) {
|
||||||
modifiedQuery += " -${it.type}:\"${trimmed.removePrefix("-").replace(" ", "+")}\""
|
" -${filter.type}:\"${trimmed.removePrefix("-").replace(" ", "+")}\""
|
||||||
} else {
|
} else {
|
||||||
modifiedQuery += " ${it.type}:\"${trimmed.replace(" ", "+")}\""
|
" ${filter.type}:\"${trimmed.replace(" ", "+")}\""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -378,7 +380,7 @@ abstract class EHentai(
|
|||||||
|
|
||||||
cookies["ipb_pass_hash"] = passHash
|
cookies["ipb_pass_hash"] = passHash
|
||||||
|
|
||||||
cookies["igneous"] = ""
|
cookies["igneous"] = igneous
|
||||||
|
|
||||||
buildCookies(cookies)
|
buildCookies(cookies)
|
||||||
}
|
}
|
||||||
@ -414,6 +416,7 @@ abstract class EHentai(
|
|||||||
// Filters
|
// Filters
|
||||||
override fun getFilterList() = FilterList(
|
override fun getFilterList() = FilterList(
|
||||||
EnforceLanguageFilter(getEnforceLanguagePref()),
|
EnforceLanguageFilter(getEnforceLanguagePref()),
|
||||||
|
Favorites(),
|
||||||
Watched(),
|
Watched(),
|
||||||
GenreGroup(),
|
GenreGroup(),
|
||||||
Filter.Header("Separate tags with commas (,)"),
|
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 {
|
class GenreOption(name: String, private val genreId: String) : CheckBox(name, false), UriFilter {
|
||||||
override fun addToUri(builder: Uri.Builder) {
|
override fun addToUri(builder: Uri.Builder) {
|
||||||
builder.appendQueryParameter("f_$genreId", if (state) "1" else "0")
|
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_TITLE = "ipb_pass_hash"
|
||||||
private const val PASS_HASH_PREF_SUMMARY = "ipb_pass_hash value"
|
private const val PASS_HASH_PREF_SUMMARY = "ipb_pass_hash value"
|
||||||
private const val PASS_HASH_PREF_DEFAULT_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
|
// Preferences
|
||||||
|
|
||||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
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 {
|
val enforceLanguagePref = CheckBoxPreference(screen.context).apply {
|
||||||
key = "${ENFORCE_LANGUAGE_PREF_KEY}_$lang"
|
key = "${ENFORCE_LANGUAGE_PREF_KEY}_$lang"
|
||||||
title = ENFORCE_LANGUAGE_PREF_TITLE
|
title = ENFORCE_LANGUAGE_PREF_TITLE
|
||||||
summary = ENFORCE_LANGUAGE_PREF_SUMMARY
|
summary = ENFORCE_LANGUAGE_PREF_SUMMARY
|
||||||
setDefaultValue(ENFORCE_LANGUAGE_PREF_DEFAULT_VALUE)
|
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 {
|
val memberIdPref = EditTextPreference(screen.context).apply {
|
||||||
@ -593,8 +616,19 @@ abstract class EHentai(
|
|||||||
|
|
||||||
setDefaultValue(PASS_HASH_PREF_DEFAULT_VALUE)
|
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(memberIdPref)
|
||||||
screen.addPreference(passHashPref)
|
screen.addPreference(passHashPref)
|
||||||
|
screen.addPreference(igneousPref)
|
||||||
screen.addPreference(enforceLanguagePref)
|
screen.addPreference(enforceLanguagePref)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -629,4 +663,12 @@ abstract class EHentai(
|
|||||||
private fun getMemberIdPref(): String {
|
private fun getMemberIdPref(): String {
|
||||||
return getCookieValue(MEMBER_ID_PREF_TITLE, MEMBER_ID_PREF_DEFAULT_VALUE, MEMBER_ID_PREF_KEY)
|
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