From c6456c8ff4a973276a5297e4bbc981e122fed9e3 Mon Sep 17 00:00:00 2001 From: imper1aldev <23511335+imper1aldev@users.noreply.github.com> Date: Tue, 13 Aug 2024 12:48:00 -0600 Subject: [PATCH] Spanish extensions added (#135) * VerAnimes extension added * HomeCine extension added * Fix ext version --- src/es/homecine/build.gradle | 11 + .../homecine/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5603 bytes .../homecine/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2807 bytes .../homecine/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 8520 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 17054 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 28256 bytes .../animeextension/es/homecine/HomeCine.kt | 242 +++++++++++++++ src/es/pelisplushd/build.gradle | 4 +- src/es/veranimes/build.gradle | 15 + .../veranimes/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2577 bytes .../veranimes/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1410 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2941 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4383 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5774 bytes .../animeextension/es/veranimes/VerAnimes.kt | 281 ++++++++++++++++++ .../veranimes/extractors/VidGuardExtractor.kt | 124 ++++++++ 16 files changed, 675 insertions(+), 2 deletions(-) create mode 100644 src/es/homecine/build.gradle create mode 100644 src/es/homecine/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/homecine/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/homecine/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/homecine/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/homecine/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/homecine/src/eu/kanade/tachiyomi/animeextension/es/homecine/HomeCine.kt create mode 100644 src/es/veranimes/build.gradle create mode 100644 src/es/veranimes/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/veranimes/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt create mode 100644 src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/extractors/VidGuardExtractor.kt diff --git a/src/es/homecine/build.gradle b/src/es/homecine/build.gradle new file mode 100644 index 00000000..d29ecf88 --- /dev/null +++ b/src/es/homecine/build.gradle @@ -0,0 +1,11 @@ +ext { + extName = 'HomeCine' + extClass = '.HomeCine' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(':lib:fastream-extractor')) +} \ No newline at end of file diff --git a/src/es/homecine/res/mipmap-hdpi/ic_launcher.png b/src/es/homecine/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2d01ee056257799805fe8f51269224a9c664aa GIT binary patch literal 5603 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 literal 0 HcmV?d00001 diff --git a/src/es/homecine/res/mipmap-mdpi/ic_launcher.png b/src/es/homecine/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5637d2dfc1e21b36bf3dc90a2e451981ee95387e GIT binary patch literal 2807 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 JPDHLkV1goAa#R2S literal 0 HcmV?d00001 diff --git a/src/es/homecine/res/mipmap-xhdpi/ic_launcher.png b/src/es/homecine/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..076fce4f336839c8d0388291f5c48bcc18764d7b GIT binary patch literal 8520 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 C^@`U3 literal 0 HcmV?d00001 diff --git a/src/es/homecine/res/mipmap-xxhdpi/ic_launcher.png b/src/es/homecine/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..53674c7f5fbb2490b7ea6507871942be07facba8 GIT binary patch literal 17054 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 literal 0 HcmV?d00001 diff --git a/src/es/homecine/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/homecine/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a12dbc20befffd2f88e7196facbe0530810f4656 GIT binary patch literal 28256 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 literal 0 HcmV?d00001 diff --git a/src/es/homecine/src/eu/kanade/tachiyomi/animeextension/es/homecine/HomeCine.kt b/src/es/homecine/src/eu/kanade/tachiyomi/animeextension/es/homecine/HomeCine.kt new file mode 100644 index 00000000..a9ff7965 --- /dev/null +++ b/src/es/homecine/src/eu/kanade/tachiyomi/animeextension/es/homecine/HomeCine.kt @@ -0,0 +1,242 @@ +package eu.kanade.tachiyomi.animeextension.es.homecine + +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.AnimeFilter +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.fastreamextractor.FastreamExtractor +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 HomeCine : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "HomeCine" + + override val baseUrl = "https://www3.homecine.tv" + + override val lang = "es" + + override val supportsLatest = false + + private val preferences: SharedPreferences by lazy { + Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private const val PREF_LANGUAGE_KEY = "preferred_language" + private const val PREF_LANGUAGE_DEFAULT = "[LAT]" + private val LANGUAGE_LIST = arrayOf("[LAT]", "[SUB]", "[CAST]") + + 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 = "Fastream" + private val SERVER_LIST = arrayOf("Fastream") + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + val animeDetails = SAnime.create().apply { + title = document.selectFirst(".mvic-desc h1")?.text()?.trim() ?: "" + status = if (document.location().contains("/series/")) SAnime.UNKNOWN else SAnime.COMPLETED + description = document.selectFirst(".mvic-desc .f-desc")?.ownText() + genre = document.select(".mvic-info [rel='category tag']").joinToString { it.text() } + thumbnail_url = document.selectFirst("[itemprop=image]")?.attr("abs:src")?.replace("/w185/", "/w500/") + document.select(".mvici-left p").map { it.text() }.map { textContent -> + when { + "Director" in textContent -> author = textContent.substringAfter("Director:").trim().split(", ").firstOrNull() + "Actors" in textContent -> artist = textContent.substringAfter("Actors:").trim().split(", ").firstOrNull() + } + } + } + return animeDetails + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/peliculas/page/$page", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select("[data-movie-id] > a") + val nextPage = document.select(".pagination li a:contains(Last)").any() + val animeList = elements.map { element -> + SAnime.create().apply { + title = element.selectFirst(".mli-info")?.text()?.trim() ?: "" + thumbnail_url = element.selectFirst("img")!!.attr("abs:data-original") + setUrlWithoutDomain(element.attr("abs:href")) + } + } + return AnimesPage(animeList, nextPage) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int) = popularAnimeRequest(page) + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val filterList = if (filters.isEmpty()) getFilterList() else filters + val genreFilter = filterList.find { it is GenreFilter } as GenreFilter + + return when { + query.isNotBlank() -> GET("$baseUrl/page/$page/?s=$query", headers) + genreFilter.state != 0 -> GET("$baseUrl/${genreFilter.toUriPart()}/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 if (document.location().contains("/series/")) { + var episodeCounter = 1F + document.select(".tvseason").flatMap { season -> + val noSeason = season.select(".les-title strong").text().substringAfter("Temporada").trim() + season.select(".les-content a").map { ep -> + SEpisode.create().apply { + episode_number = episodeCounter++ + name = "T$noSeason - ${ep.text().trim()}" + setUrlWithoutDomain(ep.attr("abs:href")) + } + } + }.reversed() + } else { + listOf( + SEpisode.create().apply { + episode_number = 1f + name = "PELÍCULA" + setUrlWithoutDomain(document.location()) + }, + ) + } + } + + override fun videoListParse(response: Response): List<Video> { + val document = response.asJsoup() + + return document.select(".movieplay iframe").parallelCatchingFlatMapBlocking { + val link = it.attr("abs:src") + val prefix = runCatching { + val tabElement = it.closest("[id*=tab]") ?: return@runCatching "" + val tabName = tabElement.attr("id") + val lang = document.selectFirst("[href=\"#$tabName\"]")?.ownText()?.trim() ?: "" + when { + lang.lowercase().contains("latino") -> "[LAT]" + lang.lowercase().contains("castellano") -> "[CAST]" + lang.lowercase().contains("subtitulado") -> "[SUB]" + else -> "" + } + }.getOrDefault("") + + serverVideoResolver(link, prefix) + } + } + + private fun serverVideoResolver(url: String, prefix: String = ""): List<Video> { + val embedUrl = url.lowercase() + return when { + embedUrl.contains("fastream") -> { + val link = if (url.contains("emb.html")) "https://fastream.to/embed-${url.split("/").last()}.html" else url + FastreamExtractor(client, headers).videosFromUrl(link, prefix = "$prefix Fastream:") + } + 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)!! + val lang = preferences.getString(PREF_LANGUAGE_KEY, PREF_LANGUAGE_DEFAULT)!! + return this.sortedWith( + compareBy( + { it.quality.contains(lang) }, + { 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 = AnimeFilterList( + AnimeFilter.Header("La busqueda por texto ignora el filtro"), + GenreFilter(), + ) + + private class GenreFilter : UriPartFilter( + "Género", + arrayOf( + Pair("<Seleccionar>", ""), + Pair("Películas", "peliculas"), + Pair("Series", "series"), + ), + ) + + private open class UriPartFilter(displayName: String, val vals: Array<Pair<String, String>>) : + AnimeFilter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + ListPreference(screen.context).apply { + key = PREF_LANGUAGE_KEY + title = "Preferred language" + entries = LANGUAGE_LIST + entryValues = LANGUAGE_LIST + setDefaultValue(PREF_LANGUAGE_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_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/pelisplushd/build.gradle b/src/es/pelisplushd/build.gradle index 49543d55..46735d89 100644 --- a/src/es/pelisplushd/build.gradle +++ b/src/es/pelisplushd/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Pelisplushd' extClass = '.PelisplushdFactory' - extVersionCode = 54 + extVersionCode = 55 } apply from: "$rootDir/common.gradle" @@ -24,4 +24,4 @@ dependencies { implementation(project(':lib:upstream-extractor')) implementation(project(':lib:streamhidevid-extractor')) implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" -} \ No newline at end of file +} diff --git a/src/es/veranimes/build.gradle b/src/es/veranimes/build.gradle new file mode 100644 index 00000000..ffbb4521 --- /dev/null +++ b/src/es/veranimes/build.gradle @@ -0,0 +1,15 @@ +ext { + extName = 'VerAnimes' + extClass = '.VerAnimes' + 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')) +} \ No newline at end of file diff --git a/src/es/veranimes/res/mipmap-hdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e729e395b8f96ade80a7773b912b4c3fa9d4d486 GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/src/es/veranimes/res/mipmap-mdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e112048f223ed3f119d6767a54839146692dac GIT binary patch literal 1410 zcmV-|1%3L7P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm000F^Nkl<ZcwX(9 zdB|2p6vkaJD+M(viWbxSr`6O5No<t}EF#*#Y%#F<$3h4yS`4hTm7)cdXrUr3S|td~ zvegzzDq5_}iuOI**Qe+C&bi;6_q_Mscm2Nn<NLwGd+*Gdxo76i%sn&jpg{u+(7yn9 z$+c(9+w7s!=OO1$>RxJpYDl!*?4XmQsIQX-q`X7jLY+uWqsCH0V;%o1bm#<k_8b3g z#GBMQ*9+9uiH@X3#%J^?eBe@dY^DEp%3stnYUlW@J^^_HZtr!WH8f|IyVfV^8kSSy z^E!eRZc&hyHQ)m3pWer}&X2HRG>7`g)4rmn#%Hz-E4u<=jPm|+f7n%MejZe@kvfoi z&hI~`#-z_|8&-55^%S*Zl6JU1NGr}Ye%&eGQ!}X7{C;WbN87*}AikhZqlQw$sP{bm zT<QnE?v!t-S=1k}p)?};(=x~#kg=9Jox0NRHH2=>vpeQ~<U?sz^rvN5$s(AORg?8q z>h+k|ChGmW{CY|7<w9y&n${55M@#GU(_U$RkPXRIi62uvZF%ZnLtvqRDtw;$$t&qE z*18XhvA**(jfPRt&q`n)9HH@9HI%xIhUMARuOWRx^sx{c-UN$P#=*XlzriM0w;Q1$ zx+x}BFemz2NK!z{+Z%rUJM~$T*9p&1XHs`lFNVA-j*q?;5=(WFSExf_E1XuHR%v<& zbsIUWy~6I)lOeBJG}N|@z7`TocF2d+v9RS(U-fob6a6eDmTZ$xsEeqrVMFHc+U%BD z9Q`aMmaITMs-<>5H8asfY63ME7IAii-Kg2r1JU0)Vo67v5e0Ie#tc~RDymE+`;-r; zM?+e(=)3R;Y#IMD`dbH$-l{F%!(7kXiaMBD2%C^)`vOfm?TIyc^;Sl}md`Top{|7m zjj{1HM1Si*{hs$<RBSYuw{L+)2b)PKUOH8`c4xgO7`#4=`nc9CC#|;-+AIlWdSa7y zf%U#3*A#siHKb-ldjT8s8j5v9+d61-QYcf?0N(Eb+j6de4Hb>i2dQ(YZGx>P^b@dM zoQ9CXlw+vT)K1jJURFVy=9sRPro2m0Kw5txv>A`u*PTU&BVjSSVxuw?!JdkWlRDVW zPFvEdC|7wm#6%J6D};9MCS^3S<oqhX*Q#?Hbp*AyOG})3SYujf?H^oF?-1C86<Spu zrVc`0kKT^b$^ysrvCcwJI}g-=Y+|d2OOHQbL0ZPVg8b}gW+OE-=4UYPC=|cx<~IE_ z+z$B;Nxh+-)sneiw2jbaftP!q+A>Ms$Lo?~4Y!E2Ioj(<nH}v)q4DBS`21*71Z<3J zCnv6_PH{c%Y0F}nB4EQUD<c%%kBxSv$Qb#0tT!+|+LQrXk;<49?aM&zTevyqHw3l> ziVZQZ3Ro;8w3cgfzwGzTts)NWNI&C@nBNc<I=~CJ+klmRpB)mk+5oM7LdTA~#Qdg! zO*$=|<6>SJv^~ooydp{4;AwlMwpGCP=Hl6y*EGl{(t?;*25nb+nVulf)9&!J8&lgd zXg3&n1iL8aHw_CP=ane_Z`gaZIT?21pkt98lJqHF&(GB4v`i7m50e$H^d2&|46G-z zP<Rb08Ub@Y`x?(L$iLI`^ascEn4bX)!GCev>tcS(u#z#<+g_o1R&k0p>ASk7Q;)%V zUTFQV`;!m$jmVB_^d>HYy_u{YT`S(oVzGy)VX>aJfJKmsQ>swoE<trLHyjpHl*Kzj z4Uo<7SiWOe=^?OyEIpZC4co+TAMMMa?PS;yz5X=M(6#;nni%Z|7@&{%4?X;v$y&EN QBLDyZ07*qoM6N<$g6m$sTmS$7 literal 0 HcmV?d00001 diff --git a/src/es/veranimes/res/mipmap-xhdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ec995436eee0ce6bd506a4b3ad7fd015c659dcd7 GIT binary patch literal 2941 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 literal 0 HcmV?d00001 diff --git a/src/es/veranimes/res/mipmap-xxhdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..14c3727ca53210cb658f30012744ebe2098c7ff9 GIT binary patch literal 4383 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 Z{txZ7YP&e^1{MGS002ovPDHLkV1l$1YD@qC literal 0 HcmV?d00001 diff --git a/src/es/veranimes/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/veranimes/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ab47807bea17423225e22ce788a75c14d2029624 GIT binary patch literal 5774 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 literal 0 HcmV?d00001 diff --git a/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt b/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt new file mode 100644 index 00000000..93a849ba --- /dev/null +++ b/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/VerAnimes.kt @@ -0,0 +1,281 @@ +package eu.kanade.tachiyomi.animeextension.es.veranimes + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.es.veranimes.extractors.VidGuardExtractor +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter +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.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 eu.kanade.tachiyomi.util.parseAs +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.Request +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class VerAnimes : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "VerAnimes" + + override val baseUrl = "https://wwv.veranimes.net" + + 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", + ) + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + val animeDetails = SAnime.create().apply { + title = document.selectFirst(".ti h1")?.text()?.trim() ?: "" + status = SAnime.UNKNOWN + description = document.selectFirst(".r .tx p")?.text() + genre = document.select(".gn li a").joinToString { it.text() } + thumbnail_url = document.selectFirst(".info figure img")?.attr("abs:data-src") + document.select(".info .u:not(.sp) > li").map { it.text() }.map { textContent -> + when { + "Estudio" in textContent -> author = textContent.substringAfter("Estudio(s):").trim() + "Producido" in textContent -> artist = textContent.substringAfter("Producido por:").trim() + } + } + } + return animeDetails + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/animes?orden=desc&pag=$page", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select("article.li figure a") + val nextPage = document.select(".pag li a[title*=Siguiente]").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:data-src") + } + } + return AnimesPage(animeList, nextPage) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/animes?estado=en-emision&orden=desc&pag=$page", headers) + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val filterList = if (filters.isEmpty()) getFilterList() else filters + val genreFilter = filterList.find { it is GenreFilter } as GenreFilter + + return when { + query.isNotBlank() -> GET("$baseUrl/animes?buscar=$query&pag=$page", headers) + genreFilter.state != 0 -> GET("$baseUrl/animes?genero=${genreFilter.toUriPart()}&orden=desc&pag=$page", headers) + else -> popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response) = popularAnimeParse(response) + + override fun episodeListParse(response: Response): List<SEpisode> { + val document = response.asJsoup() + val scriptEps = document.selectFirst("script:containsData(var eps =)")?.data() ?: return emptyList() + val slug = document.select("*[data-sl]").attr("data-sl") + return scriptEps.substringAfter("var eps = ").substringBefore(";").trim().parseAs<List<String>>().map { + SEpisode.create().apply { + episode_number = it.toFloat() + name = "Episodio $it" + setUrlWithoutDomain("/ver/$slug-$it") + } + } + } + + private fun hex2a(hex: String): String { + return StringBuilder(hex.length / 2).apply { + for (i in hex.indices step 2) { + val charCode = hex.substring(i, i + 2).toInt(16) + append(charCode.toChar()) + } + }.toString() + } + + override fun videoListParse(response: Response): List<Video> { + val document = response.asJsoup() + val opt = document.select(".opt").attr("data-encrypt") + + val mediaType = "application/x-www-form-urlencoded; charset=UTF-8".toMediaType() + val body = "acc=opt&i=$opt".toRequestBody(mediaType) + val request = Request.Builder() + .url("https://wwv.veranimes.net/process") + .post(body) + .addHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8") + .addHeader("referer", document.location()) + .addHeader("x-requested-with", "XMLHttpRequest") + .build() + + val serversDocument = client.newCall(request).execute().asJsoup() + + return serversDocument.select("li").parallelCatchingFlatMapBlocking { + val link = hex2a(it.attr("encrypt")) + serverVideoResolver(link) + } + } + + private fun serverVideoResolver(url: String): List<Video> { + val embedUrl = url.lowercase() + return when { + embedUrl.contains("ok.ru") || embedUrl.contains("okru") -> OkruExtractor(client).videosFromUrl(url) + embedUrl.contains("filelions") || embedUrl.contains("lion") -> StreamWishExtractor(client, headers).videosFromUrl(url, videoNameGen = { "FileLions:$it" }) + embedUrl.contains("wishembed") || embedUrl.contains("streamwish") || embedUrl.contains("strwish") || embedUrl.contains("wish") -> { + val docHeaders = headers.newBuilder() + .add("Origin", "https://streamwish.to") + .add("Referer", "https://streamwish.to/") + .build() + StreamWishExtractor(client, docHeaders).videosFromUrl(url, videoNameGen = { "StreamWish:$it" }) + } + embedUrl.contains("vidhide") || embedUrl.contains("streamhide") || + embedUrl.contains("guccihide") || embedUrl.contains("streamvid") -> StreamHideVidExtractor(client).videosFromUrl(url) + embedUrl.contains("voe") -> VoeExtractor(client).videosFromUrl(url) + embedUrl.contains("yourupload") || embedUrl.contains("upload") -> YourUploadExtractor(client).videoFromUrl(url, headers = headers) + embedUrl.contains("vidguard") || embedUrl.contains("vgfplay") || embedUrl.contains("listeamed") -> VidGuardExtractor(client).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 = AnimeFilterList( + AnimeFilter.Header("La busqueda por texto ignora el filtro"), + GenreFilter(), + ) + + private class GenreFilter : UriPartFilter( + "Género", + arrayOf( + Pair("<Seleccionar>", ""), + Pair("Acción", "accion"), + Pair("Artes Marciales", "artes-marciales"), + Pair("Aventuras", "aventuras"), + Pair("Carreras", "carreras"), + Pair("Ciencia Ficción", "ciencia-ficcion"), + Pair("Comedia", "comedia"), + Pair("Demencia", "demencia"), + Pair("Demonios", "demonios"), + Pair("Deportes", "deportes"), + Pair("Drama", "drama"), + Pair("Ecchi", "ecchi"), + Pair("Escolares", "escolares"), + Pair("Espacial", "espacial"), + Pair("Fantasía", "fantasia"), + Pair("Harem", "harem"), + Pair("Historico", "historico"), + Pair("Infantil", "infantil"), + Pair("Josei", "josei"), + Pair("Juegos", "juegos"), + Pair("Magia", "magia"), + Pair("Mecha", "mecha"), + Pair("Militar", "militar"), + Pair("Misterio", "misterio"), + Pair("Música", "musica"), + Pair("Parodia", "parodia"), + Pair("Policía", "policia"), + Pair("Psicológico", "psicologico"), + Pair("Recuentos de la vida", "recuentos-de-la-vida"), + Pair("Romance", "romance"), + Pair("Samurai", "samurai"), + Pair("Seinen", "seinen"), + Pair("Shoujo", "shoujo"), + Pair("Shounen", "shounen"), + Pair("Sobrenatural", "sobrenatural"), + Pair("Superpoderes", "superpoderes"), + Pair("Suspenso", "suspenso"), + Pair("Terror", "terror"), + Pair("Vampiros", "vampiros"), + Pair("Yaoi", "yaoi"), + Pair("Yuri", "yuri"), + ), + ) + + private open class UriPartFilter(displayName: String, val vals: Array<Pair<String, String>>) : + AnimeFilter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + + 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/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/extractors/VidGuardExtractor.kt b/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/extractors/VidGuardExtractor.kt new file mode 100644 index 00000000..bc47bb91 --- /dev/null +++ b/src/es/veranimes/src/eu/kanade/tachiyomi/animeextension/es/veranimes/extractors/VidGuardExtractor.kt @@ -0,0 +1,124 @@ +package eu.kanade.tachiyomi.animeextension.es.veranimes.extractors + +import android.app.Application +import android.os.Handler +import android.os.Looper +import android.util.Base64 +import android.webkit.JavascriptInterface +import android.webkit.WebSettings +import android.webkit.WebView +import android.webkit.WebViewClient +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.OkHttpClient +import uy.kohesive.injekt.injectLazy +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit + +class VidGuardExtractor(private val client: OkHttpClient) { + private val context: Application by injectLazy() + private val handler by lazy { Handler(Looper.getMainLooper()) } + + class JsObject(private val latch: CountDownLatch) { + var payload: String = "" + + @JavascriptInterface + fun passPayload(passedPayload: String) { + payload = passedPayload + latch.countDown() + } + } + + fun videosFromUrl(url: String): List<Video> { + val doc = client.newCall(GET(url)).execute().asJsoup() + val scriptUrl = doc.selectFirst("script[src*=ad/plugin]") + ?.absUrl("src") + ?: return emptyList() + + val headers = Headers.headersOf("Referer", url) + val script = client.newCall(GET(scriptUrl, headers)).execute() + .body.string() + + val sources = getSourcesFromScript(script, url) + .takeIf { it.isNotBlank() && it != "undefined" } + ?: return emptyList() + + return sources.substringAfter("stream:[").substringBefore("}]") + .split('{') + .drop(1) + .mapNotNull { line -> + val resolution = line.substringAfter("Label\":\"").substringBefore('"') + val videoUrl = line.substringAfter("URL\":\"").substringBefore('"') + .takeIf(String::isNotBlank) + ?.let(::fixUrl) + ?: return@mapNotNull null + Video(videoUrl, "VidGuard:$resolution", videoUrl, headers) + } + } + + private fun getSourcesFromScript(script: String, url: String): String { + val latch = CountDownLatch(1) + + var webView: WebView? = null + + val jsinterface = JsObject(latch) + + handler.post { + val webview = WebView(context) + webView = webview + with(webview.settings) { + javaScriptEnabled = true + domStorageEnabled = true + databaseEnabled = true + useWideViewPort = false + loadWithOverviewMode = false + cacheMode = WebSettings.LOAD_NO_CACHE + } + + webview.addJavascriptInterface(jsinterface, "android") + webview.webViewClient = object : WebViewClient() { + override fun onPageFinished(view: WebView?, url: String?) { + view?.clearCache(true) + view?.clearFormData() + view?.evaluateJavascript(script) {} + view?.evaluateJavascript("window.android.passPayload(JSON.stringify(window.svg))") {} + } + } + + webview.loadDataWithBaseURL(url, "<html></html>", "text/html", "UTF-8", null) + } + + latch.await(5, TimeUnit.SECONDS) + + handler.post { + webView?.stopLoading() + webView?.destroy() + webView = null + } + + return jsinterface.payload + } + + private fun fixUrl(url: String): String { + val httpUrl = url.toHttpUrl() + val originalSign = httpUrl.queryParameter("sig")!! + val newSign = originalSign.chunked(2).joinToString("") { + Char(it.toInt(16) xor 2).toString() + } + .let { String(Base64.decode(it, Base64.DEFAULT)) } + .substring(5) + .chunked(2) + .reversed() + .joinToString("") + .substring(5) + + return httpUrl.newBuilder() + .removeAllQueryParameters("sig") + .addQueryParameter("sig", newSign) + .build() + .toString() + } +}