From 859504636f0babbbebfd92073892e76446e91d27 Mon Sep 17 00:00:00 2001 From: Rama Bondan Prakoso Date: Tue, 30 Jul 2019 00:41:14 +0700 Subject: [PATCH] Mangatensei Extension (#1355) Mangatensei Extension --- src/all/mangatensei/build.gradle | 12 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2951 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1836 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4339 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6812 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9115 bytes src/all/mangatensei/res/web_hi_res_512.png | Bin 0 -> 26117 bytes .../extension/all/mangatensei/Mangatensei.kt | 389 ++++++++++++++++++ .../all/mangatensei/MangatenseiFactory.kt | 9 + .../all/mangatensei/MangatenseiLanguages.kt | 55 +++ 10 files changed, 465 insertions(+) create mode 100644 src/all/mangatensei/build.gradle create mode 100644 src/all/mangatensei/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/all/mangatensei/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/all/mangatensei/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/all/mangatensei/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/all/mangatensei/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/all/mangatensei/res/web_hi_res_512.png create mode 100644 src/all/mangatensei/src/eu/kanade/tachiyomi/extension/all/mangatensei/Mangatensei.kt create mode 100644 src/all/mangatensei/src/eu/kanade/tachiyomi/extension/all/mangatensei/MangatenseiFactory.kt create mode 100644 src/all/mangatensei/src/eu/kanade/tachiyomi/extension/all/mangatensei/MangatenseiLanguages.kt diff --git a/src/all/mangatensei/build.gradle b/src/all/mangatensei/build.gradle new file mode 100644 index 000000000..e0a844efa --- /dev/null +++ b/src/all/mangatensei/build.gradle @@ -0,0 +1,12 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +ext { + appName = 'Tachiyomi: Mangatensei' + pkgNameSuffix = 'all.mangatensei' + extClass = '.MangatenseiFactory' + extVersionCode = 1 + libVersion = '1.2' +} + +apply from: "$rootDir/common.gradle" diff --git a/src/all/mangatensei/res/mipmap-hdpi/ic_launcher.png b/src/all/mangatensei/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..58cdde38307ee95267999d4cc188a77cd4256876 GIT binary patch literal 2951 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 literal 0 HcmV?d00001 diff --git a/src/all/mangatensei/res/mipmap-mdpi/ic_launcher.png b/src/all/mangatensei/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d007343e3230dd292a71818be4f0bd4eff649d30 GIT binary patch literal 1836 zcmV+{2h;e8P)_>8eT{sVX>q(!jfPEwN#RBu{5-y`=dLpJM%pE9$(!1>^z+m+j*W@@gz4h zd-s`pzvrHF@A;l{A7KDupo9kC1$>p~`VlGnLkquEz^+dbf`3!s#Al7UDq>ypW6(78 z0f)Tm(2IszKh2>R9rCK74;VBrH^-pC*YXJr-D&6tML-#vWoQ~dU55Ie=8DhsDD;7$ zI}boooNG|P#kvFEW$57^&{>9h7gqJETU09RQRcA0U2(3&D(ulBcn#n6F+)2Mc$%TE zU(o+W8JD4Hbghn|kHz`5v=Wzsm)}@n)dmIpGKypw>J7CN*;`tPqT4uRe+1tt<0@rb zD_X%i$o`0@KX=MEkwf<8;8z>?WfbWcY8Q}wMNC%%J^{$kpMGB8dzF|+A1z|LBKS6Z z&7r9)dBP0Xow5#^&cfFL4)iEd3>pHMK~h7XQK(tyEO!csgjPW$>_zHOyAFM3H`MM8 zlw)P!Vq{GOyh9&U*ybRUE1B#w#lT!>3iNr%T3R@pR9~AJ@1zZxR%Qb3v^r*tP z3nZ;vSg+S%WF*+L)dE+I;u!b@WC>2bg5Pp)AcqK84loh04!T2O!UcBNKloY=@NoCt zaO^0&cLZ+vO6b$_6h}Zk__Z*;72P3VZ$vAsaC3kJ9-^wv0oJU6u`$@V5$Z#ghl3Tq zZtLJ-fbYgGHBbRR2b%=GRp9ykOOiw@5ZotC!^+oc-BxmAM~{#-F!^T~7w{JCssO|2 zc7>(~SMKC7X#X3s43=8mQ)po!^mUdY>%@&+N&)fUnlOALx;=L5N_0!G$?l#m0e-j% z_xv!}^Ba?KR)PEPgW1`z`eyL*%P=6nLzm$VTQ>nODFQ+{&4WL~$ zb<4&35Os_0u>!gp_+CjPW(D|HsMoXyHu@?_zAPR(A3_RIfdkO8P`4>Q_kSmO@hgS% z&p`_UWfp-8DRz1Y8E4Q6RHW2BVgPOIG;qN}GznH{!#|1-Ri7#j<0Fw10Zjtks4yzP zV!&z?DdMNd-{RK+ELpUxYKRNohttWY;j`o#s7i%ca0=$Ahl)|!x3P8CT@>AyB zzjt$hr=En{zY3c+!`5x^tKBd@0rVCiN_P*&v8fb(+j{JqVcXJCw>)?(eFH&{ec^`cJsb9k*J7H!fk~e|V zr(yq#@bRg>$y@{~GXY~p59JpF`6gVyh@Oa6s8%}6NgiTuY=gN?rft`nRFZMHmIj)2!R_F9j$m6lxoo1_4dAmaLVlI~4e~&yt$ltHd z8)6}K^bqoV;XdGV0sk8E0x;V5t<4P7f%R`8FU8xFH2ojcNn_HI8fpiTKLYC`mj1** zc8BZI4R1tCSPUqu2!7?d={4keV8d=0s&q>;6*8Y|4qswt$WR>H@rNEtw;OEfg z-yu%|*G@sB@;w_iO=Wo$nzy#3TSH|bBMhtX&czs|LxOETu z=n-Uk4qfW^qI(`)I)Y3;9d0DI0HfPOaiOoWX6aWA#-V;PoXgjI2X6imY~6y~F$On{ zA{!d8wiXTn9CX^S)WSYF10TMRz554v=O7#h7B+*Mg|y7829-95f&K*Qd%AC-_q4&bN2KOKM%u3S+@BC|?npgskS&B4u@#kLuSr=T$d^>`aJ a5cv;SMB|UgPPQok0000 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 literal 0 HcmV?d00001 diff --git a/src/all/mangatensei/res/mipmap-xxhdpi/ic_launcher.png b/src/all/mangatensei/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..604a02c35ff5ff94c3df38b594f79b1dee2bd849 GIT binary patch literal 6812 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 KMNUMnLSTYF#ILjf literal 0 HcmV?d00001 diff --git a/src/all/mangatensei/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/mangatensei/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1f3aa83727566aff4fd051195f6fd18ed8ca6523 GIT binary patch literal 9115 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 Z{{v@5Vq}sZB?|xm002ovPDHLkV1mHz8sPu{ literal 0 HcmV?d00001 diff --git a/src/all/mangatensei/res/web_hi_res_512.png b/src/all/mangatensei/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..683e70050d5afffd711ed50c0e22fef76bd742ae GIT binary patch literal 26117 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 literal 0 HcmV?d00001 diff --git a/src/all/mangatensei/src/eu/kanade/tachiyomi/extension/all/mangatensei/Mangatensei.kt b/src/all/mangatensei/src/eu/kanade/tachiyomi/extension/all/mangatensei/Mangatensei.kt new file mode 100644 index 000000000..4bec0e8bd --- /dev/null +++ b/src/all/mangatensei/src/eu/kanade/tachiyomi/extension/all/mangatensei/Mangatensei.kt @@ -0,0 +1,389 @@ +package eu.kanade.tachiyomi.extension.all.mangatensei + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.* +import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import okhttp3.HttpUrl +import okhttp3.OkHttpClient +import okhttp3.Request +import org.json.JSONObject +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.util.* +import java.util.concurrent.TimeUnit + +open class Mangatensei(override val lang: String, private val Mtlang: String) : ParsedHttpSource() { + + override val name = "Mangatensei" + + override val baseUrl = "https://www.mangatensei.com" + + override val supportsLatest = true + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build() + + override fun latestUpdatesRequest(page: Int): Request { + // The site redirects page 1 -> url-without-page so we do this redirect early for optimization + val builtUrl = "$baseUrl/browse?langs=$Mtlang&sort=update&page=$page" + return GET(builtUrl) + } + + override fun latestUpdatesSelector() = "div#series-list div.col-24" + + override fun latestUpdatesFromElement(element: Element): SManga { + val manga = SManga.create() + val item = element.select("a.item-cover") + val imgurl = "http:" + item.select("img").attr("src") + manga.setUrlWithoutDomain(item.attr("href")) + manga.title = element.select("a.item-title").text() + manga.thumbnail_url = imgurl + return manga + } + + override fun latestUpdatesNextPageSelector() = "div.browse-pager:contains(order) a.page-link:contains(ยป)" + + override fun popularMangaRequest(page: Int): Request { + val builtUrl = "$baseUrl/browse?langs=$Mtlang&sort=views_w&page=$page" + return GET(builtUrl) + } + + override fun popularMangaSelector() = latestUpdatesSelector() + + override fun popularMangaFromElement(element: Element) = latestUpdatesFromElement(element) + + override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + var author: String? = null + val url = HttpUrl.parse("$baseUrl/browse")!!.newBuilder() + url.addQueryParameter("page", page.toString()) + url.addQueryParameter("langs", Mtlang) + filters.forEach { filter -> + when (filter) { + is AuthorFilter -> { + author = filter.state + } + is StyleFilter -> { + val styleToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.state) { + styleToInclude.add(content.name) + } + } + if (styleToInclude.isNotEmpty()) { + url.addQueryParameter("styles", styleToInclude + .joinToString(",")) + } + } + is DemographicFilter -> { + val demographicToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.state) { + demographicToInclude.add(content.name) + } + } + if (demographicToInclude.isNotEmpty()) { + url.addQueryParameter("demogs", demographicToInclude + .joinToString(",")) + } + } + is StatusFilter -> { + val status = when (filter.state) { + Filter.TriState.STATE_INCLUDE -> "1" + Filter.TriState.STATE_EXCLUDE -> "0" + else -> "" + } + if(status.isNotEmpty()) { + url.addQueryParameter("status", status) + } + } + is GenreFilter -> { + val genreToInclude = mutableListOf() + filter.state.forEach { content -> + if (content.state) { + genreToInclude.add(content.name) + } + } + if (genreToInclude.isNotEmpty()) { + url.addQueryParameter("genres", genreToInclude + .joinToString(",")) + } + } + is StarFilter -> { + if(filter.state != 0) { + url.addQueryParameter("stars", filter.toUriPart()) + } + } + is ChapterFilter -> { + if(filter.state != 0) { + url.addQueryParameter("chapters", filter.toUriPart()) + } + } + is SortBy -> { + if(filter.state != 0) { + url.addQueryParameter("sort", filter.toUriPart()) + } + } + } + } + return if(query.isNotBlank() || author!!.isNotBlank()) { + GET("$baseUrl/search?q=$query&a=$author") + } else GET(url.build().toString(), headers) + } + + override fun searchMangaSelector() = latestUpdatesSelector() + + override fun searchMangaFromElement(element: Element) = latestUpdatesFromElement(element) + + override fun searchMangaNextPageSelector() = latestUpdatesNextPageSelector() + + override fun mangaDetailsRequest(manga: SManga): Request { + if (manga.url.startsWith("http")) { + return GET(manga.url, headers) + } + return super.mangaDetailsRequest(manga) + } + + override fun mangaDetailsParse(document: Document): SManga { + val infoElement = document.select("div#series-page div.container") + val manga = SManga.create() + val genres = mutableListOf() + val status = infoElement.select("div.attr-item:contains(status) span").text() + infoElement.select("div.attr-item:contains(genres) span").text().split(" / " + .toRegex()).forEach { element -> + genres.add(element) + } + manga.title = infoElement.select("h3").text() + manga.author = infoElement.select("div.attr-item:contains(author) a:first-child").text() + manga.artist = infoElement.select("div.attr-item:contains(author) a:last-child").text() + manga.status = parseStatus(status) + manga.genre = genres.joinToString(", ") + manga.description = infoElement.select("h5:contains(summary) + pre").text() + manga.thumbnail_url = "http:" + document.select("div.attr-cover img") + .attr("src") + return manga + } + + private fun parseStatus(status: String?) = when { + status == null -> SManga.UNKNOWN + status.contains("Ongoing") -> SManga.ONGOING + status.contains("Completed") -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + + override fun chapterListRequest(manga: SManga): Request { + if (manga.url.startsWith("http")) { + return GET(manga.url, headers) + } + return super.chapterListRequest(manga) + } + + override fun chapterListSelector() = "div.main div.p-2" + + override fun chapterFromElement(element: Element): SChapter { + val chapter = SChapter.create() + val urlElement = element.select("a.chapt") + val time = element.select("i.pl-3").text() + .replace("a ", "1 ") + .replace("an ", "1 ") + chapter.setUrlWithoutDomain(urlElement.attr("href")) + chapter.name = urlElement.text() + if (time != "") { + chapter.date_upload = parseChapterDate(time) + } + return chapter + } + + private fun parseChapterDate(date: String): Long { + val value = date.split(' ')[0].toInt() + + return when { + "mins" in date -> Calendar.getInstance().apply { + add(Calendar.MINUTE, value * -1) + }.timeInMillis + "hours" in date -> Calendar.getInstance().apply { + add(Calendar.HOUR_OF_DAY, value * -1) + }.timeInMillis + "days" in date -> Calendar.getInstance().apply { + add(Calendar.DATE, value * -1) + }.timeInMillis + "weeks" in date -> Calendar.getInstance().apply { + add(Calendar.DATE, value * 7 * -1) + }.timeInMillis + "months" in date -> Calendar.getInstance().apply { + add(Calendar.MONTH, value * -1) + }.timeInMillis + "years" in date -> Calendar.getInstance().apply { + add(Calendar.YEAR, value * -1) + }.timeInMillis + "min" in date -> Calendar.getInstance().apply { + add(Calendar.MINUTE, value * -1) + }.timeInMillis + "hour" in date -> Calendar.getInstance().apply { + add(Calendar.HOUR_OF_DAY, value * -1) + }.timeInMillis + "day" in date -> Calendar.getInstance().apply { + add(Calendar.DATE, value * -1) + }.timeInMillis + "week" in date -> Calendar.getInstance().apply { + add(Calendar.DATE, value * 7 * -1) + }.timeInMillis + "month" in date -> Calendar.getInstance().apply { + add(Calendar.MONTH, value * -1) + }.timeInMillis + "year" in date -> Calendar.getInstance().apply { + add(Calendar.YEAR, value * -1) + }.timeInMillis + else -> { + return 0 + } + } + } + + override fun pageListRequest(chapter: SChapter): Request { + if (chapter.url.startsWith("http")) { + return GET(chapter.url, headers) + } + return super.pageListRequest(chapter) + } + + override fun pageListParse(document: Document): List { + val pages = mutableListOf() + val script = document.select("script").html() + .substringAfter("var images = ").substringBefore(";") + val imgList = JSONObject(script) + + for( i in 1 until imgList.length() + 1) { + pages.add(Page(i - 1, "", imgList.getString("$i"))) + } + + return pages + } + + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used") + + private class AuthorFilter : Filter.Text("Author / Artist") + private class StyleFilter(genres: List) : Filter.Group("Styles", genres) + private class DemographicFilter(genres: List) : Filter.Group("Demographic", genres) + private class GenreFilter(genres: List) : Filter.Group("Genres", genres) + private class StatusFilter : Filter.TriState("Completed") + + private class StarFilter : UriPartFilter("Stars", arrayOf( + Pair("", ""), + Pair("1 ~ 9", "1-9"), + Pair("10 ~ 29", "10-29"), + Pair("30 ~ 99", "30-99"), + Pair("100 ~ 199", "100-199"), + Pair("200+", "200"), + Pair("100+", "100"), + Pair("50+", "50"), + Pair("10+", "10"), + Pair("1+", "1") + )) + + private class SortBy : UriPartFilter("Sorts By", arrayOf( + Pair("