From 84abe044a38c21b193be71105345839ee43dcd17 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 11 Mar 2021 14:48:29 -0500 Subject: [PATCH] Remove Hentai Cafe Delegation --- .../kanade/tachiyomi/source/SourceManager.kt | 8 - .../source/online/english/HentaiCafe.kt | 143 ------------------ app/src/main/java/exh/EXHMigrations.kt | 6 - .../metadata/HentaiCafeSearchMetadata.kt | 72 --------- .../metadata/base/RaisedSearchMetadata.kt | 2 - app/src/main/java/exh/source/SourceHelper.kt | 5 - .../adapters/HentaiCafeDescriptionAdapter.kt | 60 -------- .../res/layout/description_adapter_hc.xml | 27 ---- 8 files changed, 323 deletions(-) delete mode 100644 app/src/main/java/eu/kanade/tachiyomi/source/online/english/HentaiCafe.kt delete mode 100644 app/src/main/java/exh/metadata/metadata/HentaiCafeSearchMetadata.kt delete mode 100644 app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt delete mode 100644 app/src/main/res/layout/description_adapter_hc.xml 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 72a3daba7..eeb26e32f 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt @@ -15,7 +15,6 @@ import eu.kanade.tachiyomi.source.online.all.NHentai 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 import eu.kanade.tachiyomi.source.online.english.Pururin import eu.kanade.tachiyomi.source.online.english.Tsumino import exh.log.xLogD @@ -26,7 +25,6 @@ import exh.source.EIGHTMUSES_SOURCE_ID import exh.source.EXH_SOURCE_ID import exh.source.EnhancedHttpSource import exh.source.HBROWSE_SOURCE_ID -import exh.source.HENTAI_CAFE_SOURCE_ID import exh.source.PERV_EDEN_EN_SOURCE_ID import exh.source.PERV_EDEN_IT_SOURCE_ID import exh.source.PURURIN_SOURCE_ID @@ -194,12 +192,6 @@ open class SourceManager(private val context: Context) { companion object { private const val fillInSourceId = Long.MAX_VALUE val DELEGATED_SOURCES = listOf( - DelegatedSource( - "Hentai Cafe", - HENTAI_CAFE_SOURCE_ID, - "eu.kanade.tachiyomi.extension.en.hentaicafe.HentaiCafe", - HentaiCafe::class - ), DelegatedSource( "Pururin", PURURIN_SOURCE_ID, diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HentaiCafe.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HentaiCafe.kt deleted file mode 100644 index 059005ac3..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/HentaiCafe.kt +++ /dev/null @@ -1,143 +0,0 @@ -package eu.kanade.tachiyomi.source.online.english - -import android.content.Context -import android.net.Uri -import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.network.await -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toSManga -import eu.kanade.tachiyomi.source.online.HttpSource -import eu.kanade.tachiyomi.source.online.MetadataSource -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.lang.runAsObservable -import exh.metadata.metadata.HentaiCafeSearchMetadata -import exh.metadata.metadata.HentaiCafeSearchMetadata.Companion.TAG_TYPE_DEFAULT -import exh.metadata.metadata.base.RaisedSearchMetadata.Companion.TAG_TYPE_VIRTUAL -import exh.metadata.metadata.base.RaisedTag -import exh.source.DelegatedHttpSource -import exh.ui.metadata.adapters.HentaiCafeDescriptionAdapter -import exh.util.urlImportFetchSearchManga -import okhttp3.HttpUrl.Companion.toHttpUrlOrNull -import org.jsoup.nodes.Document -import rx.Observable -import tachiyomi.source.model.ChapterInfo -import tachiyomi.source.model.MangaInfo - -class HentaiCafe(delegate: HttpSource, val context: Context) : - DelegatedHttpSource(delegate), - MetadataSource, - UrlImportableSource { - /** - * An ISO 639-1 compliant language code (two letters in lower case). - */ - override val lang = "en" - - /** - * The class of the metadata used by this source - */ - override val metaClass = HentaiCafeSearchMetadata::class - - // Support direct URL importing - override fun fetchSearchManga(page: Int, query: String, filters: FilterList) = - urlImportFetchSearchManga(context, query) { - super.fetchSearchManga(page, query, filters) - } - - override fun fetchMangaDetails(manga: SManga): Observable { - return client.newCall(mangaDetailsRequest(manga)) - .asObservableSuccess() - .flatMap { - parseToManga(manga, it.asJsoup()).andThen( - Observable.just( - manga.apply { - initialized = true - } - ) - ) - } - } - - override suspend fun getMangaDetails(manga: MangaInfo): MangaInfo { - val response = client.newCall(mangaDetailsRequest(manga.toSManga())).await() - return parseToManga(manga, response.asJsoup()) - } - - /** - * Parse the supplied input into the supplied metadata object - */ - override fun parseIntoMetadata(metadata: HentaiCafeSearchMetadata, input: Document) { - with(metadata) { - url = input.location() - title = input.select("h3").text() - val contentElement = input.select(".entry-content").first() - thumbnailUrl = contentElement.child(0).child(0).attr("src") - - fun filterableTagsOfType(type: String) = contentElement.select("a") - .filter { "$baseUrl/hc.fyi/$type/" in it.attr("href") } - .map { it.text() } - - tags.clear() - tags += filterableTagsOfType("tag").map { - RaisedTag(null, it, TAG_TYPE_DEFAULT) - } - - val artists = filterableTagsOfType("artist") - - artist = artists.joinToString() - tags += artists.map { - RaisedTag("artist", it, TAG_TYPE_VIRTUAL) - } - - readerId = input.select("[title=Read]").attr("href").toHttpUrlOrNull()!!.pathSegments[2] - } - } - - override fun fetchChapterList(manga: SManga) = runAsObservable({ - fetchOrLoadMetadata(manga.id) { - val response = client.newCall(mangaDetailsRequest(manga)).await() - response.asJsoup() - } - }).map { - listOf( - SChapter.create().apply { - url = "/manga/read/${it.readerId}/en/0/1/" - name = "Chapter" - chapter_number = 0.0f - } - ) - } - - override suspend fun getChapterList(manga: MangaInfo): List { - val metadata = fetchOrLoadMetadata(manga.id()) { - val response = client.newCall(mangaDetailsRequest(manga.toSManga())).await() - response.asJsoup() - } - return listOf( - ChapterInfo( - key = "/manga/read/${metadata.readerId}/en/0/1/", - name = "Chapter", - number = 0F - ) - ) - } - - override val matchingHosts = listOf( - "hentai.cafe" - ) - - override suspend fun mapUrlToMangaUrl(uri: Uri): String? { - val lcFirstPathSegment = uri.pathSegments.firstOrNull()?.takeUnless { it.equals("manga", true) } ?: return null - - return if (lcFirstPathSegment.equals("hc.fyi", true)) { - "/$lcFirstPathSegment/${uri.pathSegments[1]}" - } else null - } - - override fun getDescriptionAdapter(controller: MangaController): HentaiCafeDescriptionAdapter { - return HentaiCafeDescriptionAdapter(controller) - } -} diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 34123830e..79294819c 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -26,7 +26,6 @@ import exh.merged.sql.models.MergedMangaReference import exh.source.BlacklistedSources import exh.source.EH_SOURCE_ID import exh.source.HBROWSE_SOURCE_ID -import exh.source.HENTAI_CAFE_SOURCE_ID import exh.source.MERGED_SOURCE_ID import exh.source.PERV_EDEN_EN_SOURCE_ID import exh.source.PERV_EDEN_IT_SOURCE_ID @@ -241,11 +240,6 @@ object EXHMigrations { manga.url = getUrlWithoutDomain(manga.url) } - // Migrate HentaiCafe source IDs - if (manga.source == 6908L) { - manga.source = HENTAI_CAFE_SOURCE_ID - } - // Migrate Tsumino source IDs if (manga.source == 6909L) { manga.source = TSUMINO_SOURCE_ID diff --git a/app/src/main/java/exh/metadata/metadata/HentaiCafeSearchMetadata.kt b/app/src/main/java/exh/metadata/metadata/HentaiCafeSearchMetadata.kt deleted file mode 100644 index eaf62c8aa..000000000 --- a/app/src/main/java/exh/metadata/metadata/HentaiCafeSearchMetadata.kt +++ /dev/null @@ -1,72 +0,0 @@ -package exh.metadata.metadata - -import android.content.Context -import eu.kanade.tachiyomi.R -import exh.metadata.metadata.base.RaisedSearchMetadata -import kotlinx.serialization.Serializable -import tachiyomi.source.model.MangaInfo - -@Serializable -class HentaiCafeSearchMetadata : RaisedSearchMetadata() { - var hcId: String? = null - var readerId: String? = null - - var url get() = hcId?.let { "$BASE_URL/$it" } - set(a) { - a?.let { - hcId = hcIdFromUrl(a) - } - } - - var thumbnailUrl: String? = null - - var title by titleDelegate(TITLE_TYPE_MAIN) - - var artist: String? = null - - override fun createMangaInfo(manga: MangaInfo): MangaInfo { - val cover = thumbnailUrl - - val title = title - val artist = artist - val author = artist - - // Not available - val status = MangaInfo.UNKNOWN - - val genres = tagsToGenreList() - - val description = "meta" - - return manga.copy( - cover = cover ?: manga.cover, - title = title ?: manga.title, - artist = artist ?: manga.artist, - author = author ?: manga.author, - status = status, - genres = genres, - description = description - ) - } - - override fun getExtraInfoPairs(context: Context): List> { - val pairs = mutableListOf>() - hcId?.let { pairs += context.getString(R.string.id) to it } - readerId?.let { pairs += context.getString(R.string.reader_id) to it } - thumbnailUrl?.let { pairs += context.getString(R.string.thumbnail_url) to it } - title?.let { pairs += context.getString(R.string.title) to it } - artist?.let { pairs += context.getString(R.string.artist) to it } - return pairs - } - - companion object { - private const val TITLE_TYPE_MAIN = 0 - - const val TAG_TYPE_DEFAULT = 0 - - const val BASE_URL = "https://hentai.cafe" - - fun hcIdFromUrl(url: String) = - url.split("/").last { it.isNotBlank() } - } -} diff --git a/app/src/main/java/exh/metadata/metadata/base/RaisedSearchMetadata.kt b/app/src/main/java/exh/metadata/metadata/base/RaisedSearchMetadata.kt index 4e5d55fcc..b7e648771 100644 --- a/app/src/main/java/exh/metadata/metadata/base/RaisedSearchMetadata.kt +++ b/app/src/main/java/exh/metadata/metadata/base/RaisedSearchMetadata.kt @@ -8,7 +8,6 @@ import exh.metadata.forEach import exh.metadata.metadata.EHentaiSearchMetadata import exh.metadata.metadata.EightMusesSearchMetadata import exh.metadata.metadata.HBrowseSearchMetadata -import exh.metadata.metadata.HentaiCafeSearchMetadata import exh.metadata.metadata.HitomiSearchMetadata import exh.metadata.metadata.MangaDexSearchMetadata import exh.metadata.metadata.NHentaiSearchMetadata @@ -161,7 +160,6 @@ abstract class RaisedSearchMetadata { subclass(EHentaiSearchMetadata::class) subclass(EightMusesSearchMetadata::class) subclass(HBrowseSearchMetadata::class) - subclass(HentaiCafeSearchMetadata::class) subclass(HitomiSearchMetadata::class) subclass(MangaDexSearchMetadata::class) subclass(NHentaiSearchMetadata::class) diff --git a/app/src/main/java/exh/source/SourceHelper.kt b/app/src/main/java/exh/source/SourceHelper.kt index 6973e91f1..b8fa56648 100644 --- a/app/src/main/java/exh/source/SourceHelper.kt +++ b/app/src/main/java/exh/source/SourceHelper.kt @@ -9,7 +9,6 @@ import eu.kanade.tachiyomi.source.online.all.NHentai 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 import eu.kanade.tachiyomi.source.online.english.Pururin import eu.kanade.tachiyomi.source.online.english.Tsumino @@ -23,7 +22,6 @@ 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 = 4673633799850248749 const val PERV_EDEN_IT_SOURCE_ID = 1433898225963724122 -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 @@ -32,7 +30,6 @@ const val MERGED_SOURCE_ID = LEWD_SOURCE_SERIES + 69 private val DELEGATED_METADATA_SOURCES by lazy { listOf( - HentaiCafe::class, Pururin::class, Tsumino::class, HBrowse::class, @@ -55,7 +52,6 @@ var mangaDexSourceIds: List = emptyList() var LIBRARY_UPDATE_EXCLUDED_SOURCES = listOf( EH_SOURCE_ID, EXH_SOURCE_ID, - HENTAI_CAFE_SOURCE_ID, TSUMINO_SOURCE_ID, PURURIN_SOURCE_ID ) @@ -92,7 +88,6 @@ fun handleSourceLibrary() { LIBRARY_UPDATE_EXCLUDED_SOURCES = listOf( EH_SOURCE_ID, EXH_SOURCE_ID, - HENTAI_CAFE_SOURCE_ID, TSUMINO_SOURCE_ID, PURURIN_SOURCE_ID ) + hitomiSourceIds + nHentaiSourceIds diff --git a/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt deleted file mode 100644 index 062f0dfd2..000000000 --- a/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt +++ /dev/null @@ -1,60 +0,0 @@ -package exh.ui.metadata.adapters - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.databinding.DescriptionAdapterHcBinding -import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction -import eu.kanade.tachiyomi.ui.manga.MangaController -import eu.kanade.tachiyomi.util.system.copyToClipboard -import exh.metadata.bindDrawable -import exh.metadata.metadata.HentaiCafeSearchMetadata -import exh.ui.metadata.MetadataViewController - -class HentaiCafeDescriptionAdapter( - private val controller: MangaController -) : - RecyclerView.Adapter() { - - private lateinit var binding: DescriptionAdapterHcBinding - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HentaiCafeDescriptionViewHolder { - binding = DescriptionAdapterHcBinding.inflate(LayoutInflater.from(parent.context), parent, false) - return HentaiCafeDescriptionViewHolder(binding.root) - } - - override fun getItemCount(): Int = 1 - - override fun onBindViewHolder(holder: HentaiCafeDescriptionViewHolder, position: Int) { - holder.bind() - } - - inner class HentaiCafeDescriptionViewHolder(view: View) : RecyclerView.ViewHolder(view) { - fun bind() { - val meta = controller.presenter.meta - if (meta == null || meta !is HentaiCafeSearchMetadata) return - - binding.artist.text = meta.artist ?: itemView.context.getString(R.string.unknown) - - binding.moreInfo.bindDrawable(itemView.context, R.drawable.ic_info_24dp) - - binding.artist.setOnLongClickListener { - itemView.context.copyToClipboard( - binding.artist.text.toString(), - binding.artist.text.toString() - ) - true - } - - binding.moreInfo.setOnClickListener { - controller.router?.pushController( - MetadataViewController( - controller.manga - ).withFadeTransaction() - ) - } - } - } -} diff --git a/app/src/main/res/layout/description_adapter_hc.xml b/app/src/main/res/layout/description_adapter_hc.xml deleted file mode 100644 index 6459eae43..000000000 --- a/app/src/main/res/layout/description_adapter_hc.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -