From 4587ac2c1da4beafc10ddb4e8b7dd2d089312650 Mon Sep 17 00:00:00 2001 From: tanaka-shizuku3 Date: Sun, 17 Aug 2025 21:21:09 +0800 Subject: [PATCH] Add toptoon.net (#10160) * Add toptoon.net * Use HttpSource * Use parseAs from core * Use SimpleDateFormat.tryParse * Use fragment for search query * Add "lock emoji" comment * Use plain class for dto * Fix MangaDto * Fix ThumbnailDto * Fix name * Fix extName * Update comment --- src/zh/toptoon/build.gradle | 8 ++ .../toptoon/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4443 bytes .../toptoon/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2351 bytes .../toptoon/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6610 bytes .../toptoon/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12433 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 19831 bytes .../tachiyomi/extension/zh/toptoon/Toptoon.kt | 134 ++++++++++++++++++ .../extension/zh/toptoon/ToptoonDto.kt | 45 ++++++ 8 files changed, 187 insertions(+) create mode 100644 src/zh/toptoon/build.gradle create mode 100644 src/zh/toptoon/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/zh/toptoon/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/zh/toptoon/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/zh/toptoon/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/zh/toptoon/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/zh/toptoon/src/eu/kanade/tachiyomi/extension/zh/toptoon/Toptoon.kt create mode 100644 src/zh/toptoon/src/eu/kanade/tachiyomi/extension/zh/toptoon/ToptoonDto.kt diff --git a/src/zh/toptoon/build.gradle b/src/zh/toptoon/build.gradle new file mode 100644 index 000000000..d9d5850ad --- /dev/null +++ b/src/zh/toptoon/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'Toptoon.net' + extClass = '.Toptoon' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/zh/toptoon/res/mipmap-hdpi/ic_launcher.png b/src/zh/toptoon/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b1b641515298e860b27b4649f3f4ce7b122899 GIT binary patch literal 4443 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 literal 0 HcmV?d00001 diff --git a/src/zh/toptoon/res/mipmap-mdpi/ic_launcher.png b/src/zh/toptoon/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..267315238daa6bafa8df45e30327b5de2a7ef573 GIT binary patch literal 2351 zcmV+~3DEY5P)qlTmj@*w1d<>Z@)X37oYOFBtF0y_1ri*sbkd4|GolW5R0_^mJMGkJ z!Eu}#ZPlSzZKngKt>o1L!&nG~5(gxKLXt~zq+pOd$mMyj{=dE5yWPD#*h_RW%(!zq zySLx&_x*nV-~Y9D9B%TByUFq6YXY;a;Pn(>V>;SrTO}W1@Cti~y;Q-ipIa2SK6maf zbS~G!@cQQXpQ3sAkN+rM3cW6l3pe@vN1t#EJR35f2lUU!sh!^EO7gFeK;Cck2XfT-w^atEW>c5eI_ahGy3~*D%M3`7nC-4oL zkQtW+HNPnp@DnJyqhGusXb}l-F*c;+0@rR3ypgz%%wW6%kr7Y@ue7Y>yTmo+*4Lt( zjF@Ny!HoQvPdkC8!sP)4{5~M+p>T_!OyWxZW28ZUo$M2wZ#o22fcx=D2Ew?G?7kWM zf20Z&C>2nt17C^jNaR+KW~!F=YK(yGV1C6;$`Bq}V=0}nCoqN%;s)`S;jG7-{(c_!( zKa#hc~wpO15|?nGwI4>8={j^xr3 ze70=|(!N)L*m-Hto8!>md;rNrJa%p>&hFfW#Tz!@*qU{`YIh$wgs!*Wfn(2yd@oet z=+qX(JOP>_`W+OPAp3g$I`Z}Ea@kY#Fy9OS;4)$HI)JK+e()hiJ35fPX%kLu{Rzq%{*FT>WypSF6LcmM(kd!&{E-?MlM}J{De91E-slAx z(9_st-z6Mdy^aTLYxo;JZ)}GBjat78X(w=EjWDleTedS;3N02HU1SR zezXy$)KnDy=4D(xas&y5Md*6xJSo+GZ(Ea`g=zQZ%cm{_EyEMxPHAgH=feI}xc0`EPEJ@qJvJR)C zqQ#0LA!q8cdSjTA0_(F|v9M|_S{~hqVX6oIEfNYfvafUyoD!_x~3AD>mG#OVy3LN2&0ZZ ze75}s41UtWk4H?PA*V2;8};cpSc>o9Yl0yrIt00lh*XUL=pfs;!dyN>9kP|da%U-Q ze|QhQf7y%CPCJH9pT-cSVUGEeY>Pkvo`B+c)&uD*@i15{aE&;5%Wy_LZ)07oiFXI) zT2VyK;~ay_IRbrL9DnW|9fgm^W9O&wv0~27Mh<1TqYtk~S>0ar?%jv;Kl>#;A8Z|@ zZ-kL6U{xyMmw)a<)i6*YizZi^92-&JstTweu}A4Cq~YmL+ggec|!y?X}cc0s6CA~Fam0mP!{6* zBkC5t%r`yMnUZCFZV#yt11~jWjA#^P9WPZ`*7SK@F1`qQJuc`eMY_kwkycrOWv{-B zq4u*lR`no!<5QBKUP7ZPas?I_D7sOVNtFZ@-(@d7k{5I~Q`+iPure1~wVG!xhjSZw3e((5)Gx}@t^hNxjEqtt2?*&Mo_MYru!;;SXg7TVDvQWLiwjD?OL?dP z=atc7`QY5z31sJnRp5reRa_aQgiI3# z&{tw{+2TI*xmo*zLcgnRMKleoSG8;mS01U6vpec zUZywkvCA%3-Ru2VUhKl8gPvpWmw`=<0Q(gwmUav6X4(z3&(>e9%tGu>J@&sCy~~1r z5)8TzV-XG*yUu{?X=j9HlK}H~w?HIBa;?C$-lx?wwBC2aiZ@%pv=X@CeK$RU{{xSq Ve0*#=85jTn002ovPDHLkV1j2qbA12+ literal 0 HcmV?d00001 diff --git a/src/zh/toptoon/res/mipmap-xhdpi/ic_launcher.png b/src/zh/toptoon/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..922e68b8091319910fcf8e87d1bd79476dbaacfa GIT binary patch literal 6610 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 Qq5uE@07*qoM6N<$g1OI#&;S4c literal 0 HcmV?d00001 diff --git a/src/zh/toptoon/res/mipmap-xxhdpi/ic_launcher.png b/src/zh/toptoon/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..40dcbf062c9a8aafac4ee86a3372b61854408cce GIT binary patch literal 12433 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´pLzg= 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 iU{6_zWIuMx4E#StQ-emKr*p&r0000().adult.map { + it.toSManga() + } + return MangasPage(mangas, false) + } + + // Latest + + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/search", headers) + + override fun latestUpdatesParse(response: Response): MangasPage { + val jsonUrl = response.body.string() + .substringAfter("var jsonFileUrl = '") + .substringBefore("'") + val jsonResponse = client.newCall(GET("https:$jsonUrl", headers)).execute() + val mangas = jsonResponse.parseAs>().values + .sortedByDescending { it.lastUpdated.pubDate } + .map { + it.toSManga() + } + return MangasPage(mangas, false) + } + + // Search + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/search#$query", headers) + + override fun searchMangaParse(response: Response): MangasPage { + val query = response.request.url.fragment!! + val jsonUrl = response.body.string() + .substringAfter("var jsonFileUrl = '") + .substringBefore("'") + val jsonResponse = client.newCall(GET("https:$jsonUrl", headers)).execute() + val mangas = jsonResponse.parseAs>().values + .map { + it.toSManga() + } + .filter { it.title.contains(query, true) || it.author!!.contains(query, true) } + return MangasPage(mangas, false) + } + + // Details + + override fun mangaDetailsParse(response: Response): SManga = SManga.create().apply { + val document = response.asJsoup() + title = document.selectFirst("section.infoContent div.title")!!.text() + thumbnail_url = document.selectFirst("div.comicThumb img")!!.absUrl("src") + author = document.selectFirst("section.infoContent div.etc")!!.text() + .substringAfter("作家 : ").substringBefore("|") + description = document.selectFirst("div.comic_story div.desc")!!.text() + genre = document.selectFirst("section.infoContent div.hashTag")?.text() + ?.replace("#", ", ") + if (document.selectFirst("div.etc span.comicDayBox") != null) { + status = SManga.ONGOING + } else if (document.selectFirst("div.hashTag a[href=/search/keyword/79]") != null) { + status = SManga.COMPLETED + } + } + + // Chapters + + override fun chapterListParse(response: Response): List { + if (response.request.url.pathSegments[0].isEmpty()) { + throw Exception("请到WebView确认年满18岁") + } + val document = response.asJsoup() + return document.select("section.episode_area ul.list_area li.episodeBox").map { + SChapter.create().apply { + setUrlWithoutDomain(it.selectFirst("a")!!.absUrl("href")) + name = if (it.selectFirst("button.coin, button.gift, button.waitFree") != null) { + "\uD83D\uDD12" // lock emoji + } else { + "" + } + it.selectFirst("div.title")!!.text() + " " + + it.selectFirst("div.subTitle")!!.text() + date_upload = dateFormat.tryParse(it.selectFirst("div.pubDate")?.text()) + } + }.asReversed() + } + + // Pages + + override fun pageListParse(response: Response): List { + val pathSegments = response.request.url.pathSegments + if (pathSegments[0].isEmpty()) { + throw Exception("请到WebView确认年满18岁") + } else if (pathSegments.size < 2 || pathSegments[1] != "epView") { + throw Exception("请确认是否已登录解锁") + } + val document = response.asJsoup() + val images = document.select("article.epContent section.imgWrap div.cImg img") + return images.mapIndexed { index, img -> + Page(index, imageUrl = img.absUrl("data-src")) + } + } + + override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException() + + private val dateFormat by lazy { + SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) + } +} diff --git a/src/zh/toptoon/src/eu/kanade/tachiyomi/extension/zh/toptoon/ToptoonDto.kt b/src/zh/toptoon/src/eu/kanade/tachiyomi/extension/zh/toptoon/ToptoonDto.kt new file mode 100644 index 000000000..d1c0d4d6a --- /dev/null +++ b/src/zh/toptoon/src/eu/kanade/tachiyomi/extension/zh/toptoon/ToptoonDto.kt @@ -0,0 +1,45 @@ +package eu.kanade.tachiyomi.extension.zh.toptoon + +import eu.kanade.tachiyomi.source.model.SManga +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.jsonPrimitive + +@Serializable +class PopularResponseDto(val adult: List) + +@Serializable +class MangaDto( + private val meta: MetaDto, + private val thumbnail: ThumbnailDto, + private val id: String, + val lastUpdated: LastUpdatedDto, +) { + fun toSManga() = SManga.create().apply { + url = "/comic/epList/$id" + title = meta.title + author = meta.author.authorString + thumbnail_url = thumbnail.url + } +} + +@Serializable +class MetaDto(val title: String, val author: AuthorDto) + +@Serializable +class AuthorDto(val authorString: String) + +@Serializable +class ThumbnailDto(private val standard: JsonElement) { + // "standard" in json can be either string or array + val url get() = when (standard) { + is JsonPrimitive -> "https://tw-contents-image.toptoon.net${standard.content}" + is JsonArray -> "https://tw-contents-image.toptoon.net${standard[0].jsonPrimitive.content}" + else -> throw Exception("Unexpected JSON type") + } +} + +@Serializable +class LastUpdatedDto(val pubDate: String)