From 42a448d15ffd3cb0f4d550d9787ce8cbf6ffa72a Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:36:36 +0700 Subject: [PATCH] Add Source MimiHentai (#9726) * Add Mimihentai * Delete PageDTO.kt * Delete ChapterDTO & use getMangaUrl * Use Page parseAs * delete client * used getChapterUrl as instructed stevenyomi * use toManga * imageUrlParse throw UnsupportedOperationException() Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com> * Fix various issues --------- Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com> --- src/vi/mimihentai/build.gradle | 7 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5909 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3045 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 8843 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 17244 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 26310 bytes .../tachiyomi/extension/vi/mimihentai/Dto.kt | 64 ++++++ .../extension/vi/mimihentai/MiMiHentai.kt | 182 ++++++++++++++++++ 8 files changed, 253 insertions(+) create mode 100644 src/vi/mimihentai/build.gradle create mode 100644 src/vi/mimihentai/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/vi/mimihentai/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/vi/mimihentai/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/vi/mimihentai/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/vi/mimihentai/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/vi/mimihentai/src/eu/kanade/tachiyomi/extension/vi/mimihentai/Dto.kt create mode 100644 src/vi/mimihentai/src/eu/kanade/tachiyomi/extension/vi/mimihentai/MiMiHentai.kt diff --git a/src/vi/mimihentai/build.gradle b/src/vi/mimihentai/build.gradle new file mode 100644 index 000000000..7f7ee97c3 --- /dev/null +++ b/src/vi/mimihentai/build.gradle @@ -0,0 +1,7 @@ +ext { + extName = "MiMiHentai" + extClass = ".MiMiHentai" + extVersionCode = 1 + isNsfw = true +} +apply from: "$rootDir/common.gradle" diff --git a/src/vi/mimihentai/res/mipmap-hdpi/ic_launcher.png b/src/vi/mimihentai/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dd79537a35265c7668111efa3988d906433116 GIT binary patch literal 5909 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 literal 0 HcmV?d00001 diff --git a/src/vi/mimihentai/res/mipmap-xhdpi/ic_launcher.png b/src/vi/mimihentai/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b453b2e1b6ea0619f1e0151ed2cf70ddad2e26a4 GIT binary patch literal 8843 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 literal 0 HcmV?d00001 diff --git a/src/vi/mimihentai/res/mipmap-xxxhdpi/ic_launcher.png b/src/vi/mimihentai/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..47ef718429be09498dab20d26864953db13bd64d GIT binary patch literal 26310 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, + val totalPage: Long, + val currentPage: Long, +) + +@Serializable +class MangaDto( + private val id: Long, + private val title: String, + private val coverUrl: String, + private val description: String, + private val authors: List, + private val genres: List, +) { + fun toSManga(): SManga = SManga.create().apply { + title = this@MangaDto.title + thumbnail_url = coverUrl + url = "$id" + description = this@MangaDto.description + author = authors.joinToString { i -> i.name } + genre = genres.joinToString { i -> i.name } + initialized = true + } +} + +@Serializable +class Author( + val name: String, +) + +@Serializable +class Genre( + val name: String, +) + +@Serializable +class ChapterDto( + private val id: Long, + private val title: String, + private val createdAt: String, +) { + fun toSChapter(mangaId: String): SChapter = SChapter.create().apply { + name = title + date_upload = dateFormat.tryParse(createdAt) + url = "$mangaId/$id" + } +} +private val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS", Locale.US) + +@Serializable +class PageListDto( + val pages: List, +) diff --git a/src/vi/mimihentai/src/eu/kanade/tachiyomi/extension/vi/mimihentai/MiMiHentai.kt b/src/vi/mimihentai/src/eu/kanade/tachiyomi/extension/vi/mimihentai/MiMiHentai.kt new file mode 100644 index 000000000..809e384d0 --- /dev/null +++ b/src/vi/mimihentai/src/eu/kanade/tachiyomi/extension/vi/mimihentai/MiMiHentai.kt @@ -0,0 +1,182 @@ +package eu.kanade.tachiyomi.extension.vi.mimihentai + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.model.Filter +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 keiyoushi.utils.parseAs +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import rx.Observable + +class MiMiHentai : HttpSource() { + override val name: String = "MiMiHentai" + + override val lang: String = "vi" + + override val baseUrl: String = "https://mimihentai.com" + + private val apiUrl: String = "$baseUrl/api/v1/manga" + + override val supportsLatest: Boolean = true + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", "$baseUrl/") + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .rateLimit(3) + .build() + + override fun latestUpdatesRequest(page: Int): Request = GET( + apiUrl.toHttpUrl().newBuilder().apply { + addPathSegments("tatcatruyen") + addQueryParameter("page", page.toString()) + addQueryParameter("sort", "updated_at") + }.build(), + headers, + ) + + override fun latestUpdatesParse(response: Response): MangasPage { + val res = response.parseAs() + val hasNextPage = res.currentPage != res.totalPage + return MangasPage(res.data.map { it.toSManga() }, hasNextPage) + } + + override fun getMangaUrl(manga: SManga): String = "$baseUrl/g/${manga.url}" + + override fun chapterListRequest(manga: SManga): Request { + val id = manga.url.substringAfterLast("/") + val url = apiUrl.toHttpUrl().newBuilder() + .addPathSegment("gallery") + .addPathSegment(id) + .build() + return GET(url, headers) + } + + override fun chapterListParse(response: Response): List { + val segments = response.request.url.pathSegments + val mangaId = segments.last() + val res = response.parseAs>() + return res.map { it.toSChapter(mangaId) } + } + + override fun getChapterUrl(chapter: SChapter): String { + val mangaId = chapter.url.substringBefore('/') + val chapterId = chapter.url.substringAfter('/') + return "$baseUrl/g/$mangaId/chapter/$chapterId" + } + + override fun imageUrlParse(response: Response) = throw UnsupportedOperationException() + + override fun mangaDetailsRequest(manga: SManga): Request { + val id = manga.url.substringAfterLast("/") + val url = apiUrl.toHttpUrl().newBuilder() + .addPathSegment("info") + .addPathSegment(id) + .build() + return GET(url, headers) + } + + override fun mangaDetailsParse(response: Response): SManga { + val res = response.parseAs() + return res.toSManga() + } + + override fun pageListRequest(chapter: SChapter): Request { + return GET("$apiUrl/chapter?id=${chapter.url.substringAfterLast("/")}", headers) + } + + override fun pageListParse(response: Response): List { + val res = response.parseAs() + return res.pages.mapIndexed { index, url -> + Page(index, imageUrl = url) + } + } + + override fun popularMangaParse(response: Response): MangasPage = latestUpdatesParse(response) + + override fun popularMangaRequest(page: Int): Request = GET( + apiUrl.toHttpUrl().newBuilder().apply { + addPathSegments("tatcatruyen") + addQueryParameter("page", page.toString()) + addQueryParameter("sort", "views") + }.build(), + headers, + ) + + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + return when { + query.startsWith(PREFIX_ID_SEARCH) -> { + val id = query.removePrefix(PREFIX_ID_SEARCH) + client.newCall(searchMangaByIdRequest(id)) + .asObservableSuccess() + .map { response -> searchMangaByIdParse(response) } + } + query.toIntOrNull() != null -> { + client.newCall(searchMangaByIdRequest(query)) + .asObservableSuccess() + .map { response -> searchMangaByIdParse(response) } + } + else -> super.fetchSearchManga(page, query, filters) + } + } + private fun searchMangaByIdRequest(id: String) = GET("$apiUrl/info/$id", headers) + + override fun searchMangaParse(response: Response): MangasPage = popularMangaParse(response) + + private fun searchMangaByIdParse(response: Response): MangasPage { + val details = mangaDetailsParse(response) + return MangasPage(listOf(details), false) + } + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = apiUrl.toHttpUrl().newBuilder().apply { + addPathSegments("search") + addQueryParameter("page", page.toString()) + addQueryParameter("name", query) + + (if (filters.isEmpty()) getFilterList() else filters).forEach { filters -> + when (filters) { + is SortByList -> + { + val sort = getSortByList()[filters.state] + addQueryParameter("sort", sort.id) + } + + else -> {} + } + } + }.build() + return GET(url, headers) + } + + private class SortByList(sort: Array) : Filter.Select("Sắp xếp", sort) + private class SortBy(name: String, val id: String) : Filter.CheckBox(name) { + override fun toString(): String { + return name + } + } + + override fun getFilterList() = FilterList( + SortByList(getSortByList()), + ) + + private fun getSortByList() = arrayOf( + SortBy("Mới", "updated_at"), + SortBy("Likes", "likes"), + SortBy("Views", "views"), + SortBy("Lưu", "follows"), + SortBy("Tên", "title"), + ) + companion object { + private const val PREFIX_ID_SEARCH = "id:" + } +}