From 30ce4ab0a1fe61ef7a8c0a90ef9cdb8ba8f8cba4 Mon Sep 17 00:00:00 2001 From: imper1aldev <23511335+imper1aldev@users.noreply.github.com> Date: Mon, 13 Jan 2025 03:47:28 -0600 Subject: [PATCH] EstrenosDoramas added Closes #318 --- src/es/estrenosdoramas/build.gradle | 16 ++ .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3238 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1604 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4964 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9746 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 15842 bytes .../es/estrenosdoramas/EstrenosDoramas.kt | 220 ++++++++++++++++ .../estrenosdoramas/EstrenosDoramasFilters.kt | 237 ++++++++++++++++++ 8 files changed, 473 insertions(+) create mode 100644 src/es/estrenosdoramas/build.gradle create mode 100644 src/es/estrenosdoramas/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/estrenosdoramas/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/estrenosdoramas/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/estrenosdoramas/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/estrenosdoramas/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramas.kt create mode 100644 src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramasFilters.kt diff --git a/src/es/estrenosdoramas/build.gradle b/src/es/estrenosdoramas/build.gradle new file mode 100644 index 00000000..6b707d95 --- /dev/null +++ b/src/es/estrenosdoramas/build.gradle @@ -0,0 +1,16 @@ +ext { + extName = 'EstrenosDoramas' + extClass = '.EstrenosDoramas' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(':lib:okru-extractor')) + implementation(project(':lib:streamwish-extractor')) + implementation(project(':lib:streamhidevid-extractor')) + implementation(project(':lib:voe-extractor')) + implementation(project(':lib:yourupload-extractor')) + implementation(project(':lib:vidguard-extractor')) +} \ No newline at end of file diff --git a/src/es/estrenosdoramas/res/mipmap-hdpi/ic_launcher.png b/src/es/estrenosdoramas/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6014a2da130c5ecf334eea89f637042d93db7b GIT binary patch literal 3238 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 Y1^Yu>$g|?BOaK4?07*qoM6N<$g3sqyy#N3J literal 0 HcmV?d00001 diff --git a/src/es/estrenosdoramas/res/mipmap-mdpi/ic_launcher.png b/src/es/estrenosdoramas/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fb32665b15d0e653258f03e06fea626ed3596741 GIT binary patch literal 1604 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 CizK}O literal 0 HcmV?d00001 diff --git a/src/es/estrenosdoramas/res/mipmap-xhdpi/ic_launcher.png b/src/es/estrenosdoramas/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c64a8b267c4058e0336cf4f89003f15d144b9314 GIT binary patch literal 4964 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 literal 0 HcmV?d00001 diff --git a/src/es/estrenosdoramas/res/mipmap-xxhdpi/ic_launcher.png b/src/es/estrenosdoramas/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..aafd62f165e5554546fb1ea74af579ca75128369 GIT binary patch literal 9746 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 literal 0 HcmV?d00001 diff --git a/src/es/estrenosdoramas/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/estrenosdoramas/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fe054ec2b1b1548d7616d91aa0000098a8263ea6 GIT binary patch literal 15842 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 F{{#8-XUqTq literal 0 HcmV?d00001 diff --git a/src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramas.kt b/src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramas.kt new file mode 100644 index 00000000..8f94f8c2 --- /dev/null +++ b/src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramas.kt @@ -0,0 +1,220 @@ +package eu.kanade.tachiyomi.animeextension.es.estrenosdoramas + +import android.app.Application +import android.content.SharedPreferences +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.AnimeHttpSource +import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor +import eu.kanade.tachiyomi.lib.streamhidevidextractor.StreamHideVidExtractor +import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor +import eu.kanade.tachiyomi.lib.vidguardextractor.VidGuardExtractor +import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor +import eu.kanade.tachiyomi.lib.youruploadextractor.YourUploadExtractor +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class EstrenosDoramas : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "EstrenosDoramas" + + override val baseUrl = "https://estrenosdoramas.es" + + override val lang = "es" + + override val supportsLatest = true + + private val preferences: SharedPreferences by lazy { + Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private const val PREF_QUALITY_KEY = "preferred_quality" + private const val PREF_QUALITY_DEFAULT = "1080" + private val QUALITY_LIST = arrayOf("1080", "720", "480", "360") + + private const val PREF_SERVER_KEY = "preferred_server" + private const val PREF_SERVER_DEFAULT = "Voe" + private val SERVER_LIST = arrayOf( + "StreamWish", + "Voe", + "Okru", + "YourUpload", + "FileLions", + "StreamHideVid", + "VidGuard", + ) + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + return SAnime.create().apply { + title = document.selectFirst(".entry-title")?.text()?.trim() ?: "" + description = document.selectFirst(".mindesc")?.text()?.trim() + genre = document.select(".genxed a").joinToString { it.text() } + thumbnail_url = document.selectFirst(".thumb img")?.attr("abs:src") + document.select(".spe > span").map { + val title = it.select("b").text() + when { + title.contains("Estado") -> status = it.ownText().getStatus() + title.contains("Casts") -> artist = it.select("a").joinToString { it.text() } + title.contains("Network") -> author = it.select("a").joinToString { it.text() } + } + } + } + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/temporadas/?page=$page&order=popular", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select(".listupd article a") + val nextPage = document.select(".hpage .r, .pagination .next").any() + val animeList = elements.map { element -> + SAnime.create().apply { + setUrlWithoutDomain(element.attr("abs:href")) + title = element.attr("title") + thumbnail_url = element.selectFirst("img")!!.attr("abs:src") + } + } + return AnimesPage(animeList, nextPage) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/temporadas/?page=$page&order=latest", headers) + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val params = EstrenosDoramasFilters.getSearchParameters(filters) + return when { + query.isNotBlank() -> GET("$baseUrl/page/$page/?s=$query", headers) + params.filter.isNotBlank() -> GET("$baseUrl/temporadas/${params.getQuery()}&page=$page", headers) + else -> popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response) = popularAnimeParse(response) + + override fun episodeListParse(response: Response): List<SEpisode> { + val document = response.asJsoup() + return document.select("#myList li a").mapIndexed { idx, it -> + val title = it.select(".epl-title").text().trim() + val epNumber = try { + """(\d+(\.\d+)?)""".toRegex().find(title)?.groupValues?.get(1)?.toFloat() ?: (idx + 1f) + } catch (_: Exception) { idx + 1f } + + SEpisode.create().apply { + episode_number = epNumber + name = title + scanlator = it.select(".epl-sub span").joinToString { it.text() } + setUrlWithoutDomain(it.attr("abs:href")) + } + } + } + + override fun videoListParse(response: Response): List<Video> { + val document = response.asJsoup() + return document.select("[data-embed]").parallelCatchingFlatMapBlocking { + val link = it.attr("data-embed") + val realLink = fetchUrls(client.newCall(GET(link)).execute().networkResponse.toString()).firstOrNull() + serverVideoResolver(realLink?.ifEmpty { link } ?: "") + } + } + + /*--------------------------------Video extractors------------------------------------*/ + private val okruExtractor by lazy { OkruExtractor(client) } + private val streamWishExtractor by lazy { StreamWishExtractor(client, headers) } + private val streamHideVidExtractor by lazy { StreamHideVidExtractor(client) } + private val voeExtractor by lazy { VoeExtractor(client) } + private val yourUploadExtractor by lazy { YourUploadExtractor(client) } + private val vidGuardExtractor by lazy { VidGuardExtractor(client) } + + private fun serverVideoResolver(url: String): List<Video> { + return when { + arrayOf("ok.ru", "okru").any(url) -> okruExtractor.videosFromUrl(url) + arrayOf("filelions", "lion", "fviplions").any(url) -> streamWishExtractor.videosFromUrl(url, videoNameGen = { "FileLions:$it" }) + arrayOf("wishembed", "streamwish", "strwish", "wish").any(url) -> streamWishExtractor.videosFromUrl(url, videoNameGen = { "StreamWish:$it" }) + arrayOf("vidhide", "streamhide", "guccihide", "streamvid").any(url) -> streamHideVidExtractor.videosFromUrl(url) + arrayOf("voe", "robertordercharacter", "donaldlineelse").any(url) -> voeExtractor.videosFromUrl(url) + arrayOf("yourupload", "upload").any(url) -> yourUploadExtractor.videoFromUrl(url, headers = headers) + arrayOf("vembed", "guard", "listeamed", "bembed", "vgfplay").any(url) -> vidGuardExtractor.videosFromUrl(url) + else -> emptyList() + } + } + + override fun List<Video>.sort(): List<Video> { + val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!! + val server = preferences.getString(PREF_SERVER_KEY, PREF_SERVER_DEFAULT)!! + return this.sortedWith( + compareBy( + { it.quality.contains(server, true) }, + { it.quality.contains(quality) }, + { Regex("""(\d+)p""").find(it.quality)?.groupValues?.get(1)?.toIntOrNull() ?: 0 }, + ), + ).reversed() + } + + override fun getFilterList(): AnimeFilterList = EstrenosDoramasFilters.FILTER_LIST + + private fun Array<String>.any(url: String): Boolean = this.any { url.contains(it, ignoreCase = true) } + + private fun String.getStatus(): Int { + val status = this.trim() + return when { + status.contains("Ongoing") -> SAnime.ONGOING + status.contains("Completed") -> SAnime.COMPLETED + else -> SAnime.UNKNOWN + } + } + + private fun fetchUrls(text: String?): List<String> { + if (text.isNullOrEmpty()) return listOf() + val linkRegex = "(http|ftp|https):\\/\\/([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])".toRegex() + return linkRegex.findAll(text).map { it.value.trim().removeSurrounding("\"") }.toList() + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + ListPreference(screen.context).apply { + key = PREF_SERVER_KEY + title = "Preferred server" + entries = SERVER_LIST + entryValues = SERVER_LIST + setDefaultValue(PREF_SERVER_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) + + ListPreference(screen.context).apply { + key = PREF_QUALITY_KEY + title = "Preferred quality" + entries = QUALITY_LIST + entryValues = QUALITY_LIST + 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) + } +} diff --git a/src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramasFilters.kt b/src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramasFilters.kt new file mode 100644 index 00000000..2f05a12d --- /dev/null +++ b/src/es/estrenosdoramas/src/eu/kanade/tachiyomi/animeextension/es/estrenosdoramas/EstrenosDoramasFilters.kt @@ -0,0 +1,237 @@ +package eu.kanade.tachiyomi.animeextension.es.estrenosdoramas + +import eu.kanade.tachiyomi.animesource.model.AnimeFilter +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList + +object EstrenosDoramasFilters { + open class QueryPartFilter(displayName: String, val vals: Array<Pair<String, String>>) : AnimeFilter.Select<String>( + displayName, + vals.map { it.first }.toTypedArray(), + ) { + fun toQueryPart(name: String) = vals[state].second.takeIf { it.isNotEmpty() }?.let { "&$name=${vals[state].second}" } ?: run { "" } + } + + open class CheckBoxFilterList(name: String, values: List<CheckBox>) : AnimeFilter.Group<AnimeFilter.CheckBox>(name, values) + + private class CheckBoxVal(name: String, state: Boolean = false) : AnimeFilter.CheckBox(name, state) + + private inline fun <reified R> AnimeFilterList.parseCheckbox( + options: Array<Pair<String, String>>, + name: String, + ): String { + return (this.getFirst<R>() as CheckBoxFilterList).state + .mapNotNull { checkbox -> + if (checkbox.state) { + options.find { it.first == checkbox.name }!!.second + } else { + null + } + }.joinToString("&$name[]=").let { + if (it.isBlank()) { + "" + } else { + "&$name[]=$it" + } + } + } + + private inline fun <reified R> AnimeFilterList.asQueryPart(name: String): String { + return (this.getFirst<R>() as QueryPartFilter).toQueryPart(name) + } + + private inline fun <reified R> AnimeFilterList.getFirst(): R { + return this.filterIsInstance<R>().first() + } + + private fun String.changePrefix() = this.takeIf { it.startsWith("&") }?.let { this.replaceFirst("&", "?") } ?: run { this } + + data class FilterSearchParams(val filter: String = "") { fun getQuery() = filter.changePrefix() } + + internal fun getSearchParameters(filters: AnimeFilterList): FilterSearchParams { + if (filters.isEmpty()) return FilterSearchParams() + return FilterSearchParams( + filters.parseCheckbox<GenresFilter>(EstrenosDoramasFiltersData.GENRES, "genre") + + filters.parseCheckbox<SeasonsFilter>(EstrenosDoramasFiltersData.SEASONS, "season") + + filters.parseCheckbox<StudiosFilter>(EstrenosDoramasFiltersData.STUDIOS, "studio") + + filters.parseCheckbox<CountriesFilter>(EstrenosDoramasFiltersData.COUNTRIES, "country") + + filters.parseCheckbox<NetworksFilter>(EstrenosDoramasFiltersData.NETWORKS, "network") + + filters.asQueryPart<StatusFilter>("status") + + filters.asQueryPart<TypesFilter>("type") + + filters.asQueryPart<SortFilter>("order"), + ) + } + + val FILTER_LIST get() = AnimeFilterList( + AnimeFilter.Header("La busqueda por texto ignora el filtro"), + GenresFilter(), + SeasonsFilter(), + StudiosFilter(), + CountriesFilter(), + NetworksFilter(), + StatusFilter(), + TypesFilter(), + SortFilter(), + ) + + class GenresFilter : CheckBoxFilterList("Géneros", EstrenosDoramasFiltersData.GENRES.map { CheckBoxVal(it.first, false) }) + class SeasonsFilter : CheckBoxFilterList("Temporadas", EstrenosDoramasFiltersData.SEASONS.map { CheckBoxVal(it.first, false) }) + class StudiosFilter : CheckBoxFilterList("Estudio", EstrenosDoramasFiltersData.STUDIOS.map { CheckBoxVal(it.first, false) }) + class CountriesFilter : CheckBoxFilterList("País", EstrenosDoramasFiltersData.COUNTRIES.map { CheckBoxVal(it.first, false) }) + class NetworksFilter : CheckBoxFilterList("Networks", EstrenosDoramasFiltersData.NETWORKS.map { CheckBoxVal(it.first, false) }) + class StatusFilter : QueryPartFilter("Estatus", EstrenosDoramasFiltersData.STATUS) + class TypesFilter : QueryPartFilter("Tipo", EstrenosDoramasFiltersData.TYPES) + class SortFilter : QueryPartFilter("Orden", EstrenosDoramasFiltersData.SORT) + + private object EstrenosDoramasFiltersData { + val GENRES = arrayOf( + Pair("Action", "action"), + Pair("Adult Cast", "adult-cast"), + Pair("Adventure", "adventure"), + Pair("Business", "business"), + Pair("Comedy", "comedy"), + Pair("Crime", "crime"), + Pair("Documentary", "documentary"), + Pair("Drama", "drama"), + Pair("Ecchi", "ecchi"), + Pair("Family", "family"), + Pair("Fantasy", "fantasy"), + Pair("Food", "food"), + Pair("Gourmet", "gourmet"), + Pair("Harem", "harem"), + Pair("Historical", "historical"), + Pair("Horror", "horror"), + Pair("Isekai", "isekai"), + Pair("Law", "law"), + Pair("Life", "life"), + Pair("Martial Arts", "martial-arts"), + Pair("Mature", "mature"), + Pair("Medical", "medical"), + Pair("Melodrama", "melodrama"), + Pair("Military", "military"), + Pair("Music", "music"), + Pair("Mystery", "mystery"), + Pair("Mythology", "mythology"), + Pair("Political", "political"), + Pair("Psychological", "psychological"), + Pair("Reincarnation", "reincarnation"), + Pair("Romance", "romance"), + Pair("Sci-Fi", "sci-fi"), + Pair("Seinen", "seinen"), + Pair("Shoujo", "shoujo"), + Pair("Shounen", "shounen"), + Pair("Sitcom", "sitcom"), + Pair("Sports", "sports"), + Pair("Supernatural", "supernatural"), + Pair("Thriller", "thriller"), + Pair("War", "war"), + Pair("Workplace", "workplace"), + Pair("Wuxia", "wuxia"), + Pair("Youth", "youth"), + ) + + val SEASONS = arrayOf( + Pair("Winter 2024", "winter-2024"), + ) + + val STUDIOS = arrayOf( + Pair("Connect", "connect"), + Pair("Drive", "drive"), + Pair("HORNETS", "hornets"), + Pair("Okuruto Noboru", "okuruto-noboru"), + Pair("Seven Arcs", "seven-arcs"), + Pair("Shin-Ei Animation", "shin-ei-animation"), + Pair("SILVER LINK.", "silver-link"), + Pair("Studio Add", "studio-add"), + Pair("Studio Flad", "studio-flad"), + Pair("Studio Kai", "studio-kai"), + Pair("Studio PuYUKAI", "studio-puyukai"), + Pair("SynergySP", "synergysp"), + Pair("Trigger", "trigger"), + ) + + val COUNTRIES = arrayOf( + Pair("China", "china"), + Pair("Japan", "japan"), + Pair("South Korea", "south-korea"), + Pair("Taiwan", "taiwan"), + Pair("Thailand", "thailand"), + ) + + val NETWORKS = arrayOf( + Pair("Amazon Prime", "amazon-prime"), + Pair("BS Asahi", "bs-asahi"), + Pair("CCTV", "cctv"), + Pair("Channel 3", "channel-3"), + Pair("Channel 9", "channel-9"), + Pair("Channel A", "channel-a"), + Pair("COUPANG TV", "coupang-tv"), + Pair("Disney+", "disney"), + Pair("ENA", "ena"), + Pair("Fuji TV", "fuji-tv"), + Pair("Genie TV", "genie-tv"), + Pair("GMM 25", "gmm-25"), + Pair("GMM One", "gmm-one"), + Pair("GTV", "gtv"), + Pair("Hulu", "hulu"), + Pair("Hunan TV", "hunan-tv"), + Pair("iQiyi", "iqiyi"), + Pair("JSTV", "jstv"), + Pair("jTBC", "jtbc"), + Pair("KBS2", "kbs2"), + Pair("Mango TV", "mango-tv"), + Pair("MBC", "mbc"), + Pair("MBN", "mbn"), + Pair("MBS", "mbs"), + Pair("Mnet", "mnet"), + Pair("Naver TV Cast", "naver-tv-cast"), + Pair("Netflix", "netflix"), + Pair("One 31", "one-31"), + Pair("oneD", "oned"), + Pair("SBS", "sbs"), + Pair("SBS Plus", "sbs-plus"), + Pair("SET TV", "set-tv"), + Pair("Sohu TV", "sohu-tv"), + Pair("TBS", "tbs"), + Pair("Telasa", "telasa"), + Pair("Tencent Video", "tencent-video"), + Pair("Tokyo MX", "tokyo-mx"), + Pair("TV Chosun", "tv-chosun"), + Pair("TV Tokyo", "tv-tokyo"), + Pair("TVING", "tving"), + Pair("TVK", "tvk"), + Pair("tvN", "tvn"), + Pair("Viki", "viki"), + Pair("ViuTV", "viutv"), + Pair("vLive", "vlive"), + Pair("Wavve", "wavve"), + Pair("WeTV", "wetv"), + Pair("Workpoint TV", "workpoint-tv"), + Pair("Youku", "youku"), + Pair("ZJTV", "zjtv"), + ) + + val STATUS = arrayOf( + Pair("All", ""), + Pair("Ongoing", "Ongoing"), + Pair("Completed", "Completed"), + ) + + val TYPES = arrayOf( + Pair("All", ""), + Pair("Dorama", "Drama"), + Pair("TV Show", "TV Show"), + Pair("Anime", "Anime"), + Pair("Película", "Movie"), + Pair("Special", "Special"), + ) + + val SORT = arrayOf( + Pair("Latest Update", "update"), + Pair("A-Z", "title"), + Pair("Z-A", "titlereverse"), + Pair("Latest Added", "latest"), + Pair("Popular", "popular"), + Pair("Rating", "rating"), + ) + } +}