diff --git a/app/build.gradle b/app/build.gradle index 0295a8ff9..b0f0158e1 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -42,7 +42,7 @@ android { minSdkVersion AndroidConfig.minSdk targetSdkVersion AndroidConfig.targetSdk testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - versionCode 5 + versionCode 6 versionName "1.1.1" buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\"" diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index 865058dc7..bf83f80f6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -22,8 +22,6 @@ import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID import exh.MERGED_SOURCE_ID import exh.NHENTAI_SOURCE_ID -import exh.PERV_EDEN_EN_SOURCE_ID -import exh.PERV_EDEN_IT_SOURCE_ID import exh.source.BlacklistedSources import kotlinx.coroutines.async import rx.Observable @@ -81,8 +79,6 @@ class ExtensionManager( return when (source.id) { EH_SOURCE_ID -> context.getDrawable(R.mipmap.ic_ehentai_source) EXH_SOURCE_ID -> context.getDrawable(R.mipmap.ic_ehentai_source) - PERV_EDEN_EN_SOURCE_ID -> context.getDrawable(R.mipmap.ic_perveden_source) - PERV_EDEN_IT_SOURCE_ID -> context.getDrawable(R.mipmap.ic_perveden_source) NHENTAI_SOURCE_ID -> context.getDrawable(R.mipmap.ic_nhentai_source) MERGED_SOURCE_ID -> context.getDrawable(R.mipmap.ic_merged_source) else -> null diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt index 1e9ae36b7..0dbf8c35e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt @@ -20,10 +20,14 @@ import eu.kanade.tachiyomi.source.online.english.HentaiCafe import eu.kanade.tachiyomi.source.online.english.Pururin import eu.kanade.tachiyomi.source.online.english.Tsumino import exh.EH_SOURCE_ID +import exh.EIGHTMUSES_SOURCE_ID import exh.EXH_SOURCE_ID +import exh.HBROWSE_SOURCE_ID +import exh.HENTAI_CAFE_SOURCE_ID import exh.PERV_EDEN_EN_SOURCE_ID import exh.PERV_EDEN_IT_SOURCE_ID -import exh.metadata.metadata.PervEdenLang +import exh.PURURIN_SOURCE_ID +import exh.TSUMINO_SOURCE_ID import exh.source.BlacklistedSources import exh.source.DelegatedHttpSource import exh.source.EnhancedHttpSource @@ -136,8 +140,6 @@ open class SourceManager(private val context: Context) { if (prefs.enableExhentai().get()) { exSrcs += EHentai(EXH_SOURCE_ID, true, context) } - exSrcs += PervEden(PERV_EDEN_EN_SOURCE_ID, PervEdenLang.en, context) - exSrcs += PervEden(PERV_EDEN_IT_SOURCE_ID, PervEdenLang.it, context) exSrcs += NHentai(context) return exSrcs } @@ -175,19 +177,19 @@ open class SourceManager(private val context: Context) { val DELEGATED_SOURCES = listOf( DelegatedSource( "Hentai Cafe", - 260868874183818481, + HENTAI_CAFE_SOURCE_ID, "eu.kanade.tachiyomi.extension.all.foolslide.HentaiCafe", HentaiCafe::class ), DelegatedSource( "Pururin", - 2221515250486218861, + PURURIN_SOURCE_ID, "eu.kanade.tachiyomi.extension.en.pururin.Pururin", Pururin::class ), DelegatedSource( "Tsumino", - 6707338697138388238, + TSUMINO_SOURCE_ID, "eu.kanade.tachiyomi.extension.en.tsumino.Tsumino", Tsumino::class )/*, @@ -200,13 +202,13 @@ open class SourceManager(private val context: Context) { )*/, DelegatedSource( "HBrowse", - 1401584337232758222, + HBROWSE_SOURCE_ID, "eu.kanade.tachiyomi.extension.en.hbrowse.HBrowse", HBrowse::class ), DelegatedSource( "8Muses", - 1802675169972965535, + EIGHTMUSES_SOURCE_ID, "eu.kanade.tachiyomi.extension.all.eromuse.EroMuse", EightMuses::class ), @@ -216,6 +218,18 @@ open class SourceManager(private val context: Context) { "eu.kanade.tachiyomi.extension.all.hitomi.Hitomi", Hitomi::class, true + ), + DelegatedSource( + "PervEden English", + PERV_EDEN_EN_SOURCE_ID, + "eu.kanade.tachiyomi.extension.en.perveden.Perveden", + PervEden::class + ), + DelegatedSource( + "PervEden Italian", + PERV_EDEN_IT_SOURCE_ID, + "eu.kanade.tachiyomi.extension.it.perveden.Perveden", + PervEden::class ) ).associateBy { it.originalSourceQualifiedClassName } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt old mode 100755 new mode 100644 index 92fb5b918..faec89b36 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt @@ -2,155 +2,47 @@ package eu.kanade.tachiyomi.source.online.all import android.content.Context import android.net.Uri -import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.LewdSource -import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.UrlImportableSource import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.util.asJsoup -import eu.kanade.tachiyomi.util.chapter.ChapterRecognition -import exh.metadata.metadata.PervEdenLang import exh.metadata.metadata.PervEdenSearchMetadata -import exh.metadata.metadata.PervEdenSearchMetadata.Companion.TAG_TYPE_DEFAULT -import exh.metadata.metadata.base.RaisedSearchMetadata.Companion.TAG_TYPE_VIRTUAL +import exh.metadata.metadata.base.RaisedSearchMetadata import exh.metadata.metadata.base.RaisedTag +import exh.source.DelegatedHttpSource import exh.ui.metadata.adapters.PervEdenDescriptionAdapter -import exh.util.UriFilter -import exh.util.UriGroup import exh.util.urlImportFetchSearchManga -import java.text.SimpleDateFormat -import java.util.Locale -import java.util.TimeZone -import okhttp3.Request -import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.jsoup.nodes.TextNode import rx.Observable -// TODO Transform into delegated source -class PervEden(override val id: Long, val pvLang: PervEdenLang, val context: Context) : - ParsedHttpSource(), +class PervEden(delegate: HttpSource, val context: Context) : + DelegatedHttpSource(delegate), LewdSource, UrlImportableSource { - /** - * The class of the metadata used by this source - */ override val metaClass = PervEdenSearchMetadata::class - - override val supportsLatest = true - override val name = "Perv Eden" - override val baseUrl = "http://www.perveden.com" - override val lang = pvLang.name - - override fun popularMangaSelector() = "#topManga > ul > li" - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - manga.thumbnail_url = "http:" + element.select(".hottestImage > img").attr("data-src") - - val titleElement = element.getElementsByClass("hottestInfo").first().child(0) - manga.url = titleElement.attr("href") - manga.title = titleElement.text() - - return manga - } - - override fun popularMangaNextPageSelector(): String? = null + override val lang = delegate.lang // Support direct URL importing - override fun fetchSearchManga(page: Int, query: String, filters: FilterList) = + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable = urlImportFetchSearchManga(context, query) { super.fetchSearchManga(page, query, filters) } - override fun searchMangaSelector() = "#mangaList > tbody > tr" - - override fun searchMangaFromElement(element: Element): SManga { - val manga = SManga.create() - val titleElement = element.child(0).child(0) - manga.url = titleElement.attr("href") - manga.title = titleElement.text().trim() - return manga - } - - override fun searchMangaNextPageSelector() = ".next" - - override fun popularMangaRequest(page: Int): Request { - val urlLang = if (lang == "en") { - "eng" - } else { - "it" - } - return GET("$baseUrl/$urlLang/") - } - - override fun latestUpdatesSelector() = ".newsManga" - - override fun latestUpdatesFromElement(element: Element): SManga { - val manga = SManga.create() - val header = element.getElementsByClass("manga_tooltop_header").first() - val titleElement = header.child(0) - manga.url = titleElement.attr("href") - manga.title = titleElement.text().trim() - manga.thumbnail_url = "https:" + header.parent().selectFirst(".mangaImage img").attr("tmpsrc") - return manga - } - - override fun latestUpdatesParse(response: Response): MangasPage { - val document = response.asJsoup() - - val mangas = document.select(latestUpdatesSelector()).map { element -> - latestUpdatesFromElement(element) - } - - return MangasPage(mangas, mangas.isNotEmpty()) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val uri = Uri.parse("$baseUrl/$lang/$lang-directory/").buildUpon() - uri.appendQueryParameter("page", page.toString()) - uri.appendQueryParameter("title", query) - filters.forEach { - if (it is UriFilter) it.addToUri(uri) - } - return GET(uri.toString()) - } - - override fun latestUpdatesNextPageSelector(): String? { - throw NotImplementedError("Unused method called!") - } - - /** - * Returns an observable with the updated details for a manga. Normally it's not needed to - * override this method. - * - * @param manga the manga to be updated. - */ override fun fetchMangaDetails(manga: SManga): Observable { return client.newCall(mangaDetailsRequest(manga)) .asObservableSuccess() .flatMap { - parseToManga(manga, it.asJsoup()).andThen( - Observable.just( - manga.apply { - initialized = true - } - ) - ) + parseToManga(manga, it.asJsoup()).andThen(Observable.just(manga)) } } - /** - * Parse the supplied input into the supplied metadata object - */ override fun parseIntoMetadata(metadata: PervEdenSearchMetadata, input: Document) { with(metadata) { url = Uri.parse(input.location()).path @@ -184,12 +76,18 @@ class PervEden(override val id: Long, val pvLang: PervEdenLang, val context: Con "Artist" -> { if (it is Element && it.tagName() == "a") { artist = it.text() - tags += RaisedTag("artist", it.text().toLowerCase(), TAG_TYPE_VIRTUAL) + tags += RaisedTag( + "artist", it.text().toLowerCase(), + RaisedSearchMetadata.TAG_TYPE_VIRTUAL + ) } } "Genres" -> { if (it is Element && it.tagName() == "a") { - tags += RaisedTag(null, it.text().toLowerCase(), TAG_TYPE_DEFAULT) + tags += RaisedTag( + null, it.text().toLowerCase(), + PervEdenSearchMetadata.TAG_TYPE_DEFAULT + ) } } "Type" -> { @@ -218,137 +116,13 @@ class PervEden(override val id: Long, val pvLang: PervEdenLang, val context: Con } } - override fun mangaDetailsParse(document: Document): SManga = throw UnsupportedOperationException() - - override fun latestUpdatesRequest(page: Int): Request { - val num = when (lang) { - "en" -> "0" - "it" -> "1" - else -> throw NotImplementedError("Unimplemented language!") - } - - return GET("$baseUrl/ajax/news/$page/$num/0/") - } - - override fun chapterListSelector() = "#leftContent > table > tbody > tr" - - override fun chapterFromElement(element: Element) = SChapter.create().apply { - val linkElement = element.getElementsByClass("chapterLink").first() - - setUrlWithoutDomain(linkElement.attr("href")) - name = "Chapter " + linkElement.getElementsByTag("b").text() - - ChapterRecognition.parseChapterNumber( - this, - SManga.create().apply { - title = "" - } - ) - - try { - date_upload = DATE_FORMAT.parse(element.getElementsByClass("chapterDate").first().text().trim())!!.time - } catch (ignored: Exception) { - } - } - - override fun pageListParse(document: Document) = document.getElementById("pageSelect").getElementsByTag("option").map { - Page(it.attr("data-page").toInt() - 1, baseUrl + it.attr("value")) - } - - override fun imageUrlParse(document: Document) = "http:" + document.getElementById("mainImg").attr("src")!! - - override fun getFilterList() = FilterList( - AuthorFilter(), - ArtistFilter(), - TypeFilterGroup(), - ReleaseYearGroup(), - StatusFilterGroup() - ) - - class StatusFilterGroup : UriGroup( - "Status", - listOf( - StatusFilter("Ongoing", 1), - StatusFilter("Completed", 2), - StatusFilter("Suspended", 0) - ) - ) - - class StatusFilter(n: String, val id: Int) : Filter.CheckBox(n, false), UriFilter { - override fun addToUri(builder: Uri.Builder) { - if (state) { - builder.appendQueryParameter("status", id.toString()) - } - } - } - - // Explicit type arg for listOf() to workaround this: KT-16570 - class ReleaseYearGroup : UriGroup>( - "Release Year", - listOf( - ReleaseYearRangeFilter(), - ReleaseYearYearFilter() - ) - ) - - class ReleaseYearRangeFilter : - Filter.Select( - "Range", - arrayOf( - "on", - "after", - "before" - ) - ), - UriFilter { - override fun addToUri(builder: Uri.Builder) { - builder.appendQueryParameter("releasedType", state.toString()) - } - } - - class ReleaseYearYearFilter : Filter.Text("Year"), UriFilter { - override fun addToUri(builder: Uri.Builder) { - builder.appendQueryParameter("released", state) - } - } - - class AuthorFilter : Filter.Text("Author"), UriFilter { - override fun addToUri(builder: Uri.Builder) { - builder.appendQueryParameter("author", state) - } - } - - class ArtistFilter : Filter.Text("Artist"), UriFilter { - override fun addToUri(builder: Uri.Builder) { - builder.appendQueryParameter("artist", state) - } - } - - class TypeFilterGroup : UriGroup( - "Type", - listOf( - TypeFilter("Japanese Manga", 0), - TypeFilter("Korean Manhwa", 1), - TypeFilter("Chinese Manhua", 2), - TypeFilter("Comic", 3), - TypeFilter("Doujinshi", 4) - ) - ) - - class TypeFilter(n: String, val id: Int) : Filter.CheckBox(n, false), UriFilter { - override fun addToUri(builder: Uri.Builder) { - if (state) { - builder.appendQueryParameter("type", id.toString()) - } - } - } - override val matchingHosts = listOf("www.perveden.com") override fun matchesUri(uri: Uri): Boolean { - return super.matchesUri(uri) && uri.pathSegments.firstOrNull()?.toLowerCase() == when (pvLang) { - PervEdenLang.en -> "en-manga" - PervEdenLang.it -> "it-manga" + return super.matchesUri(uri) && uri.pathSegments.firstOrNull()?.toLowerCase() == when (lang) { + "en" -> "en-manga" + "it" -> "it-manga" + else -> false } } @@ -363,10 +137,4 @@ class PervEden(override val id: Long, val pvLang: PervEdenLang, val context: Con override fun getDescriptionAdapter(controller: MangaController): PervEdenDescriptionAdapter { return PervEdenDescriptionAdapter(controller) } - - companion object { - val DATE_FORMAT = SimpleDateFormat("MMM d, yyyy", Locale.US).apply { - timeZone = TimeZone.getTimeZone("GMT") - } - } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 7dd4061a7..05eae9594 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -45,8 +45,6 @@ import exh.EH_SOURCE_ID import exh.EXHMigrations import exh.EXH_SOURCE_ID import exh.NHENTAI_SOURCE_ID -import exh.PERV_EDEN_EN_SOURCE_ID -import exh.PERV_EDEN_IT_SOURCE_ID import exh.eh.EHentaiUpdateWorker import exh.source.BlacklistedSources import exh.uconfig.WarnConfigureDialogController @@ -211,12 +209,6 @@ class MainActivity : BaseActivity() { if (EXH_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { BlacklistedSources.HIDDEN_SOURCES += EXH_SOURCE_ID } - if (PERV_EDEN_EN_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { - BlacklistedSources.HIDDEN_SOURCES += PERV_EDEN_EN_SOURCE_ID - } - if (PERV_EDEN_IT_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { - BlacklistedSources.HIDDEN_SOURCES += PERV_EDEN_IT_SOURCE_ID - } if (NHENTAI_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { BlacklistedSources.HIDDEN_SOURCES += NHENTAI_SOURCE_ID } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index 08b7ab3be..8d62d4b42 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -39,8 +39,6 @@ import eu.kanade.tachiyomi.util.system.toast import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID import exh.NHENTAI_SOURCE_ID -import exh.PERV_EDEN_EN_SOURCE_ID -import exh.PERV_EDEN_IT_SOURCE_ID import exh.debug.SettingsDebugController import exh.log.EHLogLevel import exh.source.BlacklistedSources @@ -179,12 +177,6 @@ class SettingsAdvancedController : SettingsController() { if (EXH_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { BlacklistedSources.HIDDEN_SOURCES += EXH_SOURCE_ID } - if (PERV_EDEN_EN_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { - BlacklistedSources.HIDDEN_SOURCES += PERV_EDEN_EN_SOURCE_ID - } - if (PERV_EDEN_IT_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { - BlacklistedSources.HIDDEN_SOURCES += PERV_EDEN_IT_SOURCE_ID - } if (NHENTAI_SOURCE_ID !in BlacklistedSources.HIDDEN_SOURCES) { BlacklistedSources.HIDDEN_SOURCES += NHENTAI_SOURCE_ID } @@ -195,12 +187,6 @@ class SettingsAdvancedController : SettingsController() { if (EXH_SOURCE_ID in BlacklistedSources.HIDDEN_SOURCES) { BlacklistedSources.HIDDEN_SOURCES -= EXH_SOURCE_ID } - if (PERV_EDEN_EN_SOURCE_ID in BlacklistedSources.HIDDEN_SOURCES) { - BlacklistedSources.HIDDEN_SOURCES -= PERV_EDEN_EN_SOURCE_ID - } - if (PERV_EDEN_IT_SOURCE_ID in BlacklistedSources.HIDDEN_SOURCES) { - BlacklistedSources.HIDDEN_SOURCES -= PERV_EDEN_IT_SOURCE_ID - } if (NHENTAI_SOURCE_ID in BlacklistedSources.HIDDEN_SOURCES) { BlacklistedSources.HIDDEN_SOURCES -= NHENTAI_SOURCE_ID } diff --git a/app/src/main/java/exh/EHSourceHelpers.kt b/app/src/main/java/exh/EHSourceHelpers.kt index d19377288..0a315ef3b 100755 --- a/app/src/main/java/exh/EHSourceHelpers.kt +++ b/app/src/main/java/exh/EHSourceHelpers.kt @@ -3,6 +3,7 @@ package exh import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.all.Hitomi +import eu.kanade.tachiyomi.source.online.all.PervEden import eu.kanade.tachiyomi.source.online.english.EightMuses import eu.kanade.tachiyomi.source.online.english.HBrowse import eu.kanade.tachiyomi.source.online.english.HentaiCafe @@ -17,14 +18,14 @@ import eu.kanade.tachiyomi.source.online.english.Tsumino const val LEWD_SOURCE_SERIES = 6900L const val EH_SOURCE_ID = LEWD_SOURCE_SERIES + 1 const val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2 -const val PERV_EDEN_EN_SOURCE_ID = LEWD_SOURCE_SERIES + 5 -const val PERV_EDEN_IT_SOURCE_ID = LEWD_SOURCE_SERIES + 6 +const val PERV_EDEN_EN_SOURCE_ID = 4673633799850248749 +const val PERV_EDEN_IT_SOURCE_ID = 1433898225963724122 const val NHENTAI_SOURCE_ID = LEWD_SOURCE_SERIES + 7 -val HENTAI_CAFE_SOURCE_ID = delegatedSourceId() -val PURURIN_SOURCE_ID = delegatedSourceId() -val TSUMINO_SOURCE_ID = delegatedSourceId() -val EIGHTMUSES_SOURCE_ID = delegatedSourceId() -val HBROWSE_SOURCE_ID = delegatedSourceId() +const val HENTAI_CAFE_SOURCE_ID = 260868874183818481 +const val PURURIN_SOURCE_ID = 2221515250486218861 +const val TSUMINO_SOURCE_ID = 6707338697138388238 +const val EIGHTMUSES_SOURCE_ID = 1802675169972965535 +const val HBROWSE_SOURCE_ID = 1401584337232758222 const val MERGED_SOURCE_ID = LEWD_SOURCE_SERIES + 69 private val DELEGATED_LEWD_SOURCES = listOf( @@ -33,17 +34,12 @@ private val DELEGATED_LEWD_SOURCES = listOf( Tsumino::class, HBrowse::class, EightMuses::class, - Hitomi::class + Hitomi::class, + PervEden::class ) private val hitomiClass = listOf(Hitomi::class) -private inline fun delegatedSourceId(): Long? { - return SourceManager.DELEGATED_SOURCES.entries.find { - it.value.newSourceClass == T::class - }?.value?.sourceId -} - // Used to speed up isLewdSource val lewdDelegatedSourceIds = SourceManager.currentDelegatedSources.filter { it.value.newSourceClass in DELEGATED_LEWD_SOURCES diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index c4ddc9102..cde426959 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -50,7 +50,6 @@ object EXHMigrations { } if (oldVersion < 4) { db.inTransaction { - // Migrate Tsumino source IDs db.lowLevel().executeSQL( RawQuery.builder() .query( @@ -103,6 +102,34 @@ object EXHMigrations { ) } } + if (oldVersion < 6) { + db.inTransaction { + db.lowLevel().executeSQL( + RawQuery.builder() + .query( + """ + UPDATE ${MangaTable.TABLE} + SET ${MangaTable.COL_SOURCE} = $PERV_EDEN_EN_SOURCE_ID + WHERE ${MangaTable.COL_SOURCE} = 6905 + """.trimIndent() + ) + .affectsTables(MangaTable.TABLE) + .build() + ) + db.lowLevel().executeSQL( + RawQuery.builder() + .query( + """ + UPDATE ${MangaTable.TABLE} + SET ${MangaTable.COL_SOURCE} = $PERV_EDEN_IT_SOURCE_ID + WHERE ${MangaTable.COL_SOURCE} = 6906 + """.trimIndent() + ) + .affectsTables(MangaTable.TABLE) + .build() + ) + } + } // if (oldVersion < 1) { } // do stuff here when releasing changed crap @@ -120,18 +147,30 @@ object EXHMigrations { } fun migrateBackupEntry(manga: MangaImpl): MangaImpl { + if (manga.source == 6905L) { + manga.source = PERV_EDEN_EN_SOURCE_ID + } + + if (manga.source == 6906L) { + manga.source = PERV_EDEN_IT_SOURCE_ID + } + // Migrate HentaiCafe source IDs if (manga.source == 6908L) { - manga.source = HENTAI_CAFE_SOURCE_ID!! + manga.source = HENTAI_CAFE_SOURCE_ID } // Migrate Tsumino source IDs if (manga.source == 6909L) { - manga.source = TSUMINO_SOURCE_ID!! + manga.source = TSUMINO_SOURCE_ID + } + + if (manga.source == 6910L) { + manga.source = Hitomi.otherId } if (manga.source == 6912L) { - manga.source = HBROWSE_SOURCE_ID!! + manga.source = HBROWSE_SOURCE_ID } // Migrate nhentai URLs @@ -144,16 +183,6 @@ object EXHMigrations { manga.source = NHENTAI_SOURCE_ID } - // Allow importing of English PervEden extension backups - if (manga.source in BlacklistedSources.PERVEDEN_EN_EXT_SOURCES) { - manga.source = PERV_EDEN_EN_SOURCE_ID - } - - // Allow importing of Italian PervEden extension backups - if (manga.source in BlacklistedSources.PERVEDEN_IT_EXT_SOURCES) { - manga.source = PERV_EDEN_IT_SOURCE_ID - } - // Allow importing of EHentai extension backups if (manga.source in BlacklistedSources.EHENTAI_EXT_SOURCES) { manga.source = EH_SOURCE_ID diff --git a/app/src/main/java/exh/metadata/metadata/PervEdenSearchMetadata.kt b/app/src/main/java/exh/metadata/metadata/PervEdenSearchMetadata.kt index 7dc11d3be..fab068824 100644 --- a/app/src/main/java/exh/metadata/metadata/PervEdenSearchMetadata.kt +++ b/app/src/main/java/exh/metadata/metadata/PervEdenSearchMetadata.kt @@ -4,8 +4,6 @@ import android.content.Context import android.net.Uri import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.source.model.SManga -import exh.PERV_EDEN_EN_SOURCE_ID -import exh.PERV_EDEN_IT_SOURCE_ID import exh.metadata.metadata.base.RaisedSearchMetadata import exh.metadata.metadata.base.RaisedTitle @@ -122,18 +120,6 @@ class PervEdenSearchMetadata : RaisedSearchMetadata() { Uri.parse(it).pathSegments.filterNot(String::isNullOrBlank) } - fun pvIdFromUrl(url: String) = splitGalleryUrl(url).last() - } -} - -enum class PervEdenLang(val id: Long) { - // DO NOT RENAME THESE TO CAPITAL LETTERS! The enum names are used to build URLs - en(PERV_EDEN_EN_SOURCE_ID), - it(PERV_EDEN_IT_SOURCE_ID); - - companion object { - fun source(id: Long) = - values().find { it.id == id } - ?: throw IllegalArgumentException("Unknown source ID: $id!") + fun pvIdFromUrl(url: String): String = splitGalleryUrl(url).last() } } diff --git a/app/src/main/java/exh/source/BlacklistedSources.kt b/app/src/main/java/exh/source/BlacklistedSources.kt index be742f672..08566591b 100644 --- a/app/src/main/java/exh/source/BlacklistedSources.kt +++ b/app/src/main/java/exh/source/BlacklistedSources.kt @@ -8,8 +8,6 @@ object BlacklistedSources { 4726175775739752699, 2203215402871965477 ) - val PERVEDEN_EN_EXT_SOURCES = listOf(4673633799850248749) - val PERVEDEN_IT_EXT_SOURCES = listOf(1433898225963724122) val EHENTAI_EXT_SOURCES = listOf( 8100626124886895451, 57122881048805941, @@ -31,15 +29,11 @@ object BlacklistedSources { ) val BLACKLISTED_EXT_SOURCES = NHENTAI_EXT_SOURCES + - PERVEDEN_EN_EXT_SOURCES + - PERVEDEN_IT_EXT_SOURCES + EHENTAI_EXT_SOURCES val BLACKLISTED_EXTENSIONS = listOf( "eu.kanade.tachiyomi.extension.all.ehentai", - "eu.kanade.tachiyomi.extension.all.nhentai", - "eu.kanade.tachiyomi.extension.en.perveden", - "eu.kanade.tachiyomi.extension.it.perveden" + "eu.kanade.tachiyomi.extension.all.nhentai" ) var HIDDEN_SOURCES = listOf(