From ad0c8e2fec021dc41aeda4b857ec0199e5265afc Mon Sep 17 00:00:00 2001 From: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> Date: Fri, 12 Nov 2021 20:41:19 +0700 Subject: [PATCH] Remove CatManga (#9800) --- src/en/catmanga/AndroidManifest.xml | 23 --- src/en/catmanga/build.gradle | 12 -- .../catmanga/res/mipmap-hdpi/ic_launcher.png | Bin 1768 -> 0 bytes .../catmanga/res/mipmap-mdpi/ic_launcher.png | Bin 1221 -> 0 bytes .../catmanga/res/mipmap-xhdpi/ic_launcher.png | Bin 2421 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 3821 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 5315 -> 0 bytes src/en/catmanga/res/web_hi_res_512.png | Bin 18017 -> 0 bytes .../extension/en/catmanga/CatData.kt | 57 ------ .../extension/en/catmanga/CatManga.kt | 179 ------------------ .../en/catmanga/CatMangaUrlActivity.kt | 38 ---- 11 files changed, 309 deletions(-) delete mode 100644 src/en/catmanga/AndroidManifest.xml delete mode 100644 src/en/catmanga/build.gradle delete mode 100644 src/en/catmanga/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/en/catmanga/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/en/catmanga/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/en/catmanga/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/en/catmanga/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/en/catmanga/res/web_hi_res_512.png delete mode 100644 src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatData.kt delete mode 100644 src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt delete mode 100644 src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatMangaUrlActivity.kt diff --git a/src/en/catmanga/AndroidManifest.xml b/src/en/catmanga/AndroidManifest.xml deleted file mode 100644 index 70b11d5a3..000000000 --- a/src/en/catmanga/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/en/catmanga/build.gradle b/src/en/catmanga/build.gradle deleted file mode 100644 index 9297a89ce..000000000 --- a/src/en/catmanga/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply plugin: 'kotlinx-serialization' - -ext { - extName = 'CatManga' - pkgNameSuffix = "en.catmanga" - extClass = '.CatManga' - extVersionCode = 7 -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/catmanga/res/mipmap-hdpi/ic_launcher.png b/src/en/catmanga/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 4db917a88a3cb6bb88f8906e978eeab32137648a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1768 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 diff --git a/src/en/catmanga/res/mipmap-xxhdpi/ic_launcher.png b/src/en/catmanga/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index f5cf760a0e6fe3565384b920e5634701a1f1c0d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3821 zcmZ{ncTm$m*ucMq0;MuqWXZCOvR7pfp&%$*Mj5gS6qG4ThAhh#Sp^i7RZs+#0+uCv zBU=HPf`Xt7K?G!j`1bey`QE*`OLECwk|)o~CrPFzHyEK@PyhfJ_4RbjDLvu83ZbR6 ztJjwr0D!4hUq=fQ`uSHuh!JLv{k?}E!Um=*28I4qm`-CP(inO_aNmq~-qD{^HcwgWkhD=Us^HBpk}GURtx zj9um6ODpkow!>*gojIlRUG*%}Gje_OUBQV<=stHjxgCi!?h>*Y9W>45AeT3 zA!6eqW$uPc-o(Pfb3uOoVx|c3A@RqVnK4IwQVI(DzLK$Ef?{tsGidbB>c>5 zn#jcK(jN6!01qkZ64THqR8dotQ&LizYKsgH-kd?*mgk~JP`z@>RS6Wn7CBSGf;4#B z8B13~$IJ&qgH6AIV(jhhZJvl*&itG#pUsiMLJ(A!c1sHn4YZ0o%TC|XO9Ap!wl zJQI&{$6&UUmxA&Nl#$VmBJ0GNKM@$b(NJw(=V_VOg)@I`{&MDxWx0GS3mkncs-kkM zN4k`=6x$xH_=UKv~LXXo~!rS zT>VH~!4^UuQiS)KG{BH-P>NA!q1hQ3TEIFZBEP|J+_o{`ho%+%S)hRd)NAH#v84n- zAMzoQk-JpoA*86KoijT(SKNvZFekg{PQA7eQFI$*&A7kyxlZEG&JNkb2y9AbiTrn7 z0E~;HmDwCx!=9w_sAN8o!G4wQ{6mcU#e(-le$xYPkyK9)e{+ng_|mtZ+!770NcQ>n(e@=2-ON@=<}IDp|3sft&C}R@F!_l_D8pX9;EXnGZ7`f#2c*rkayy#_5 zh;cVHH8s(i{EC8`L{Jou#Mk;kuX%KiM^gm6Jy~weQO;y8;f>h~+CRIynLk_= zL$>Ux^ezDWg!lE%vkva-7<_DXg1v|w7K6Sp_opjK21}F^^#|JVOPKq=HpWoB|@~tsGm8x#wByeRJxm^-m$}62k8-v ztQKanx(a+K`0ll@U%zS}R~Q|zv*da<(i;M7Z#lT0gw)pYX++r61})kU?Z(Y2D~zN- z3LsbAF}75<#)8rBrWBX3%-|NllTxw>Mi?ptczbP97%v}1_B+{If7Gk(GgohUHYEXa zP4pTGpcezb#PL)0LyP~img6%;s$abl)tz&qM@VF*QZ~v`$atDJ8W8^XB#25+AMf{E zJ85wsOJws~ccS+C`g$mH_Gq4xZ%=!oV_U?42~lI@dI~3hZrcRGK40^J21rN=?f#`9 zbVtChC6uf;tl&BE(6ZbrH9kI`zIfcR=C*P1$^J&NDl4YkN-BfV$|AT)KTBA^S{InT zgkUuw=QxNH1W6g7bBGJWzc+VpMB+CAm=!PhnfoH&H zd$2l;ZPP+fE+6^IGo?XYnl!ugLfQHFq)!Om{;OYW zX_g$h?`9%&wSXTlD1QB_5IS`k638qSO(qHH&3yQ4r+*kxiui2ofak#Xru7hQN;hSp+RQxoK_Dx2ioHktIMw1|R>tU7M1c zz{Kl0DFpih#4*Sjz&&H=2nfCFeheKS3)DmmgzKScJ~U?9+S(b3%4@VmjNFQ^2E`f% znnHd%f|$&q+)8&bKHdphw>Z@{-vY%((Vw$z7qzHhlM(9NrK!$Fg}GJ*^AqoU7X*CV znt-*zClUhT;Yghtr5CAFr22-}aK>O29hb!K8M|Zq& zp4j^&seVsB#94jF*8DB9OzXY%aY3aw?JO{YCMk2Tns8JbPb?1frID z=*QHVoxZk3=6!-j3kYRqmzfl}bSE-T+gF)Ibv0}8KoRz&8tYDYoj6H)t*nz^9C7e- z(ojBJ>}qkhqZ`NBxH2o+Mr?0pnG`2`3a{F^CyMt|xUoJI83tcMmk9Dei)w4-{TW06 z(sV~O^#upaq&m6^+kTsp1rdO^Y4=>6SI)BAbN`a-MTRgNkrMGy{&hm#+x?B{i(o5g z>~Qk<#gYqnzktyp1vexs3kwy%^X@XlqDl4M8d{chM*&K~5ZyMp(!4aC`S5A;4IQ)i z$26JwYgA}Pn1sxgHQnRp<@V0JhonoFNZk1Cs1R1UeOd-+e#2Na%Y_xx67pU{>mx3n z&!#($(-bq*936#@Sw7tONaImSt-iL@b9nvT6(Q%Sn!HwW43!co!X&i=ZZ zKr=dnE3Ku(wpGHk!fSt3y1RD~p}ld_ed(81Yr8!yn+llYf-Q#W%)1R-b00-_u=_gK z_nJ~u=_Sy+DQ8GJG+{EhS!SMZ2g2tTt;DUkThYs=ax7*GT11)a`-3QYYJH9GFJyff z$f>qpHz)~j(XEM0CJ!$xEUaAe651kkaH|9esoh&6EXknx@tdOaxBBE|8G^K{D_ROVQ#jw)#ph)E3-rv1-3n*XA zr+i(evFwJ0YSR^!sI#N{TSL{EHyvC-uO9q6cLdfpXKPUAsY$^2)BzIEPNZhmJ*UR* z7WCRljC>V!e%+S!kuMeu(zVI0G|>Dd}H7X3kwUZ)6Y{%9t2nfEzM zOM}HOv>)A(I!D9l>FI|uv$Cr4RRUM`DOf5uK0aPek>ifgKoteO?)>*hh`k)_D1t;f zd@DDhI)n#k)CmzS2@&puz_6+Csb~<5bi&~v6bm-KXUd`RqpE3WFhNJao62M&&~m6(adTA!T(!o2G1`LAK+32 UxJnu+-&jCj*F>jM+bQOM0FyZ2&j0`b diff --git a/src/en/catmanga/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/catmanga/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 1e7256b0d3f3b64c48f81aa32663f78054e7ebc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5315 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 IMXQki0f3Ux761SM diff --git a/src/en/catmanga/res/web_hi_res_512.png b/src/en/catmanga/res/web_hi_res_512.png deleted file mode 100644 index 6e46ab8b8ab0c08b7af76cc7fc5f34273a3422f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18017 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⪼VkR~-)Wip*9$5vf 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 Uf=cA*FtTe(^6IyX, - val authors: List, - val genres: List, - val chapters: List? = null, - val title: String, - val series_id: String, - val description: String, - val status: String, - val cover_art: CatSeriesCover, - val all_covers: List? = null -) { - fun toSManga() = this.let { series -> - SManga.create().apply { - url = "/series/${series.series_id}" - title = series.title - thumbnail_url = series.cover_art.source - author = series.authors.joinToString(", ") - description = series.description - genre = series.genres.joinToString(", ") - status = when (series.status) { - "ongoing" -> SManga.ONGOING - "completed" -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - if (alt_titles.isNotEmpty()) { - description += "\n\nAlternative titles:\n" - alt_titles.forEach { - description += "• $it\n" - } - } - } - } -} - -@Serializable -data class CatSeriesChapter( - val title: String? = null, - val groups: List, - val number: Float, - val display_number: String? = null, - val volume: Int? = null -) - -@Serializable -data class CatSeriesCover( - val source: String, - val width: Int, - val height: Int -) diff --git a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt b/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt deleted file mode 100644 index abae4e7c4..000000000 --- a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt +++ /dev/null @@ -1,179 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.catmanga - -import android.app.Application -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.asObservableSuccess -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.util.asJsoup -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.boolean -import kotlinx.serialization.json.decodeFromJsonElement -import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.Request -import okhttp3.Response -import org.jsoup.nodes.Document -import rx.Observable -import uy.kohesive.injekt.injectLazy - -@ExperimentalSerializationApi -class CatManga : HttpSource() { - - private val application: Application by injectLazy() - - override val name = "CatManga" - override val baseUrl = "https://catmanga.org" - override val supportsLatest = false - override val lang = "en" - private val json: Json by injectLazy() - - private val allSeriesRequest = GET("$baseUrl/api/series/allSeries") - - override fun popularMangaRequest(page: Int) = allSeriesRequest - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = allSeriesRequest - - override fun chapterListRequest(manga: SManga): Request { - val seriesId = manga.url.substringAfter("/series/") - return GET("$baseUrl/api/series/$seriesId") - } - - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { - return client.newCall(searchMangaRequest(page, query, filters)) - .asObservableSuccess() - .map { response -> - val manga = json.decodeFromString>(response.body!!.string()) - .filter { - if (query.startsWith(SERIES_ID_SEARCH_PREFIX)) { - return@filter it.series_id.contains(query.removePrefix(SERIES_ID_SEARCH_PREFIX), true) - } - sequence { yieldAll(it.alt_titles); yield(it.title) } - .any { title -> title.contains(query, true) } - } - .map { it.toSManga() } - .toList() - MangasPage(manga, false) - } - } - - override fun fetchMangaDetails(manga: SManga): Observable { - val seriesId = manga.url.substringAfter("/series/") - return client.newCall(allSeriesRequest) - .asObservableSuccess() - .map { response -> - json.decodeFromString>(response.body!!.string()) - .find { it.series_id == seriesId } - ?.toSManga() ?: manga - } - } - - override fun chapterListParse(response: Response): List { - val series = json.decodeFromString(response.body!!.string()) - val seriesPrefs = application.getSharedPreferences("source_${id}_time_found:${series.series_id}", 0) - val seriesPrefsEditor = seriesPrefs.edit() - val chapters = series.chapters!! - .asReversed() - .map { chapter -> - val title = chapter.title ?: "" - val groups = chapter.groups.joinToString(", ") - val numberUrl = chapter.number.chapterNumberToUrlPath() - val displayNumber = chapter.display_number ?: numberUrl - SChapter.create().apply { - url = "/series/${series.series_id}/$numberUrl" - chapter_number = chapter.number - scanlator = groups - - name = if (chapter.volume != null) { - "Vol.${chapter.volume} " - } else { - "" - } - name += "Ch.$displayNumber" - if (title.isNotBlank()) { - name += " - $title" - } - - // Save current time when a chapter is found for the first time, and reuse it on future - // checks to prevent manga entry without any new chapter bumped to the top of - // "Latest chapter" list when the library is updated. - val currentTimeMillis = System.currentTimeMillis() - if (!seriesPrefs.contains(numberUrl)) { - seriesPrefsEditor.putLong(numberUrl, currentTimeMillis) - } - date_upload = seriesPrefs.getLong(numberUrl, currentTimeMillis) - } - } - seriesPrefsEditor.apply() - return chapters - } - - override fun popularMangaParse(response: Response): MangasPage { - val mangas = json.decodeFromString>(response.body!!.string()).map { it.toSManga() } - return MangasPage(mangas, false) - } - - override fun fetchPageList(chapter: SChapter): Observable> { - return client.newCall(pageListRequest(chapter)) - .asObservableSuccess() - .map { - val doc = it.asJsoup().getDataJsonObject() - val pages = if (doc["isFallback"]!!.jsonPrimitive.boolean) { - val buildId = doc["buildId"]!!.jsonPrimitive.content - val directRequest = GET("$baseUrl/_next/data/$buildId/${chapter.url}.json") - val directResponse = client.newCall(directRequest).execute() - json.parseToJsonElement(directResponse.body!!.string()) - } else { - doc["props"]!! - }.jsonObject["pageProps"]!!.jsonObject["pages"]!! - json.decodeFromJsonElement>(pages) - .mapIndexed { index, s -> Page(index, "", s) } - } - } - - /** - * Returns json object of site data - */ - private fun Document.getDataJsonObject() = json.parseToJsonElement(getElementById("__NEXT_DATA__").html()).jsonObject - - /** - * Returns string without decimal when it is not relevant - */ - private fun Float.chapterNumberToUrlPath(): String { - return if (toInt().toFloat() == this) toInt().toString() else toString() - } - - override fun pageListParse(response: Response): List { - throw UnsupportedOperationException("Not used.") - } - - override fun latestUpdatesRequest(page: Int): Request { - throw UnsupportedOperationException("Not used.") - } - - override fun latestUpdatesParse(response: Response): MangasPage { - throw UnsupportedOperationException("Not used.") - } - - override fun mangaDetailsParse(response: Response): SManga { - throw UnsupportedOperationException("Not used.") - } - - override fun searchMangaParse(response: Response): MangasPage { - throw UnsupportedOperationException("Not used.") - } - - override fun imageUrlParse(response: Response): String { - throw UnsupportedOperationException("Not used.") - } - - companion object { - const val SERIES_ID_SEARCH_PREFIX = "series_id:" - } -} diff --git a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatMangaUrlActivity.kt b/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatMangaUrlActivity.kt deleted file mode 100644 index fc2a09fe1..000000000 --- a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatMangaUrlActivity.kt +++ /dev/null @@ -1,38 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.catmanga - -import android.app.Activity -import android.content.ActivityNotFoundException -import android.content.Intent -import android.os.Bundle -import android.util.Log -import kotlin.system.exitProcess - -/** - * Springboard that accepts https://catmanga.org/series/xxxxxx intents and redirects them to - * the main Tachiyomi process. - */ -class CatMangaUrlActivity : Activity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - val pathSegments = intent?.data?.pathSegments - if (pathSegments != null && pathSegments.size > 1) { - val id = pathSegments[1] - val mainIntent = Intent().apply { - action = "eu.kanade.tachiyomi.SEARCH" - putExtra("query", "${CatManga.SERIES_ID_SEARCH_PREFIX}$id") - putExtra("filter", packageName) - } - - try { - startActivity(mainIntent) - } catch (e: ActivityNotFoundException) { - Log.e("CatMangaUrlActivity", e.toString()) - } - } else { - Log.e("CatMangaUrlActivity", "could not parse uri from intent $intent") - } - - finish() - exitProcess(0) - } -}