From a5e5ccceec1828ca3837c32f947a670d56cfdd47 Mon Sep 17 00:00:00 2001 From: KenjieDec <65448230+KenjieDec@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:04:00 +0700 Subject: [PATCH] Add 18Kami (#4262) * Add 18Kami * Apply suggestions - Apply vetleledaal's suggestions * Apply suggestion - Apply bapeey's suggestion Co-authored-by: bapeey <90949336+bapeey@users.noreply.github.com> * Lint Fix --------- Co-authored-by: bapeey <90949336+bapeey@users.noreply.github.com> --- src/en/kami18/build.gradle | 9 + src/en/kami18/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3402 bytes src/en/kami18/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1770 bytes .../kami18/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4967 bytes .../kami18/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9769 bytes .../kami18/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 14202 bytes .../tachiyomi/extension/en/kami18/Filters.kt | 62 +++++++ .../tachiyomi/extension/en/kami18/Kami18.kt | 164 ++++++++++++++++++ 8 files changed, 235 insertions(+) create mode 100644 src/en/kami18/build.gradle create mode 100644 src/en/kami18/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/kami18/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/kami18/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/kami18/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/kami18/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Filters.kt create mode 100644 src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Kami18.kt diff --git a/src/en/kami18/build.gradle b/src/en/kami18/build.gradle new file mode 100644 index 000000000..5cd373978 --- /dev/null +++ b/src/en/kami18/build.gradle @@ -0,0 +1,9 @@ +ext { + extName = '18Kami' + extClass = '.Kami18' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" + diff --git a/src/en/kami18/res/mipmap-hdpi/ic_launcher.png b/src/en/kami18/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..346ecac526c0200442773ab462f5522795882cf2 GIT binary patch literal 3402 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 literal 0 HcmV?d00001 diff --git a/src/en/kami18/res/mipmap-mdpi/ic_launcher.png b/src/en/kami18/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..989d1b196d277d1b79f5c8ebeed86175bfe4ba0a GIT binary patch literal 1770 zcmVPx*q)9|URA@u(nhR`GRT#&AeU5c6wvMfPZwxmc4#u3IPGP7)R1g;w0W}~-@R5k3 z#vmG>C?XJpF(NXJ$Z!Y&K^YhjHdIKqfDpwDoxntx!q#>VOt-!?Y&(MA)!fg z+un2U`F`jBo$q|-epPUVzZ6%v{agjO+zR?rKscv_%dV0Gumi%;>m>%D7%^f*gifbh zX|Y&lI2=R?S2-LPulIEn?tigK&oS^df$k}sS11&1TCJvBqtPrpcI;TYCxIA%dgRDa zt2;Y89=&9<`9HywN@e@` z^XHO)4p(;)1BlJe9?}%Zcqu@hF4A8>qp?X3GzS8R%g!Fs*wc9+5V3Yrd|S!@cmf-Z zP4R#+Ai&_k*^NDZ=FdQBlR7k$S?Eh9KwmToq=FpRkki&vNyz|NS%Z5OaP3fR#KnIL zK9u@XRW^XD`?!O68|ZIj`!njUDl|76rOkoN%q$lL`h3`zD+Q~9Trk-H?g|745=@lx zko!|NAToExq$$alK zno0AlZ2Mvr4J|f7 z0tRT6SZ#La_w_Y4>^-|GKr%o|N~+r&7@Y!}Rz5-Z&u^m{{s`T_eTF7?2G&#Gp-P#6 zY5NHrUG2m?@(NF`-Rd-K!NP^SzhVUs&z{Ye&709^G_kFOS8=9fY4hz!O#Z{PN4MEM731s`905I2;5(a&n5B0%|4vy6#bw^&3$S zdkE|Cuduh&q0mO5%6$n_Sy}Hh1Kq9DIh~*<@yrI+p1y?v;Sn@7Hd2^BjM}<-QVn|c z{aC{tlO{1`q?(T_PIBbPQ9hiTfl94q*uaE1U#OI7HY~Qhmjn%EZK5IAw6H>5rG;{XM8KR@3 zFND26TmYo6*EvudLgBaufBw9CA*Np zkR+;rrvae`@n?KL0lc$PF_=*7A6#9=^Rr|H5)%zR6_9JV6u0r*cl(0q2Y@sM{240^ z#NYVKm;(t3iLw+3q)MQNWd6+#B8-Xw1QUruG3r5u(LsX}LaIO@*9y4;VgOPV@OCHP zPxz!7-qTLdJDDU%lQ&o3Kcze}~um08Ga!MogeZ?#AAD{X|i<=2QCjbBd M07*qoM6N<$f@=yjm;e9( literal 0 HcmV?d00001 diff --git a/src/en/kami18/res/mipmap-xhdpi/ic_launcher.png b/src/en/kami18/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0268ec2da94c958b97fc736426b404aa44cfe2 GIT binary patch literal 4967 zcmV-t6PWCYP)Px|AxT6*RCr$PodQJ(4I@y)m#_7JS^{bqff~Mitp{A7 z1k@5&o;cMPF1-a(lz0CcO8o81wf`#T2;jx9v*^?PztsK75>O0!`}XalqNAh7=I2`m z+U>TMs*1Vfl~lE~A(Z`Jw6#nT^vlSd<8DXk`pcfH|G%h5uZ`|DD~e(>8cn}OMusoV z$;tWu%*@QwMPvvvZ!Z$<F)%qb)1zcthZ9 zkrz}Lko5>K0>MC3N=oX{(iD0E-jnRe?bEYV8B+D?sLq&_oqe(aATpxD%4A4}fDj-i zB_;JxbrRqY!2MB&x1_quXJ?;m1e^j2{6Ro$N=oX%iY2EaDe^54%gB=+Ff|FjXn%J0 z$tFOKp9%0RI~8R?zQ+gewZA3+uk4zBC!krglp+r(BShuXB3EekuwQ0hpvvfZjJL=2 z2(KmrD)I>51GEeQdN+SQNLauL@B~!FQY04(d;wMlY+vg2)+5T64*#{qA8$ugkG zfqQ;-==@GVa&j||F`)9y$oE*_YXH}?Tp8m1QAafr;E&8mPNHPugFblr9^;SeR09Ft zOOdQq%UG%0Xsh>N`vZJYM@~+*fBONYC8#p+J!is^kqk)wDkB57r{@WN_W(TtDoRVe%ZzFXC_82?MnlD5Tx>-IR1AF8rO4Mb zROUQiAio;{#q zV2xr%kqUO_xtV$K5s+3-A=sp1u|dY4Dmh~6Qkl)0hdnY9AuDAvb=5clm1RAO0=Hfa z-CHQMO9H18R_s(+^rOnawhDdP7%;`P#89U>j;tNnPV8avHkBL;v~36tqFjX89O6^K z=1|GE!tN|pE7z-)LW4-i%7djpIXQk7#5Mb*E3`@gqXIjQseJge%P?BhgPtuRIuwqb zflo42?emVy;G%j^XoIhQgKvHl<@IKD%Xy`{9>04)lO|0ojRB3K;q_Y-TDNLJ(B)$> z)M){#16$_%STh!4P8&e*l@Dq&P1VBF7(!xEZ3Ps3JxOyFbL%@WgvDuECVq-_&3YDV z=KI)xUxO+6MvRTF!g*{v*_kVNcD0>hSHQ)sQZct20Ez+I&ZT_6eK((FsyyC3gow6- zF+?`Pk(J5m9iMSD*Glu&mt(%@W>i}~)@`$yv*9FD)|Q^UCgTm21@USnASwht7_N|X z-DrX@9f2+59c-C%Q9|kx(rpg*!<#WRX-~o0Q8&-5l~hABj2XMl9{7vUKT(*zI

-M>vzG5o#=FKNQKAvH>^}@2~MuyJG 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 literal 0 HcmV?d00001 diff --git a/src/en/kami18/res/mipmap-xxhdpi/ic_launcher.png b/src/en/kami18/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6ac6bfd90e1bb76fab20b060e54bd5dce5618a GIT binary patch literal 9769 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 literal 0 HcmV?d00001 diff --git a/src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Filters.kt b/src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Filters.kt new file mode 100644 index 000000000..3d15c4a41 --- /dev/null +++ b/src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Filters.kt @@ -0,0 +1,62 @@ +package eu.kanade.tachiyomi.extension.en.kami18 + +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList + +fun getFilters(): FilterList { + return FilterList( + Filter.Header("Filter is ignored when using text search"), + SortFilter("Sort", getSortsList), + TimelineFilter("Timeline", getTimelinesList), + TypeFilter("Type", getTypes), + Filter.Separator(), + TextFilter("Tags"), + ) +} + +/** Filters **/ + +internal open class TextFilter(name: String) : Filter.Text(name) + +internal class SortFilter(name: String, sortList: List>, state: Int = 0) : + SelectFilter(name, sortList, state) + +internal class TypeFilter(name: String, sortList: List>, state: Int = 0) : + SelectFilter(name, sortList, state) + +internal class TimelineFilter(name: String, sortList: List>, state: Int = 0) : + SelectFilter(name, sortList, state) + +internal open class CheckBoxFilter(name: String, val value: String = "") : Filter.CheckBox(name) + +internal open class SelectFilter(name: String, private val vals: List>, state: Int = 0) : + Filter.Select(name, vals.map { it.first }.toTypedArray(), state) { + fun getValue() = vals[state].second +} + +private val getTimelinesList: List> = listOf( + Pair("All Time", "a"), + Pair("Added Today", "d"), + Pair("Added This Week", "w"), + Pair("Added This Month", "m"), +) + +private val getTypes: List> = listOf( + Pair("All", ""), + Pair("Other", "another"), + Pair("Comic", "comic"), + Pair("Cosplay", "cosplay"), + Pair("Image", "image"), + Pair("Manga", "manga"), + Pair("Manhwa", "manhwa"), +) + +private val getSortsList: List> = listOf( + Pair("Relevant", "mm"), + Pair("Most Recent", "mr"), + Pair("Most Viewed", "mv"), + Pair("Most Photos", "mp"), + Pair("Top Rated", "tr"), + Pair("Most Commented", "md"), + Pair("Most Liked", "tf"), +) diff --git a/src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Kami18.kt b/src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Kami18.kt new file mode 100644 index 000000000..e61d50ea3 --- /dev/null +++ b/src/en/kami18/src/eu/kanade/tachiyomi/extension/en/kami18/Kami18.kt @@ -0,0 +1,164 @@ +package eu.kanade.tachiyomi.extension.en.kami18 + +import eu.kanade.tachiyomi.network.GET +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 okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Element +import java.lang.Exception +import java.text.SimpleDateFormat +import java.util.Locale + +class Kami18() : HttpSource() { + + override val name = "18Kami" + + override val lang = "en" + + override val baseUrl = "https://18kami.com" + + private val baseImageUrl = "$baseUrl/media/photos" + + override val supportsLatest = true + + override val client = network.cloudflareClient + + override fun headersBuilder() = super.headersBuilder().apply { + add("Referer", "$baseUrl/") + } + + override fun popularMangaRequest(page: Int): Request { + return GET("$baseUrl/albums?o=mv&page=$page", headers) + } + + override fun popularMangaParse(response: Response): MangasPage { + val document = response.asJsoup() + + val entries = document.select(".image-container") + val hasNextPage = document.selectFirst(".prevnext") != null + + return MangasPage(entries.map(::popularMangaFromElement), hasNextPage) + } + + private fun popularMangaFromElement(element: Element) = SManga.create().apply { + setUrlWithoutDomain(element.selectFirst("a:has(button)")!!.absUrl("href")) + title = element.selectFirst("img")!!.attr("title") + thumbnail_url = element.selectFirst("img")?.let { img -> + img.absUrl("src").takeIf { !it.contains("blank") } ?: img.absUrl("data-original") + } + } + + override fun latestUpdatesRequest(page: Int): Request { + return GET("$baseUrl/albums?o=mr&page=$page", headers) + } + + override fun latestUpdatesParse(response: Response) = popularMangaParse(response) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + if (query.isNotEmpty()) { + val url = "$baseUrl/search/photos".toHttpUrl().newBuilder().apply { + addQueryParameter("main_tag", "5") + addQueryParameter("search_query", query) + }.build() + return GET(url, headers) + } + val url = baseUrl.toHttpUrl().newBuilder().apply { + var type = "" + var search = false + filters.forEach { + when (it) { + is TypeFilter -> { + type = it.getValue() + } + + is SortFilter -> { + addQueryParameter("o", it.getValue()) + } + + is TimelineFilter -> { + addQueryParameter("t", it.getValue()) + } + + is TextFilter -> { + if (it.state.isNotBlank()) { + search = true + addQueryParameter("main_tag", "3") + addQueryParameter("search_query", it.state.replace(",", " ")) + } + } + else -> {} + } + } + addPathSegments(if (search) "search/photos" else "albums") + if (type.isNotEmpty()) addPathSegment(type) + }.build() + + return GET(url, headers) + } + + override fun searchMangaParse(response: Response) = popularMangaParse(response) + + override fun getFilterList() = getFilters() + + override fun mangaDetailsParse(response: Response) = SManga.create().apply { + val document = response.asJsoup() + + description = buildString { + val desc = document.selectFirst("div[class*=p-t-5]:contains(description:)")?.ownText()?.substringAfter(":") ?: "" + append(desc) + append("\n\n", document.select("div[class\$=p-b-5]:contains(Pages)").text()) + } + status = SManga.UNKNOWN + author = document.select("div[class*=p-t-5]:contains(Author) > div").eachText().joinToString() + genre = document.select("div[class*=p-t-5]:contains(Tags) > div:not(:contains(add))").eachText().joinToString() + } + + private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) + + override fun chapterListParse(response: Response): List { + val doc = response.asJsoup() + return doc.selectFirst(".episode")?.let { + it.select("ul > a").reversed().mapIndexed { index, element -> + SChapter.create().apply { + setUrlWithoutDomain("/photo/" + element.attr("data-album")) + name = "Chapter $index" + date_upload = try { + dateFormat.parse(element.selectFirst("span")!!.text())!!.time + } catch (_: Exception) { + 0L + } + } + } + } ?: listOf( + SChapter.create().apply { + setUrlWithoutDomain("/photo/" + doc.selectFirst("[id=album_id]")!!.attr("value")) + name = "Chapter 1" + date_upload = try { + dateFormat.parse(doc.selectFirst("[itemprop=datePublished]")!!.text().substringAfter(": "))!!.time + } catch (_: Exception) { + 0L + } + }, + ) + } + + override fun pageListParse(response: Response): List { + val document = response.asJsoup() + val contents = document.select("[id*=pageselect] > option") + + val id = response.request.url.toString().filter { it.isDigit() } + return contents.mapIndexed { idx, image -> + val filename = image.attr("data-page") + Page(idx, imageUrl = "$baseImageUrl/$id/$filename") + } + } + + override fun imageUrlParse(response: Response) = throw UnsupportedOperationException() +}