From 0b3d1e6aeb55f9e4bb42d74964467fe902eb09bf Mon Sep 17 00:00:00 2001 From: beerpsi <92439990+beerpiss@users.noreply.github.com> Date: Tue, 6 Feb 2024 07:29:12 +0700 Subject: [PATCH] Add MIC MIC IDOL (#1013) * Add MIC MIC IDOL * Mark as NSFW * no need to convert to httpurl * spelling mistake * Add all tags to filter --- src/ja/micmicidol/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3080 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1802 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3956 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6765 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9334 bytes .../extension/ja/micmicidol/BloggerDto.kt | 49 +++++ .../extension/ja/micmicidol/MicMicIdol.kt | 182 ++++++++++++++++++ .../ja/micmicidol/MicMicIdolFilters.kt | 59 ++++++ 9 files changed, 298 insertions(+) create mode 100644 src/ja/micmicidol/build.gradle create mode 100644 src/ja/micmicidol/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/ja/micmicidol/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/ja/micmicidol/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/ja/micmicidol/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/ja/micmicidol/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/BloggerDto.kt create mode 100644 src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdol.kt create mode 100644 src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdolFilters.kt diff --git a/src/ja/micmicidol/build.gradle b/src/ja/micmicidol/build.gradle new file mode 100644 index 000000000..ff8fe12cc --- /dev/null +++ b/src/ja/micmicidol/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = "MIC MIC IDOL" + extClass = ".MicMicIdol" + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/ja/micmicidol/res/mipmap-hdpi/ic_launcher.png b/src/ja/micmicidol/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bf122a8d24076e6d8f03a4fbe5e3b26a171aa214 GIT binary patch literal 3080 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 P00000NkvXXu0mjf3Srek literal 0 HcmV?d00001 diff --git a/src/ja/micmicidol/res/mipmap-xxxhdpi/ic_launcher.png b/src/ja/micmicidol/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..22e1852f19443ea751ca6dd367a02fd3d4654235 GIT binary patch literal 9334 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 aEJay3^qD{BmG5~XKut+ou}a=5?Ee6%N>mO2 literal 0 HcmV?d00001 diff --git a/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/BloggerDto.kt b/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/BloggerDto.kt new file mode 100644 index 000000000..1f4bce077 --- /dev/null +++ b/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/BloggerDto.kt @@ -0,0 +1,49 @@ +package eu.kanade.tachiyomi.extension.ja.micmicidol + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BloggerDto( + val feed: BloggerFeedDto, +) + +@Serializable +data class BloggerFeedDto( + @SerialName("openSearch\$totalResults") val totalResults: BloggerTextDto, + @SerialName("openSearch\$startIndex") val startIndex: BloggerTextDto, + @SerialName("openSearch\$itemsPerPage") val itemsPerPage: BloggerTextDto, + val category: List = emptyList(), + val entry: List = emptyList(), +) + +@Serializable +data class BloggerFeedEntryDto( + val published: BloggerTextDto, + val category: List, + val title: BloggerTextDto, + val content: BloggerTextDto, + val link: List, + val author: List, +) + +@Serializable +data class BloggerLinkDto( + val rel: String, + val href: String, +) + +@Serializable +data class BloggerCategoryDto( + val term: String, +) + +@Serializable +data class BloggerAuthorDto( + val name: BloggerTextDto, +) + +@Serializable +data class BloggerTextDto( + @SerialName("\$t") val t: String, +) diff --git a/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdol.kt b/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdol.kt new file mode 100644 index 000000000..4baa08330 --- /dev/null +++ b/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdol.kt @@ -0,0 +1,182 @@ +package eu.kanade.tachiyomi.extension.ja.micmicidol + +import android.os.Build +import eu.kanade.tachiyomi.network.GET +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.model.UpdateStrategy +import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.Jsoup +import rx.Observable +import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat +import java.util.Locale + +class MicMicIdol : HttpSource() { + + override val name = "MIC MIC IDOL" + + override val baseUrl = "https://www.micmicidol.club" + + override val lang = "ja" + + override val supportsLatest = false + + override val client = network.cloudflareClient + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", "$baseUrl/") + + private val json: Json by injectLazy() + + private val dateFormat by lazy { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.getDefault()) + } else { + SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) + } + } + + override fun popularMangaRequest(page: Int) = GET(apiUrlBuilder(page).build(), headers) + + override fun popularMangaParse(response: Response): MangasPage { + val data = json.decodeFromString(response.body.string()) + + categories = data.feed.category.map { it.term } + + val manga = data.feed.entry.map { entry -> + val content = Jsoup.parseBodyFragment(entry.content.t, baseUrl) + + SManga.create().apply { + setUrlWithoutDomain(entry.link.first { it.rel == "alternate" }.href + "#${entry.published.t}") + title = entry.title.t + thumbnail_url = content.selectFirst("img")?.absUrl("src") + genre = entry.category.joinToString { it.term } + status = SManga.COMPLETED + update_strategy = UpdateStrategy.ONLY_FETCH_ONCE + initialized = true + } + } + val hasNextPage = (data.feed.startIndex.t.toInt() + data.feed.itemsPerPage.t.toInt()) <= data.feed.totalResults.t.toInt() + + return MangasPage(manga, hasNextPage) + } + + override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException() + + override fun latestUpdatesParse(response: Response) = throw UnsupportedOperationException() + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val filterList = filters.ifEmpty { getFilterList() } + val searchQuery = buildString { + filterList.filterIsInstance().forEach { + it.state + .filter { f -> f.state } + .forEach { f -> + append(" label:\"") + append(f.name) + append("\"") + } + } + + if (query.isNotEmpty()) { + append(" ") + append(query) + } + }.trim() + val url = apiUrlBuilder(page) + .addQueryParameter("q", searchQuery) + .build() + + return GET(url, headers) + } + + override fun searchMangaParse(response: Response) = popularMangaParse(response) + + override fun fetchMangaDetails(manga: SManga): Observable = Observable.just(manga) + + override fun getMangaUrl(manga: SManga) = "$baseUrl${manga.url}".substringBefore("#") + + override fun mangaDetailsRequest(manga: SManga) = throw UnsupportedOperationException() + + override fun mangaDetailsParse(response: Response) = throw UnsupportedOperationException() + + override fun fetchChapterList(manga: SManga): Observable> { + val date = manga.url.substringAfter("#") + + return Observable.just( + listOf( + SChapter.create().apply { + url = manga.url.substringBefore("#") + name = "Gallery" + date_upload = runCatching { + dateFormat.parse(date)!!.time + }.getOrDefault(0L) + }, + ), + ) + } + + override fun chapterListParse(response: Response) = throw UnsupportedOperationException() + + override fun pageListParse(response: Response): List { + val document = response.asJsoup() + + return document.select("div.post-body img").mapIndexed { i, it -> + Page(i, imageUrl = it.absUrl("src")) + } + } + + override fun imageUrlParse(response: Response) = throw UnsupportedOperationException() + + override fun getFilterList(): FilterList { + val types = getTypes() + val japanMagazines = getJapanMagazines() + val japanFashion = getJapanFashion() + + val filters = mutableListOf>( + LabelFilter("Type", types.map { Label(it) }), + LabelFilter("Japan Magazine", japanMagazines.map { Label(it) }), + LabelFilter("Japan Fashion", japanFashion.map { Label(it) }), + ).apply { + if (categories.isEmpty()) { + add(0, Filter.Header("Press 'Reset' to show extra filters")) + add(1, Filter.Separator()) + return@apply + } + + val others = categories + .filterNot { types.contains(it) || japanMagazines.contains(it) || japanFashion.contains(it) } + + add(LabelFilter("Other", others.map { Label(it) })) + } + + return FilterList(filters) + } + + private var categories = emptyList() + + private fun apiUrlBuilder(page: Int) = baseUrl.toHttpUrl().newBuilder().apply { + // Blogger indices start from 1 + val startIndex = MAX_RESULTS * (page - 1) + 1 + + addPathSegments("feeds/posts/default") + addQueryParameter("alt", "json") + addQueryParameter("max-results", MAX_RESULTS.toString()) + addQueryParameter("start-index", startIndex.toString()) + } + + companion object { + private const val MAX_RESULTS = 25 + } +} diff --git a/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdolFilters.kt b/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdolFilters.kt new file mode 100644 index 000000000..f1c8c46b9 --- /dev/null +++ b/src/ja/micmicidol/src/eu/kanade/tachiyomi/extension/ja/micmicidol/MicMicIdolFilters.kt @@ -0,0 +1,59 @@ +package eu.kanade.tachiyomi.extension.ja.micmicidol + +import eu.kanade.tachiyomi.source.model.Filter + +class LabelFilter(name: String, labels: List