From f4cbcef2dc76e6d0d5a4f6d1b09fde5e51f2a37c Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Fri, 17 Feb 2023 20:52:59 +0100 Subject: [PATCH] Add extension: AnimeDao (#1284) --- .../streamsbextractor/StreamSBExtractor.kt | 3 +- src/en/animedao/AndroidManifest.xml | 2 + src/en/animedao/build.gradle | 23 ++ .../animedao/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3147 bytes .../animedao/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1766 bytes .../animedao/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4164 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7368 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10320 bytes src/en/animedao/res/web_hi_res_512.png | Bin 0 -> 36890 bytes .../animeextension/en/animedao/AnimeDao.kt | 391 ++++++++++++++++++ .../en/animedao/AnimeDaoFilters.kt | 256 ++++++++++++ .../animedao/extractors/MixDropExtractor.kt | 27 ++ .../animedao/extractors/Mp4uploadExtractor.kt | 21 + .../extractors/VidstreamingExtractor.kt | 150 +++++++ 14 files changed, 872 insertions(+), 1 deletion(-) create mode 100644 src/en/animedao/AndroidManifest.xml create mode 100644 src/en/animedao/build.gradle create mode 100644 src/en/animedao/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/animedao/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/animedao/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/animedao/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/animedao/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/animedao/res/web_hi_res_512.png create mode 100644 src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/AnimeDao.kt create mode 100644 src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/AnimeDaoFilters.kt create mode 100644 src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/extractors/MixDropExtractor.kt create mode 100644 src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/extractors/Mp4uploadExtractor.kt create mode 100644 src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/extractors/VidstreamingExtractor.kt diff --git a/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt b/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt index ec965f115..400087579 100644 --- a/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt +++ b/lib/streamsb-extractor/src/main/java/eu/kanade/tachiyomi/lib/streamsbextractor/StreamSBExtractor.kt @@ -26,8 +26,9 @@ class StreamSBExtractor(private val client: OkHttpClient) { // animension, asianload and dramacool uses "common = false" private fun fixUrl(url: String, common: Boolean): String { - val sbUrl = url.substringBefore("/e/") + val sbUrl = url.substringBefore("/e/").substringBefore("/embed-") val id = url.substringAfter("/e/") + .substringAfter("/embed-") .substringBefore("?") .substringBefore(".html") return if (common) { diff --git a/src/en/animedao/AndroidManifest.xml b/src/en/animedao/AndroidManifest.xml new file mode 100644 index 000000000..acb4de356 --- /dev/null +++ b/src/en/animedao/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/en/animedao/build.gradle b/src/en/animedao/build.gradle new file mode 100644 index 000000000..f2ab315f5 --- /dev/null +++ b/src/en/animedao/build.gradle @@ -0,0 +1,23 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' + +ext { + extName = 'AnimeDao' + pkgNameSuffix = 'en.animedao' + extClass = '.AnimeDao' + extVersionCode = 1 + libVersion = '13' +} + +dependencies { + compileOnly libs.bundles.coroutines + implementation(project(':lib-streamtape-extractor')) + implementation(project(':lib-streamsb-extractor')) + implementation(project(':lib-fembed-extractor')) + implementation(project(':lib-dood-extractor')) + implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" +} + + +apply from: "$rootDir/common.gradle" diff --git a/src/en/animedao/res/mipmap-hdpi/ic_launcher.png b/src/en/animedao/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8984de5f54a1eaf29999ba2df3032819b324b6bb GIT binary patch literal 3147 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 literal 0 HcmV?d00001 diff --git a/src/en/animedao/res/mipmap-mdpi/ic_launcher.png b/src/en/animedao/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17e3f9ee778042ae1e3ad7a39c3baad739c9ed7b GIT binary patch literal 1766 zcmVn&WUK(A?Y{S5(A>nL^-r3C1_vazx8kfJEb{#v{opk7831mUDC%Y*ScdBK#HBMT9MWJ5#4 zF>`SiFNCo^%Y0sP&FAxVBq=`v6tt=O`ud|mT4x0kG%k#nFfJQ#zT@_QE|ri)z|8|e zV9xb*W&(9}b-D-sFE4-~0XO1$(2o2K>d`|*>)PcMia?MD!dTmDEJY%J^*D&MbO3kB zD9}#-3+aV7fZBb)L4rD%38YdfUk|te3PXsD!w(t`;_MY5jJXXo&QLNk$~-p}l)XFq zM3|E~3arz<oG6u3lvA85-$C=rs-oF>q+XB@k}5esZtsJ6B?v-UR5IRQ;5xWOYpYIz>`(Ub9n>jN)mK>6%#5GJ+& zNKsuw#7p_+1IWHG(<0!qM}+f$7w{k{K|BT0jKv^Mo(mcQG%T$Do<0HchQ%PwT8>+0 zW6?GFz15I=YpJVzj5XN^)YR0tW+5-&RzHFjC$@rk&(lD`Y85O70qxjf$h>qvNSJ;2 zD{nTmRIom^?3y;nf3c;g@-2}j8v(5Rd}F{t1UrOlCZSwb0ypGxGc5Z8mGpghA7oZe z2XX2G5T{X5Y2Y_w0#7rz2jutf^^5_$5T1Zv7AolcGLYI2TTH`*4I}SL=dMu2;yCjJ9Tae zqhMX-(>FnWV<84|3}T(TfE#L)m)-j0fFD1H?2=o2pZb^y#N%;y4^-7cY{fRwJY&f62jS1KYR8>{EdVo@6bk!$% zA?5&1n^86m@~iVf`D&|voo^ls(PbZEj7SEsJ~vtQkI|J`aVO-z+vXa;Hs^*T;2Hy% z>uF~dr_2Wd0RqqKdZ!I4+j%eKfBsTmk4rW}boFlF>IMaZCo<^=hU?D*ZqMPN2~<{A z24^7xi8)`G&;kOc$L!j9pdR?CuohZ8y8I*HN8T6+o(8DtQ;?pC1s=wZ?pZTPY{)}N zhzR&h;#iJHF1gZ_tN!^tq#qk&!RX)Xw(Cm}JRs74}WGVav5 zotvDBFEo9wTr$2~jr+quR|L73cz6>A$nqVOO?N4ou5Q2+Yj z+z|-vf%U)Z9>{&X0p!;nc4%9RRDd`Zi@WQlfcop#)&|DFfK5V?NTh5JK)hBDV(sK{ zERXSBPwxrO&B-s*d5|fO0ILVgEW!;NiMlui>XCyMj-axf!TL0WjesOcp*&y$_lgt0 zM^i@N;j)mOK)D-QDJi$}kl@)pAc|rr4+LeVGPLf+El@)AjxU7-a4Ut{Agcud54u03 z2YPY*#n|Zkfc3r1?F&r;zlN;ELHHb4e1r|=kN|^*Z^i+XlTTu^Hh8yhWHB5tgy(sD zaRbw^#l2=`@jwtNhU;Yc?bw!JqqLT>-{VGr`YN!|*U4&Zg{P5$J94-*ks#@$u@!x8 z_4-as{ZtE3E4%|4xPt)Gmq}{&+E7Py;lCOToMQ?rpZ6a459AA?eD8$1@c;k-07*qo IM6N<$g6lv!p8x;= literal 0 HcmV?d00001 diff --git a/src/en/animedao/res/mipmap-xhdpi/ic_launcher.png b/src/en/animedao/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e792a690500b42f920605e2000b765dfe7e47530 GIT binary patch literal 4164 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 Ag8%>k literal 0 HcmV?d00001 diff --git a/src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/AnimeDao.kt b/src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/AnimeDao.kt new file mode 100644 index 000000000..208246722 --- /dev/null +++ b/src/en/animedao/src/eu/kanade/tachiyomi/animeextension/en/animedao/AnimeDao.kt @@ -0,0 +1,391 @@ +package eu.kanade.tachiyomi.animeextension.en.animedao + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import androidx.preference.SwitchPreferenceCompat +import eu.kanade.tachiyomi.animeextension.en.animedao.extractors.MixDropExtractor +import eu.kanade.tachiyomi.animeextension.en.animedao.extractors.Mp4uploadExtractor +import eu.kanade.tachiyomi.animeextension.en.animedao.extractors.VidstreamingExtractor +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList +import eu.kanade.tachiyomi.animesource.model.AnimesPage +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.animesource.online.ParsedAnimeHttpSource +import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor +import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor +import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor +import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.runBlocking +import kotlinx.serialization.json.Json +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat +import java.util.Locale + +class AnimeDao : ConfigurableAnimeSource, ParsedAnimeHttpSource() { + + override val name = "AnimeDao" + + override val baseUrl by lazy { preferences.getString("preferred_domain", "https://animedao.to")!! } + + override val lang = "en" + + override val supportsLatest = true + + override val client: OkHttpClient = network.cloudflareClient + + private val json: Json by injectLazy() + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private val DateFormatter by lazy { + SimpleDateFormat("d MMMM yyyy", Locale.ENGLISH) + } + } + + // ============================== Popular =============================== + + override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/animelist/popular") + + override fun popularAnimeSelector(): String = "div.container > div.row > div.col-md-6" + + override fun popularAnimeNextPageSelector(): String? = null + + override fun popularAnimeFromElement(element: Element): SAnime { + val thumbnailUrl = element.selectFirst("img").attr("data-src") + + return SAnime.create().apply { + setUrlWithoutDomain(element.selectFirst("a").attr("href")) + thumbnail_url = if (thumbnailUrl.contains(baseUrl.toHttpUrl().host)) { + thumbnailUrl + } else { + baseUrl + thumbnailUrl + } + title = element.selectFirst("span.animename").text() + } + } + + // =============================== Latest =============================== + + override fun latestUpdatesRequest(page: Int): Request = GET(baseUrl) + + override fun latestUpdatesSelector(): String = "div#latest-tab-pane > div.row > div.col-md-6" + + override fun latestUpdatesNextPageSelector(): String? = popularAnimeNextPageSelector() + + override fun latestUpdatesFromElement(element: Element): SAnime { + val thumbnailUrl = element.selectFirst("img").attr("data-src") + + return SAnime.create().apply { + setUrlWithoutDomain(element.selectFirst("a.animeparent").attr("href")) + thumbnail_url = if (thumbnailUrl.contains(baseUrl.toHttpUrl().host)) { + thumbnailUrl + } else { + baseUrl + thumbnailUrl + } + title = element.selectFirst("span.animename").text() + } + } + + // =============================== Search =============================== + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = throw Exception("Not used") + + override fun fetchSearchAnime(page: Int, query: String, filters: AnimeFilterList): Observable { + val params = AnimeDaoFilters.getSearchParameters(filters) + return client.newCall(searchAnimeRequest(page, query, params)) + .asObservableSuccess() + .map { response -> + searchAnimeParse(response) + } + } + + override fun searchAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + + val animes = if (response.request.url.encodedPath.startsWith("/animelist/")) { + document.select(searchAnimeSelectorFilter()).map { element -> + searchAnimeFromElement(element) + } + } else { + document.select(searchAnimeSelector()).map { element -> + searchAnimeFromElement(element) + } + } + + val hasNextPage = searchAnimeNextPageSelector()?.let { selector -> + document.select(selector).first() + } != null + + return AnimesPage(animes, hasNextPage) + } + + private fun searchAnimeRequest(page: Int, query: String, filters: AnimeDaoFilters.FilterSearchParams): Request { + return if (query.isNotBlank()) { + val cleanQuery = query.replace(" ", "+") + GET("$baseUrl/search/?search=$cleanQuery", headers = headers) + } else { + var url = "$baseUrl/animelist/".toHttpUrlOrNull()!!.newBuilder() + .addQueryParameter("status[]=", filters.status) + .addQueryParameter("order[]=", filters.order) + .build().toString() + + if (filters.genre.isNotBlank()) url += "&${filters.genre}" + if (filters.rating.isNotBlank()) url += "&${filters.rating}" + if (filters.letter.isNotBlank()) url += "&${filters.letter}" + if (filters.year.isNotBlank()) url += "&${filters.year}" + if (filters.score.isNotBlank()) url += "&${filters.score}" + url += "&page=$page" + + GET(url, headers = headers) + } + } + + override fun searchAnimeSelector(): String = popularAnimeSelector() + + private fun searchAnimeSelectorFilter(): String = "div.container div.col-12 > div.row > div.col-md-6" + + override fun searchAnimeNextPageSelector(): String = "ul.pagination > li.page-item:has(i.fa-arrow-right):not(.disabled)" + + override fun searchAnimeFromElement(element: Element): SAnime = popularAnimeFromElement(element) + + // ============================== FILTERS =============================== + + override fun getFilterList(): AnimeFilterList = AnimeDaoFilters.filterList + + // =========================== Anime Details ============================ + + override fun animeDetailsParse(document: Document): SAnime { + val thumbnailUrl = document.selectFirst("div.card-body img").attr("data-src") + val moreInfo = document.select("div.card-body table > tbody > tr").joinToString("\n") { it.text() } + + return SAnime.create().apply { + title = document.selectFirst("div.card-body h2").text() + thumbnail_url = if (thumbnailUrl.contains(baseUrl.toHttpUrl().host)) { + thumbnailUrl + } else { + baseUrl + thumbnailUrl + } + status = document.selectFirst("div.card-body table > tbody > tr:has(>td:contains(Status)) td:not(:contains(Status))")?.let { + parseStatus(it.text()) + } ?: SAnime.UNKNOWN + description = (document.selectFirst("div.card-body div:has(>b:contains(Description))")?.ownText() ?: "") + "\n\n$moreInfo" + genre = document.select("div.card-body table > tbody > tr:has(>td:contains(Genres)) td > a").joinToString(", ") { it.text() } + } + } + + // ============================== Episodes ============================== + + override fun episodeListParse(response: Response): List { + return if (preferences.getBoolean("preferred_episode_sorting", false)) { + super.episodeListParse(response).sortedWith( + compareBy( + { it.episode_number }, + { it.name } + ) + ).reversed() + } else { + super.episodeListParse(response) + } + } + + override fun episodeListSelector(): String = "div#episodes-tab-pane > div.row > div > div.card" + + override fun episodeFromElement(element: Element): SEpisode { + val episodeName = element.selectFirst("span.animename").text() + val episodeTitle = element.selectFirst("div.animetitle")?.text() ?: "" + + return SEpisode.create().apply { + name = "$episodeName $episodeTitle" + episode_number = if (episodeName.contains("Episode ", true)) { + episodeName.substringAfter("Episode ").substringBefore(" ").toFloatOrNull() ?: 0F + } else { 0F } + date_upload = element.selectFirst("span.date")?.let { parseDate(it.text()) } ?: 0L + setUrlWithoutDomain(element.selectFirst("a[href]").attr("href")) + } + } + + // ============================ Video Links ============================= + + override fun videoListParse(response: Response): List