diff --git a/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt b/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt index 905d3de89..e061f7930 100644 --- a/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt +++ b/multisrc/overrides/madara/neoxscanlator/src/NeoxScanlator.kt @@ -1,9 +1,16 @@ package eu.kanade.tachiyomi.extension.pt.neoxscanlator +import android.app.Application +import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservable +import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.Page @@ -13,17 +20,21 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import rx.Observable -import java.lang.Exception +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit +import kotlin.Exception -class NeoxScanlator : Madara( - "Neox Scanlator", - "https://neoxscans.com", - "pt-BR", - SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")) -) { +class NeoxScanlator : + Madara( + "Neox Scanlator", + DEFAULT_BASE_URL, + "pt-BR", + SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")) + ), + ConfigurableSource { override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(1, TimeUnit.MINUTES) @@ -35,6 +46,14 @@ class NeoxScanlator : Madara( override val altName = "Nome alternativo: " + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + override val baseUrl: String by lazy { + preferences.getString(BASE_URL_PREF_KEY, DEFAULT_BASE_URL)!! + } + override fun headersBuilder(): Headers.Builder = super.headersBuilder() .add("Accept", ACCEPT) .add("Accept-Language", ACCEPT_LANGUAGE) @@ -79,6 +98,32 @@ class NeoxScanlator : Madara( // Only status and order by filter work. override fun getFilterList(): FilterList = FilterList(super.getFilterList().slice(3..4)) + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val baseUrlPref = EditTextPreference(screen.context).apply { + key = BASE_URL_PREF_KEY + title = BASE_URL_PREF_TITLE + summary = BASE_URL_PREF_SUMMARY + setDefaultValue(DEFAULT_BASE_URL) + dialogTitle = BASE_URL_PREF_TITLE + dialogMessage = "Padrão: $DEFAULT_BASE_URL" + + setOnPreferenceChangeListener { _, newValue -> + try { + val res = preferences.edit() + .putString(BASE_URL_PREF_KEY, newValue as String) + .commit() + Toast.makeText(screen.context, RESTART_TACHIYOMI, Toast.LENGTH_LONG).show() + res + } catch (e: Exception) { + e.printStackTrace() + false + } + } + } + + screen.addPreference(baseUrlPref) + } + companion object { private const val MIGRATION_MESSAGE = "O URL deste mangá mudou. " + "Faça a migração do Neox para o Neox para atualizar a URL." @@ -89,6 +134,14 @@ class NeoxScanlator : Madara( private const val ACCEPT_LANGUAGE = "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7,es;q=0.6,gl;q=0.5" private const val REFERER = "https://google.com/" + private const val DEFAULT_BASE_URL = "https://neoxscans.com" + private const val BASE_URL_PREF_KEY = "base_url_${BuildConfig.VERSION_NAME}" + private const val BASE_URL_PREF_TITLE = "URL da fonte" + private const val BASE_URL_PREF_SUMMARY = "Para uso temporário. Quando você atualizar a " + + "extensão, esta configuração será apagada." + + private const val RESTART_TACHIYOMI = "Reinicie o Tachiyomi para aplicar as configurações." + private val NOVEL_REGEX = "novel|livro".toRegex(RegexOption.IGNORE_CASE) } } diff --git a/multisrc/overrides/madara/neoxxxscans/src/NeoXXXScans.kt b/multisrc/overrides/madara/neoxxxscans/src/NeoXXXScans.kt index 9429cf6a7..e500be7c7 100644 --- a/multisrc/overrides/madara/neoxxxscans/src/NeoXXXScans.kt +++ b/multisrc/overrides/madara/neoxxxscans/src/NeoXXXScans.kt @@ -1,22 +1,77 @@ package eu.kanade.tachiyomi.extension.pt.neoxxxscans +import android.app.Application +import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.annotations.Nsfw import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.source.ConfigurableSource import okhttp3.OkHttpClient +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit @Nsfw -class NeoXXXScans : Madara( - "NeoXXX Scans", - "https://xxx.neoxscans.net", - "pt-BR", - SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")) -) { +class NeoXXXScans : + Madara( + "NeoXXX Scans", + DEFAULT_BASE_URL, + "pt-BR", + SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")) + ), + ConfigurableSource { override val client: OkHttpClient = super.client.newBuilder() .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) .build() + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + override val baseUrl: String by lazy { + preferences.getString(BASE_URL_PREF_KEY, DEFAULT_BASE_URL)!! + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val baseUrlPref = EditTextPreference(screen.context).apply { + key = BASE_URL_PREF_KEY + title = BASE_URL_PREF_TITLE + summary = BASE_URL_PREF_SUMMARY + setDefaultValue(DEFAULT_BASE_URL) + dialogTitle = BASE_URL_PREF_TITLE + dialogMessage = "Padrão: $DEFAULT_BASE_URL" + + setOnPreferenceChangeListener { _, newValue -> + try { + val res = preferences.edit() + .putString(BASE_URL_PREF_KEY, newValue as String) + .commit() + Toast.makeText(screen.context, RESTART_TACHIYOMI, Toast.LENGTH_LONG).show() + res + } catch (e: Exception) { + e.printStackTrace() + false + } + } + } + + screen.addPreference(baseUrlPref) + } + + companion object { + private const val DEFAULT_BASE_URL = "https://xxx.neoxscans.com" + private const val BASE_URL_PREF_KEY = "base_url_${BuildConfig.VERSION_NAME}" + private const val BASE_URL_PREF_TITLE = "URL da fonte" + private const val BASE_URL_PREF_SUMMARY = "Para uso temporário. Quando você atualizar a " + + "extensão, esta configuração será apagada." + + private const val RESTART_TACHIYOMI = "Reinicie o Tachiyomi para aplicar as configurações." + } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt index 1b7b3f007..b0f609f36 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt @@ -226,7 +226,7 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("ManyComic", "https://manycomic.com", "en", isNsfw = true, overrideVersionCode = 1), SingleLang("Mark Scans", "https://markscans.online", "pt-BR", overrideVersionCode = 2), SingleLang("MHentais", "https://mhentais.com", "pt-BR", isNsfw = true), - SingleLang("NeoXXX Scans", "https://xxx.neoxscans.net", "pt-BR", isNsfw = true, overrideVersionCode = 1), + SingleLang("NeoXXX Scans", "https://xxx.neoxscans.com", "pt-BR", isNsfw = true, overrideVersionCode = 2), SingleLang("Midnight Mess Scans", "https://midnightmess.org", "en", isNsfw = true, overrideVersionCode = 5), SingleLang("Milftoon", "https://milftoon.xxx", "en", isNsfw = true, overrideVersionCode = 2), SingleLang("Mixed Manga", "https://mixedmanga.com", "en", overrideVersionCode = 1), @@ -238,7 +238,7 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 1), SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 1), SingleLang("NekoBreaker Scan", "https://nekobreakerscan.com", "pt-BR"), - SingleLang("Neox Scanlator", "https://neoxscans.com", "pt-BR", overrideVersionCode = 6), + SingleLang("Neox Scanlator", "https://neoxscans.com", "pt-BR", overrideVersionCode = 7), SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1), SingleLang("Niji Translations", "https://niji-translations.com", "ar"), SingleLang("Ninjavi", "https://ninjavi.com", "ar", overrideVersionCode = 1),