diff --git a/multisrc/overrides/animestream/minioppai/additional.gradle b/multisrc/overrides/animestream/minioppai/additional.gradle new file mode 100644 index 000000000..06365ffee --- /dev/null +++ b/multisrc/overrides/animestream/minioppai/additional.gradle @@ -0,0 +1,4 @@ +dependencies { + implementation(project(":lib-gdriveplayer-extractor")) + implementation(project(":lib-unpacker")) +} diff --git a/src/id/minioppai/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/animestream/minioppai/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from src/id/minioppai/res/mipmap-hdpi/ic_launcher.png rename to multisrc/overrides/animestream/minioppai/res/mipmap-hdpi/ic_launcher.png diff --git a/src/id/minioppai/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/animestream/minioppai/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from src/id/minioppai/res/mipmap-mdpi/ic_launcher.png rename to multisrc/overrides/animestream/minioppai/res/mipmap-mdpi/ic_launcher.png diff --git a/src/id/minioppai/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/animestream/minioppai/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from src/id/minioppai/res/mipmap-xhdpi/ic_launcher.png rename to multisrc/overrides/animestream/minioppai/res/mipmap-xhdpi/ic_launcher.png diff --git a/src/id/minioppai/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/animestream/minioppai/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from src/id/minioppai/res/mipmap-xxhdpi/ic_launcher.png rename to multisrc/overrides/animestream/minioppai/res/mipmap-xxhdpi/ic_launcher.png diff --git a/src/id/minioppai/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/animestream/minioppai/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from src/id/minioppai/res/mipmap-xxxhdpi/ic_launcher.png rename to multisrc/overrides/animestream/minioppai/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/src/id/minioppai/res/web_hi_res_512.png b/multisrc/overrides/animestream/minioppai/res/web_hi_res_512.png similarity index 100% rename from src/id/minioppai/res/web_hi_res_512.png rename to multisrc/overrides/animestream/minioppai/res/web_hi_res_512.png diff --git a/multisrc/overrides/animestream/minioppai/src/MiniOppai.kt b/multisrc/overrides/animestream/minioppai/src/MiniOppai.kt new file mode 100644 index 000000000..1687f8e16 --- /dev/null +++ b/multisrc/overrides/animestream/minioppai/src/MiniOppai.kt @@ -0,0 +1,125 @@ +package eu.kanade.tachiyomi.animeextension.id.minioppai + +import eu.kanade.tachiyomi.animeextension.id.minioppai.extractors.MiniOppaiExtractor +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList +import eu.kanade.tachiyomi.animesource.model.SAnime +import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.lib.gdriveplayerextractor.GdrivePlayerExtractor +import eu.kanade.tachiyomi.multisrc.animestream.AnimeStream +import eu.kanade.tachiyomi.network.GET +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale + +class MiniOppai : AnimeStream( + "id", + "MiniOppai", + "https://minioppai.org", +) { + override fun headersBuilder() = super.headersBuilder().add("Referer", baseUrl) + + override val animeListUrl = "$baseUrl/advanced-search" + + override val dateFormatter by lazy { + SimpleDateFormat("MMMM d, yyyy", Locale(lang)) + } + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int) = GET("$animeListUrl/page/$page/?order=popular") + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int) = GET("$animeListUrl/page/$page/?order=update") + + // ============================== Episodes ============================== + override fun episodeListSelector() = "div.epsdlist > ul > li > a" + + override fun episodeFromElement(element: Element): SEpisode { + return SEpisode.create().apply { + setUrlWithoutDomain(element.attr("href")) + element.selectFirst(".epl-num")!!.text().let { + val num = it.substringAfterLast(" ") + episode_number = num.toFloatOrNull() ?: 0F + name = when { + it.contains("OVA", true) -> "OVA $num" + else -> "Episode $num" + } + } + element.selectFirst(".epl-sub")?.text()?.let { scanlator = it } + date_upload = element.selectFirst(".epl-date")?.text().toDate() + } + } + + // ============================ Video Links ============================= + override fun getVideoList(url: String, name: String): List