ZE{
zxmEOn5^{BYRgOZThW6ee@WzB9aR{0@Bja86LHXn<`(-)BTleWm{k`ndRNT)Afr^Aj
zRZnj%vI77pOx>?Vb}||VL{hf#>su6vQ{%#k)})y^(O?O!7GyU
zFWFfk!zMl#RIv0m30_nKD@Dd-)5uZ_xyO?U>Z>2_rK^)ZJ(FHNlk!kwx?~|-SWAK_
zd7vI1-dRp6U#WHc)$t62IR8lrj&+KljjV*rkQ5Oe@?QYCvBtR
zq$-l33pjjqV7cPo2V0ttPZ>kfzPUuf+SAwwLJbH#b-{)&r6eyTijVPcROS41&cXlx5A#cy{OXlFxBg
z0Gyla%z07Kxb#{-J}j~{VsmZGF%>*&GciCjq83`1&mJWvp^Z;dg)oqXaNQdo(?+kG
zSziJR?mf2!dD41}znE&E3+T!3>I`GrM!Jm)6vJv{pY@#z@Epk*oPuZo=#id5#`7>g
zdqN3~!4I_kdo;M5Y%kG{pyP%zd+B7J|r^mM^yrd{{ZQ!vIdLyJ-cW
ztXq~Zr7i3SgugnEHR29Z@5#OTY%;1Z+Y%cxN*1W=>{iir8x-htWNr`S_VPV!MBp
z8pm=i!_H*3@uK4x880F>-hiP)Y3S%oC<9eKf586iNhKJfyl59t4)|jn;r*QKYbM?V
zp$TI>RS|!1$RHV!6JKbGp~!lV&4fxo$s*excXfCSE<`o9l`M%9mjwYg{&CR2zqyfV
zRlE&4%ECxJ9S7NYJu63s*)&G5aA
zVyX~{WjBc#zbVg_FEXzV(2_wiX_Ug3_T>KYYi?3S&ZdWY6g(?e@SYgqEXdu7R;K-m
zyQ91t%`o9f%=Cg)t6f0Gr`607ZgL4P$twEtpG*Z^jmLZH(e^9e^Y^B)Gut^A|nc&1Bv9Lcj84YT+HjxSlqtIq_3FYSf$Z+s#e
z#WQL%7uGliq0VL-CzCFY?`*=ww+M)XdZo9CCpsy~{BF|wFluB@IU`V{E^&=*{X7xm
zyl8#+-bmHn-j)7>E&P>XT?yB#NN!dN4PoneQx>Sk05wAh`v7T@iV%5u-pP<{lgS8;CqUi#B%12hZ)-
znmfPMfgAF!AYpq=LYwL$7G>y*=M*~>+57H|DPoi|f=g=r6Zs%?m`Ju+`!lcIk&tjo^W@o((~ps6fuXvZ|&*j?`^7P=Y^$my;9a1^=-{E1q$_hT>6e
z1eGqcIv9y*iVuEW)~Fj3v(-mzLO0H0$w1qOX-*Wf@I{1xGs)b!4U|w<(AsWit<
zd|$h&eve$yW0FWdAmuX3lo;sUX}_aMbh_oxBUebE<&!b7BHYU&kM#1L{JkMgZIj#+
zp{@C0)9aH;i?v4vslaHxblT^Qjy3nPz8(tx!9e=)znX#~R9%+8zy_ojQ9`BS(!;1O
zFvr?MkW-FEeu@Y{`7UJ5@KI(FG
zZanontz2KFeo~ybAK^cN+G8Q?OUwHzy&K>*@0_8=DhvwNf{Vwh^=&5Wx)OhhRQm7n
zzG(v<7o{i8bCRO0F}Xn<$&RyXYeANu-_qGmdFS~5WYaM+CZ}~Qcsyg9DdcsnU8d@r}^!2Mbe%RQm*@eZu<;NOh
z=zmmCaofV>sZ*G{hl*Aapuf2?u}xGq-<>d--al>sI4iNz2y~sjNq-gc$fi_Q2~O^*
zH$$Ygi6YsjAv@bTyUliHEycs*h(wBxW~`FNpN&
zLkqXjF6&Ttc3w8c8J^cF>Yq!)dlX@|1pX0Nsd64*>*0M~
zX3-6HQ|+R%gEb+)_vS8z;Ql<)A++}`umk5NC8op30sAa5l|aJppYtL8xOjLp{LFys
z=)pJWp+C7_V*GXu|1jgU$;4ddTS>SoPrv#8AW0-EMSUy%3|Koy<7Eur&B5&E5U}B!
zNlQuB&89NYUeX?`qNF-EdPk88*dr3!yZtneu9MM+=UxAgMnY_|S>75=i2&ctW`o|{
z-wFxpC=QF9auhAL+r;U9{5+)8^JF63Q0e^NKTo(4E-Fw|rrytn%U%OU-{SRARa40d
z^1CwngpsAk_AUuY<@=2tstBVUCKUK8{h&jAh}Myt1uJkM^24;@C?3Um7on<@`Q1T<
z#Ct!95j9`^H8bo!>Pi_h{PJwJgp09bd1Xq`iF>nRuONQtH9VyJ7tV^|+BZohmnE(i
zgemBeYQ*R7-ZzOD_VcRah7HJLKPhL^{LNyI@nh2(rNQ
z;-m&D)@@l?;tUIK}Pb
z!mR~g?Zs^kr<_`Ce@ibp<>mPlywW{c*1Do^S!JM%kOj7qJmm-?smb$|SlV^JX;fOR
z{T;OVZPNhnP6d8n6_Yy_$Y8!^S`bGj7#Cp*xzxdQLsG!@j%CHsqvCWv9!{xFh$dw?
zgl#X1dm_4#gE;7SF}nY`ZN%5Rd&8M%<=;y&+a8`zd!vPUzkFY1X8A*Q9018SW0?BL
z*cv6+C7VF?!o$rtI=m)Is@qTMoxLc3P>{cyn?P)v6zL2#>&6ptD8}%((rEfmhv4o_>AYu7jYIoQF`hk
zs3-n0KB!sqM&&H3cIKY&;uZXM#e3}go2(R;7Y{*jwwc*}dv(x~X}b>WieQ|%ZC&6m
zG2Z*9{!cDCjYR`7qi;t`JqK(CN>VgRbe$46Bp5+*cuTmv9n&!cc<+%|xwXN{CV^qM
zKOwyvQ#l&pD4u~zpf6;pywmn8{MC+bVwc`Eo7D(&v*g!E>!(6!&l
zeP`1@63FHKx%TCWgEo8Y;D`5et-u;4$GUs1ooLr|fk^1h5%nf}I0t3cRmI2^2WE
z9l1EV@=FH4c6|+rYmv}njn
z#D9MZ+COe5_#2pn%0H{0Z-lf$L2?ZDq{bqfT?!wzUOXha*}RpFy=|?%?WAlx?H&j~
zSWsAmPf(aoSlB>VSV~Y-N>q$TP*6%x@TGmsLoWS)0bJZ{9p480-vC)D!JG#GKwViI
KR{g>X@&5o=Vv;rh
literal 0
HcmV?d00001
diff --git a/src/pt/animestc/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/animestc/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..bfbb552095f4e085110356a5449d3a72fe04b0fa
GIT binary patch
literal 9160
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
literal 0
HcmV?d00001
diff --git a/src/pt/animestc/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/animestc/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5229e6a7df0f9f5a5313afb8b35e67ec7d40787
GIT binary patch
literal 12389
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
literal 0
HcmV?d00001
diff --git a/src/pt/animestc/src/eu/kanade/tachiyomi/animeextension/pt/animestc/ATCFilters.kt b/src/pt/animestc/src/eu/kanade/tachiyomi/animeextension/pt/animestc/ATCFilters.kt
new file mode 100644
index 000000000..2a0f405aa
--- /dev/null
+++ b/src/pt/animestc/src/eu/kanade/tachiyomi/animeextension/pt/animestc/ATCFilters.kt
@@ -0,0 +1,188 @@
+package eu.kanade.tachiyomi.animeextension.pt.animestc
+
+import eu.kanade.tachiyomi.animeextension.pt.animestc.dto.AnimeDto
+import eu.kanade.tachiyomi.animesource.model.AnimeFilter
+import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
+import eu.kanade.tachiyomi.animesource.model.SAnime
+
+object ATCFilters {
+
+ open class QueryPartFilter(
+ displayName: String,
+ val vals: Array>
+ ) : AnimeFilter.Select(
+ displayName,
+ vals.map { it.first }.toTypedArray()
+ ) {
+ fun toQueryPart() = vals[state].second
+ }
+
+ open class TriStateFilterList(name: String, values: List) : AnimeFilter.Group(name, values)
+ private class TriStateVal(name: String) : AnimeFilter.TriState(name)
+
+ private inline fun AnimeFilterList.getFirst(): R {
+ return this.filterIsInstance().first()
+ }
+
+ private inline fun AnimeFilterList.asQueryPart(): String {
+ return this.getFirst().let {
+ (it as QueryPartFilter).toQueryPart()
+ }
+ }
+
+ class InitialLetterFilter : QueryPartFilter("Primeira letra", ATCFiltersData.initialLetter)
+ class StatusFilter : QueryPartFilter("Status", ATCFiltersData.status)
+
+ class SortFilter : AnimeFilter.Sort(
+ "Ordenar",
+ ATCFiltersData.orders.map { it.first }.toTypedArray(),
+ Selection(0, true)
+ )
+
+ class GenresFilter : TriStateFilterList(
+ "Gêneros",
+ ATCFiltersData.genres.map { TriStateVal(it) }
+ )
+
+ val filterList = AnimeFilterList(
+ InitialLetterFilter(),
+ StatusFilter(),
+ SortFilter(),
+
+ AnimeFilter.Separator(),
+ GenresFilter(),
+ )
+
+ data class FilterSearchParams(
+ val initialLetter: String = "",
+ val status: String = "",
+ var orderAscending: Boolean = true,
+ var sortBy: String = "",
+ val blackListedGenres: ArrayList = ArrayList(),
+ val includedGenres: ArrayList = ArrayList(),
+ var animeName: String = ""
+ )
+
+ internal fun getSearchParameters(filters: AnimeFilterList): FilterSearchParams {
+ if (filters.isEmpty()) return FilterSearchParams()
+ val searchParams = FilterSearchParams(
+ filters.asQueryPart(),
+ filters.asQueryPart()
+ )
+
+ filters.getFirst().state?.let {
+ val order = ATCFiltersData.orders[it.index].second
+ searchParams.orderAscending = it.ascending
+ searchParams.sortBy = order
+ }
+
+ filters.getFirst()
+ .state.forEach { genre ->
+ if (genre.isIncluded()) {
+ searchParams.includedGenres.add(genre.name)
+ } else if (genre.isExcluded()) {
+ searchParams.blackListedGenres.add(genre.name)
+ }
+ }
+
+ return searchParams
+ }
+
+ private fun compareLower(first: String, second: String): Boolean {
+ return first.lowercase() in second.lowercase()
+ }
+
+ private fun mustRemove(anime: AnimeDto, params: FilterSearchParams): Boolean {
+ return when {
+ params.animeName != "" && !compareLower(params.animeName, anime.title) -> true
+ params.initialLetter != "" && !anime.title.lowercase().startsWith(params.initialLetter) -> true
+ params.blackListedGenres.size > 0 && params.blackListedGenres.any {
+ compareLower(it, anime.genres)
+ } -> true
+ params.includedGenres.size > 0 && params.includedGenres.any {
+ !compareLower(it, anime.genres)
+ } -> true
+ params.status != "" && anime.status != SAnime.UNKNOWN && anime.status != params.status.toInt() -> true
+ else -> false
+ }
+ }
+
+ private inline fun > List.sortedByIf(
+ condition: Boolean,
+ crossinline selector: (T) -> R?
+ ): List {
+ return if (condition) sortedBy(selector)
+ else sortedByDescending(selector)
+ }
+
+ fun List.applyFilterParams(params: FilterSearchParams): List {
+ return this.filterNot { mustRemove(it, params) }.let { results ->
+ when (params.sortBy) {
+ "A-Z" -> results.sortedByIf(params.orderAscending) { it.title.lowercase() }
+ "year" -> results.sortedByIf(params.orderAscending) { it.year ?: 0 }
+ else -> results
+ }
+ }
+ }
+
+ private object ATCFiltersData {
+
+ val orders = arrayOf(
+ Pair("Alfabeticamente", "A-Z"),
+ Pair("Por ano", "year")
+ )
+
+ val status = arrayOf(
+ Pair("Selecione", ""),
+ Pair("Completo", SAnime.COMPLETED.toString()),
+ Pair("Em Lançamento", SAnime.ONGOING.toString())
+ )
+
+ val initialLetter = arrayOf(Pair("Selecione", "")) + ('A'..'Z').map {
+ Pair(it.toString(), it.toString().lowercase())
+ }.toTypedArray()
+
+ val genres = arrayOf(
+ "Ação",
+ "Action",
+ "Adventure",
+ "Artes Marciais",
+ "Aventura",
+ "Carros",
+ "Comédia",
+ "Comédia Romântica",
+ "Demônios",
+ "Drama",
+ "Ecchi",
+ "Escolar",
+ "Esporte",
+ "Fantasia",
+ "Historical",
+ "Histórico",
+ "Horror",
+ "Jogos",
+ "Kids",
+ "Live Action",
+ "Magia",
+ "Mecha",
+ "Militar",
+ "Mistério",
+ "Psicológico",
+ "Romance",
+ "Samurai",
+ "School Life",
+ "Sci-Fi", // Yeah
+ "SciFi",
+ "Seinen",
+ "Shoujo",
+ "Shounen",
+ "Sobrenatural",
+ "Super Poder",
+ "Supernatural",
+ "Terror",
+ "Tragédia",
+ "Vampiro",
+ "Vida Escolar"
+ )
+ }
+}
diff --git a/src/pt/animestc/src/eu/kanade/tachiyomi/animeextension/pt/animestc/AnimesTC.kt b/src/pt/animestc/src/eu/kanade/tachiyomi/animeextension/pt/animestc/AnimesTC.kt
new file mode 100644
index 000000000..19fbf7d2b
--- /dev/null
+++ b/src/pt/animestc/src/eu/kanade/tachiyomi/animeextension/pt/animestc/AnimesTC.kt
@@ -0,0 +1,308 @@
+package eu.kanade.tachiyomi.animeextension.pt.animestc
+
+import android.app.Application
+import android.content.SharedPreferences
+import androidx.preference.ListPreference
+import androidx.preference.PreferenceScreen
+import eu.kanade.tachiyomi.animeextension.pt.animestc.ATCFilters.applyFilterParams
+import eu.kanade.tachiyomi.animeextension.pt.animestc.dto.AnimeDto
+import eu.kanade.tachiyomi.animeextension.pt.animestc.dto.EpisodeDto
+import eu.kanade.tachiyomi.animeextension.pt.animestc.dto.ResponseDto
+import eu.kanade.tachiyomi.animeextension.pt.animestc.dto.VideoDto
+import eu.kanade.tachiyomi.animeextension.pt.animestc.extractors.AnonFilesExtractor
+import eu.kanade.tachiyomi.animeextension.pt.animestc.extractors.LinkBypasser
+import eu.kanade.tachiyomi.animeextension.pt.animestc.extractors.SendcmExtractor
+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.network.GET
+import eu.kanade.tachiyomi.network.asObservableSuccess
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.awaitAll
+import kotlinx.coroutines.runBlocking
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.json.Json
+import okhttp3.CacheControl
+import okhttp3.Headers
+import okhttp3.Request
+import okhttp3.Response
+import rx.Observable
+import uy.kohesive.injekt.Injekt
+import uy.kohesive.injekt.api.get
+import java.text.SimpleDateFormat
+import java.util.Locale
+import java.util.concurrent.TimeUnit.DAYS
+
+class AnimesTC : ConfigurableAnimeSource, AnimeHttpSource() {
+
+ override val name = "AnimesTC"
+
+ override val baseUrl = "https://api2.animestc.com"
+
+ override val lang = "pt-BR"
+
+ override val supportsLatest = true
+
+ override fun headersBuilder() = Headers.Builder()
+ .add("Referer", "https://www.animestc.net/")
+
+ private val preferences: SharedPreferences by lazy {
+ Injekt.get().getSharedPreferences("source_$id", 0x0000)
+ }
+
+ private val json = Json {
+ ignoreUnknownKeys = true
+ }
+
+ // ============================== Popular ===============================
+ // This source doesnt have a popular animes page,
+ // so we use latest animes page instead.
+ override fun fetchPopularAnime(page: Int) = fetchLatestUpdates(page)
+ override fun popularAnimeParse(response: Response): AnimesPage = TODO()
+ override fun popularAnimeRequest(page: Int): Request = TODO()
+
+ // ============================== Episodes ==============================
+ override fun episodeListParse(response: Response): List {
+ val id = response.getAnimeDto().id
+ return getEpisodeList(id)
+ }
+
+ private fun episodeListRequest(animeId: Int, page: Int) =
+ GET("$baseUrl/episodes?order=id&direction=desc&page=$page&seriesId=$animeId&specialOrder=true")
+
+ private fun getEpisodeList(animeId: Int, page: Int = 1): List {
+ val response = client.newCall(episodeListRequest(animeId, page)).execute()
+ val parsed = response.parseAs>()
+ val episodes = parsed.items.map {
+ SEpisode.create().apply {
+ name = it.title
+ setUrlWithoutDomain("/episodes?slug=${it.slug}")
+ episode_number = it.number.toFloat()
+ date_upload = it.created_at.toDate()
+ }
+ }
+
+ if (parsed.page < parsed.lastPage) {
+ return episodes + getEpisodeList(animeId, page + 1)
+ } else {
+ return episodes
+ }
+ }
+
+ // ============================ Video Links =============================
+
+ override fun videoListParse(response: Response): List