From 2611f03893927a9f0e2f6c09fba21276f90c7fa6 Mon Sep 17 00:00:00 2001 From: WebDitto <webditto@proton.me> Date: Sat, 27 Jul 2024 20:31:46 -0300 Subject: [PATCH] New Source: Otaku Animes --- src/pt/otakuanimes/AndroidManifest.xml | 27 ++ src/pt/otakuanimes/build.gradle | 12 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3506 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2016 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4550 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7980 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11106 bytes .../pt/otakuanimes/OtakuAnimes.kt | 234 ++++++++++++++++++ .../pt/otakuanimes/OtakuAnimesUrlActivity.kt | 46 ++++ 9 files changed, 319 insertions(+) create mode 100644 src/pt/otakuanimes/AndroidManifest.xml create mode 100644 src/pt/otakuanimes/build.gradle create mode 100644 src/pt/otakuanimes/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/pt/otakuanimes/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/pt/otakuanimes/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/pt/otakuanimes/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/pt/otakuanimes/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimes.kt create mode 100644 src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimesUrlActivity.kt diff --git a/src/pt/otakuanimes/AndroidManifest.xml b/src/pt/otakuanimes/AndroidManifest.xml new file mode 100644 index 00000000..b467aa92 --- /dev/null +++ b/src/pt/otakuanimes/AndroidManifest.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> + + <application> + <activity + android:name=".pt.otakuanimes.OtakuAnimesUrlActivity" + android:excludeFromRecents="true" + android:exported="true" + android:theme="@android:style/Theme.NoDisplay"> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:host="otakuanimesscc.com" + android:pathPattern="/..*" + android:scheme="https" /> + <data + android:host="otakuanimesscc.com" + android:pathPattern="/anime/..*" + android:scheme="https" /> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/src/pt/otakuanimes/build.gradle b/src/pt/otakuanimes/build.gradle new file mode 100644 index 00000000..cba7bfa4 --- /dev/null +++ b/src/pt/otakuanimes/build.gradle @@ -0,0 +1,12 @@ +ext { + extName = 'OtakuAnimes' + extClass = '.OtakuAnimes' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(":lib:playlist-utils")) +} diff --git a/src/pt/otakuanimes/res/mipmap-hdpi/ic_launcher.png b/src/pt/otakuanimes/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..713c126dcc92e8157db16cd70ec1c9a33c8b77d1 GIT binary patch literal 3506 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 literal 0 HcmV?d00001 diff --git a/src/pt/otakuanimes/res/mipmap-mdpi/ic_launcher.png b/src/pt/otakuanimes/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ce60d54165eb5ad63b0c44a2a9b3d2e7dbbfbe75 GIT binary patch literal 2016 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 literal 0 HcmV?d00001 diff --git a/src/pt/otakuanimes/res/mipmap-xhdpi/ic_launcher.png b/src/pt/otakuanimes/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c507c31fef806741a8a06104f98d577e2109f084 GIT binary patch literal 4550 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 literal 0 HcmV?d00001 diff --git a/src/pt/otakuanimes/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/otakuanimes/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d9a728a432c016d81b2ac0756c85431a118003 GIT binary patch literal 7980 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 VULU6ZsowyAqMVv+m9%-#{{bwbETsSd literal 0 HcmV?d00001 diff --git a/src/pt/otakuanimes/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/otakuanimes/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b10fec85d971efe35a51d4b842254096ebdced8e GIT binary patch literal 11106 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 literal 0 HcmV?d00001 diff --git a/src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimes.kt b/src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimes.kt new file mode 100644 index 00000000..cd5b6ca7 --- /dev/null +++ b/src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimes.kt @@ -0,0 +1,234 @@ +package eu.kanade.tachiyomi.animeextension.pt.otakuanimes + +import android.app.Application +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +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.playlistutils.PlaylistUtils +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.awaitSuccess +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class OtakuAnimes : ConfigurableAnimeSource, ParsedAnimeHttpSource() { + + override val name = "Otaku Animes" + + override val baseUrl = "https://otakuanimesscc.com" + + override val lang = "pt-BR" + + override val supportsLatest = true + + private val preferences by lazy { + Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + } + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", baseUrl) + .add("Origin", baseUrl) + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int) = GET(baseUrl, headers) + + override fun popularAnimeSelector() = "div.calendarioL div.ultAnisContainerItem > a" + + override fun popularAnimeFromElement(element: Element) = SAnime.create().apply { + setUrlWithoutDomain(element.attr("href")) + title = element.selectFirst("div.aniNome")!!.text().trim() + thumbnail_url = element.selectFirst("img")?.attr("data-lazy-src") + } + + override fun popularAnimeNextPageSelector() = null + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int) = + GET("$baseUrl/lista-de-animes/page/$page", headers) + + override fun latestUpdatesSelector() = "div.ultAnisContainer div.ultAnisContainerItem > a" + + override fun latestUpdatesFromElement(element: Element) = popularAnimeFromElement(element) + + override fun latestUpdatesNextPageSelector() = "div.paginacao a.next" + + // =============================== Search =============================== + override suspend fun getSearchAnime( + page: Int, + query: String, + filters: AnimeFilterList, + ): AnimesPage { + return if (query.startsWith(PREFIX_SEARCH)) { + val path = query.removePrefix(PREFIX_SEARCH) + client.newCall(GET("$baseUrl/$path")) + .awaitSuccess() + .use(::searchAnimeByIdParse) + } else { + super.getSearchAnime(page, query, filters) + } + } + + private fun searchAnimeByIdParse(response: Response): AnimesPage { + val details = animeDetailsParse(response).apply { + setUrlWithoutDomain(response.request.url.toString()) + initialized = true + } + + return AnimesPage(listOf(details), false) + } + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val url = "$baseUrl/page".toHttpUrl().newBuilder() + .addPathSegment(page.toString()) + .addQueryParameter("s", query) + .build() + + return GET(url, headers = headers) + } + + override fun searchAnimeSelector() = "div.SectionBusca div.ultAnisContainerItem > a" + + override fun searchAnimeFromElement(element: Element) = latestUpdatesFromElement(element) + + override fun searchAnimeNextPageSelector() = latestUpdatesNextPageSelector() + + // =========================== Anime Details ============================ + override fun animeDetailsParse(document: Document): SAnime { + val doc = getRealDoc(document) + + return SAnime.create().apply { + setUrlWithoutDomain(doc.location()) + title = doc.selectFirst("div.animeFirstContainer h1")!!.text() + thumbnail_url = doc.selectFirst("div.animeCapa img")?.attr("data-lazy-src") + description = doc.selectFirst("div.animeSecondContainer > p")?.text() + genre = doc.select("ul.animeGen li").eachText()?.joinToString(", ") + } + } + + // ============================== Episodes ============================== + override fun episodeListParse(response: Response): List<SEpisode> { + return getRealDoc(response.asJsoup()) + .select(episodeListSelector()) + .map(::episodeFromElement) + .reversed() + } + + override fun episodeListSelector() = "div.sectionEpiInAnime a" + + override fun episodeFromElement(element: Element) = SEpisode.create().apply { + setUrlWithoutDomain(element.attr("href")) + element.text().let { + name = it.trim() + episode_number = name.substringAfterLast(" ").toFloatOrNull() ?: 1F + } + } + + // ============================ Video Links ============================= + override fun videoListParse(response: Response): List<Video> { + val document = response.asJsoup() + + return document.select("#player iframe") + .parallelCatchingFlatMapBlocking { + getVideosFromURL(it.attr("src")) + } + } + + private val playlistUtils by lazy { PlaylistUtils(client) } + private fun getVideosFromURL(url: String): List<Video> { + return when { + "playerhls" in url -> { + return client.newCall(GET(url, headers)).execute().body.string() + .substringAfter("sources: [") + .substringBefore("],").split("{").drop(1).map { + val label = it.substringAfter("label: \"") + .substringBefore('"') + + val playlistUrl = it.substringAfter("file: '") + .substringBefore("'") + .replace("\\", "") + + return playlistUtils.extractFromHls( + playlistUrl, + videoNameGen = { label }, + ) + } + } + + else -> emptyList() + } + } + + override fun videoListSelector(): String { + throw UnsupportedOperationException() + } + + override fun videoFromElement(element: Element): Video { + throw UnsupportedOperationException() + } + + override fun videoUrlParse(document: Document): String { + throw UnsupportedOperationException() + } + + // ============================== Settings ============================== + override fun setupPreferenceScreen(screen: PreferenceScreen) { + ListPreference(screen.context).apply { + key = PREF_QUALITY_KEY + title = PREF_QUALITY_TITLE + entries = PREF_QUALITY_VALUES + entryValues = PREF_QUALITY_VALUES + setDefaultValue(PREF_QUALITY_DEFAULT) + summary = "%s" + setOnPreferenceChangeListener { _, newValue -> + val selected = newValue as String + val index = findIndexOfValue(selected) + val entry = entryValues[index] as String + preferences.edit().putString(key, entry).commit() + } + }.also(screen::addPreference) + } + + override fun List<Video>.sort(): List<Video> { + val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!! + return sortedWith( + compareBy( + { it.quality.contains(quality) }, + { REGEX_QUALITY.find(it.quality)?.groupValues?.get(1)?.toIntOrNull() ?: 0 }, + ), + ).reversed() + } + + // ============================= Utilities ============================== + private fun getRealDoc(document: Document): Document { + val menu = document.selectFirst("a.aniBack") + if (menu != null) { + val originalUrl = menu.parent()!!.attr("href") + val response = client.newCall(GET(originalUrl, headers)).execute() + return response.asJsoup() + } + + return document + } + + companion object { + const val PREFIX_SEARCH = "path:" + private val REGEX_QUALITY by lazy { Regex("""(\d+)p""") } + + private const val PREF_QUALITY_KEY = "preferred_quality" + private const val PREF_QUALITY_TITLE = "Qualidade preferida" + private const val PREF_QUALITY_DEFAULT = "720p" + private val PREF_QUALITY_VALUES = arrayOf("360p", "720p", "1080p") + } +} diff --git a/src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimesUrlActivity.kt b/src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimesUrlActivity.kt new file mode 100644 index 00000000..18c7da70 --- /dev/null +++ b/src/pt/otakuanimes/src/eu/kanade/tachiyomi/animeextension/pt/otakuanimes/OtakuAnimesUrlActivity.kt @@ -0,0 +1,46 @@ +package eu.kanade.tachiyomi.animeextension.pt.otakuanimes + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.os.Bundle +import android.util.Log +import kotlin.system.exitProcess + +/** + * Springboard that accepts https://otakuanimesscc.com/a/<slug> and https://otakuanimesscc.com/<id> intents + * and redirects them to the main Aniyomi process. + */ +class OtakuAnimesUrlActivity : Activity() { + + private val tag = javaClass.simpleName + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val pathSegments = intent?.data?.pathSegments + if (pathSegments != null && pathSegments.size > 0) { + val searchQuery = if (pathSegments.size > 1) { + "${pathSegments[0]}/${pathSegments[1]}" + } else { + pathSegments[0] + } + + val mainIntent = Intent().apply { + action = "eu.kanade.tachiyomi.ANIMESEARCH" + putExtra("query", "${OtakuAnimes.PREFIX_SEARCH}$searchQuery") + putExtra("filter", packageName) + } + + try { + startActivity(mainIntent) + } catch (e: ActivityNotFoundException) { + Log.e(tag, e.toString()) + } + } else { + Log.e(tag, "could not parse uri from intent $intent") + } + + finish() + exitProcess(0) + } +}