diff --git a/src/pt/animesvision/AndroidManifest.xml b/src/pt/animesvision/AndroidManifest.xml
new file mode 100644
index 000000000..9365278ac
--- /dev/null
+++ b/src/pt/animesvision/AndroidManifest.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pt/animesvision/build.gradle b/src/pt/animesvision/build.gradle
new file mode 100644
index 000000000..f70f61336
--- /dev/null
+++ b/src/pt/animesvision/build.gradle
@@ -0,0 +1,19 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlinx-serialization'
+
+ext {
+ extName = 'AnimesVision'
+ pkgNameSuffix = 'pt.animesvision'
+ extClass = '.AnimesVision'
+ extVersionCode = 16
+ libVersion = '13'
+}
+
+dependencies {
+ implementation(project(':lib-voe-extractor'))
+ implementation(project(':lib-streamtape-extractor'))
+ implementation(project(':lib-dood-extractor'))
+}
+
+apply from: "$rootDir/common.gradle"
diff --git a/src/pt/animesvision/res/mipmap-hdpi/ic_launcher.png b/src/pt/animesvision/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..72b78599d
Binary files /dev/null and b/src/pt/animesvision/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/src/pt/animesvision/res/mipmap-mdpi/ic_launcher.png b/src/pt/animesvision/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..6b9685c85
Binary files /dev/null and b/src/pt/animesvision/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/src/pt/animesvision/res/mipmap-xhdpi/ic_launcher.png b/src/pt/animesvision/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..6fc747c92
Binary files /dev/null and b/src/pt/animesvision/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/src/pt/animesvision/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/animesvision/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..f0e989a3c
Binary files /dev/null and b/src/pt/animesvision/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/src/pt/animesvision/res/mipmap-xxxhdpi/ic_launcher.png b/src/pt/animesvision/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..1ebb1ad9a
Binary files /dev/null and b/src/pt/animesvision/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AVFilters.kt b/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AVFilters.kt
new file mode 100644
index 000000000..a3b24a5d1
--- /dev/null
+++ b/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AVFilters.kt
@@ -0,0 +1,1507 @@
+package eu.kanade.tachiyomi.animeextension.pt.animesvision
+
+import eu.kanade.tachiyomi.animesource.model.AnimeFilter
+import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
+
+object AVFilters {
+
+ open class QueryPartFilter(
+ displayName: String,
+ val vals: Array>,
+ ) : AnimeFilter.Select(
+ displayName,
+ vals.map { it.first }.toTypedArray(),
+ ) {
+ fun toQueryPart() = vals[state].second
+ }
+
+ open class CheckBoxFilterList(name: String, values: List) : AnimeFilter.Group(name, values)
+ private class CheckBoxVal(name: String, state: Boolean = false) : AnimeFilter.CheckBox(name, state)
+
+ private inline fun AnimeFilterList.asQueryPart(): String {
+ return this.filterIsInstance().joinToString("") {
+ (it as QueryPartFilter).toQueryPart()
+ }
+ }
+
+ class TypeFilter : QueryPartFilter("Tipo", AVFiltersData.types)
+ class StatusFilter : QueryPartFilter("Status", AVFiltersData.status)
+ class LanguageFilter : QueryPartFilter("Idioma", AVFiltersData.languages)
+ class SortFilter : QueryPartFilter("Ordenar", AVFiltersData.orders)
+ class InitialYearFilter : QueryPartFilter("Ano Inicial", AVFiltersData.initialYear)
+ class LastYearFilter : QueryPartFilter("Ano Final", AVFiltersData.lastYear)
+ class FansubFilter : QueryPartFilter("Fansubs", AVFiltersData.fansubs)
+ class SeasonFilter : QueryPartFilter("Temporada", AVFiltersData.seasons)
+ class StudioFilter : QueryPartFilter("Estúdio", AVFiltersData.studios)
+ class ProducerFilter : QueryPartFilter("Produtora", AVFiltersData.producers)
+
+ class GenresFilter : CheckBoxFilterList(
+ "Gêneros",
+ AVFiltersData.genres.map { CheckBoxVal(it.first, false) },
+ )
+
+ val filterList = AnimeFilterList(
+ TypeFilter(),
+ StatusFilter(),
+ LanguageFilter(),
+ SortFilter(),
+ InitialYearFilter(),
+ LastYearFilter(),
+ FansubFilter(),
+ SeasonFilter(),
+ StudioFilter(),
+ ProducerFilter(),
+ GenresFilter(),
+ )
+
+ data class FilterSearchParams(
+ val type: String = "",
+ val status: String = "",
+ val language: String = "",
+ val sort: String = "padrao",
+ val initial_year: String = "1917",
+ val last_year: String = "2023",
+ val fansub: String = "",
+ val season: String = "",
+ val studio: String = "",
+ val producer: String = "",
+ val genres: String = "",
+ )
+
+ internal fun getSearchParameters(filters: AnimeFilterList): FilterSearchParams {
+ if (filters.isEmpty()) return FilterSearchParams()
+
+ val genres: String = filters.filterIsInstance()
+ .mapNotNull { filter ->
+ filter.state.mapNotNull { format ->
+ if (format.state) {
+ AVFiltersData.genres.find { it.first == format.name }!!.second
+ } else { null }
+ }.joinToString(",")
+ }.joinToString("")
+
+ return FilterSearchParams(
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ filters.asQueryPart(),
+ genres,
+ )
+ }
+
+ private object AVFiltersData {
+
+ val every = Pair("Todos", "")
+ val types = arrayOf(
+ every,
+ Pair("Animes", "1"),
+ Pair("Filmes", "2"),
+ Pair("Doramas", "4"),
+ Pair("Cartoons", "5"),
+ Pair("Live Actions", "6"),
+ )
+
+ val status = arrayOf(
+ every,
+ Pair("Finalizado", "1"),
+ Pair("Sendo exibido", "2"),
+ Pair("Ainda não exibido", "3"),
+ )
+
+ val languages = arrayOf(
+ every,
+ Pair("Legendados", "1"),
+ Pair("Dublados", "2"),
+ )
+
+ val orders = arrayOf(
+ Pair("Padrão", ""),
+ Pair("Adicionado Recentemente", "adicionado_recentemente"),
+ Pair("Atualizado Recentemente", "atualizado_recentemente"),
+ Pair("Título de A-Z", "titulo_az"),
+ Pair("Mais visualizados", "mais_visualizados"),
+ )
+
+ val initialYear = (1917..2023).map {
+ Pair(it.toString(), it.toString())
+ }.toTypedArray()
+
+ val lastYear = initialYear.reversed().toTypedArray()
+
+ val seasons = arrayOf(
+ every,
+ Pair("Inverno 2023", "164"),
+ Pair("Inverno 2022", "157"),
+ Pair("Primavera 2022", "159"),
+ Pair("Verão 2022", "161"),
+ Pair("Outono 2022", "162"),
+ Pair("Inverno 2021", "1"),
+ Pair("Primavera 2021", "152"),
+ Pair("Verão 2021", "155"),
+ Pair("Outono 2021", "156"),
+ Pair("Inverno 2020", "5"),
+ Pair("Primavera 2020", "4"),
+ Pair("Verão 2020", "3"),
+ Pair("Outono 2020", "2"),
+ Pair("Inverno 2019", "23"),
+ Pair("Primavera 2019", "18"),
+ Pair("Verão 2019", "7"),
+ Pair("Outono 2019", "6"),
+ Pair("Inverno 2018", "75"),
+ Pair("Primavera 2018", "73"),
+ Pair("Verão 2018", "69"),
+ Pair("Outono 2018", "67"),
+ Pair("Inverno 2017", "131"),
+ Pair("Primavera 2017", "128"),
+ Pair("Verão 2017", "126"),
+ Pair("Outono 2017", "76"),
+ Pair("Inverno 2016", "139"),
+ Pair("Primavera 2016", "138"),
+ Pair("Verão 2016", "137"),
+ Pair("Outono 2016", "134"),
+ Pair("Inverno 2015", "147"),
+ Pair("Primavera 2015", "146"),
+ Pair("Verão 2015", "145"),
+ Pair("Outono 2015", "144"),
+ Pair("Inverno 2014", "151"),
+ Pair("Primavera 2014", "150"),
+ Pair("Verão 2014", "149"),
+ Pair("Outono 2014", "148"),
+ Pair("Verão 2013", "154"),
+ Pair("Outono 2013", "153"),
+ Pair("Inverno 2007", "140"),
+ Pair("Primavera 2007", "141"),
+ Pair("Verão 2007", "142"),
+ Pair("Outono 2007", "143"),
+ Pair("Inverno 2006", "132"),
+ Pair("Primavera 2006", "133"),
+ Pair("Verão 2006", "135"),
+ Pair("Outono 2006", "136"),
+ Pair("Inverno 2005", "125"),
+ Pair("Primavera 2005", "127"),
+ Pair("Verão 2005", "129"),
+ Pair("Outono 2005", "130"),
+ Pair("Inverno 2004", "121"),
+ Pair("Primavera 2004", "122"),
+ Pair("Verão 2004", "123"),
+ Pair("Outono 2004", "124"),
+ Pair("Inverno 2003", "117"),
+ Pair("Primavera 2003", "118"),
+ Pair("Verão 2003", "119"),
+ Pair("Outono 2003", "120"),
+ Pair("Inverno 2002", "113"),
+ Pair("Primavera 2002", "114"),
+ Pair("Verão 2002", "115"),
+ Pair("Outono 2002", "116"),
+ Pair("Inverno 2001", "110"),
+ Pair("Primavera 2001", "111"),
+ Pair("Verão 2001", "112"),
+ Pair("Outono 2001", "109"),
+ Pair("Inverno 2000", "105"),
+ Pair("Primavera 2000", "107"),
+ Pair("Verão 2000", "108"),
+ Pair("Outono 2000", "106"),
+ Pair("Inverno 1999", "101"),
+ Pair("Primavera 1999", "102"),
+ Pair("Verão 1999", "104"),
+ Pair("Outono 1999", "103"),
+ Pair("Inverno 1998", "97"),
+ Pair("Primavera 1998", "98"),
+ Pair("Verão 1998", "99"),
+ Pair("Outono 1998", "100"),
+ Pair("Inverno 1997", "95"),
+ Pair("Primavera 1997", "93"),
+ Pair("Verão 1997", "94"),
+ Pair("Outono 1997", "96"),
+ Pair("Inverno 1996", "89"),
+ Pair("Primavera 1996", "90"),
+ Pair("Verão 1996", "92"),
+ Pair("Outono 1996", "91"),
+ Pair("Inverno 1995", "85"),
+ Pair("Primavera 1995", "86"),
+ Pair("Verão 1995", "88"),
+ Pair("Outono 1995", "87"),
+ Pair("Inverno 1994", "81"),
+ Pair("Primavera 1994", "82"),
+ Pair("Verão 1994", "84"),
+ Pair("Outono 1994", "83"),
+ Pair("Inverno 1993", "77"),
+ Pair("Primavera 1993", "78"),
+ Pair("Verão 1993", "79"),
+ Pair("Outono 1993", "80"),
+ Pair("Inverno 1992", "68"),
+ Pair("Primavera 1992", "71"),
+ Pair("Verão 1992", "70"),
+ Pair("Outono 1992", "74"),
+ Pair("Inverno 1991", "63"),
+ Pair("Primavera 1991", "64"),
+ Pair("Verão 1991", "65"),
+ Pair("Outono 1991", "66"),
+ Pair("Inverno 1990", "60"),
+ Pair("Primavera 1990", "61"),
+ Pair("Outono 1990", "62"),
+ Pair("Inverno 1989", "56"),
+ Pair("Primavera 1989", "57"),
+ Pair("Verão 1989", "58"),
+ Pair("Outono 1989", "59"),
+ Pair("Inverno 1988", "52"),
+ Pair("Primavera 1988", "53"),
+ Pair("Verão 1988", "54"),
+ Pair("Outono 1988", "55"),
+ Pair("Inverno 1987", "48"),
+ Pair("Primavera 1987", "49"),
+ Pair("Verão 1987", "50"),
+ Pair("Outono 1987", "51"),
+ Pair("Inverno 1986", "43"),
+ Pair("Primavera 1986", "45"),
+ Pair("Verão 1986", "46"),
+ Pair("Outono 1986", "47"),
+ Pair("Inverno 1985", "39"),
+ Pair("Primavera 1985", "40"),
+ Pair("Verão 1985", "41"),
+ Pair("Outono 1985", "42"),
+ Pair("Inverno 1984", "36"),
+ Pair("Primavera 1984", "37"),
+ Pair("Outono 1984", "38"),
+ Pair("Inverno 1983", "32"),
+ Pair("Primavera 1983", "33"),
+ Pair("Verão 1983", "35"),
+ Pair("Outono 1983", "34"),
+ Pair("Inverno 1982", "30"),
+ Pair("Primavera 1982", "28"),
+ Pair("Verão 1982", "29"),
+ Pair("Outono 1982", "31"),
+ Pair("Inverno 1981", "24"),
+ Pair("Primavera 1981", "25"),
+ Pair("Verão 1981", "26"),
+ Pair("Outono 1981", "27"),
+ Pair("Outono 1980", "22"),
+ Pair("Inverno 1979", "19"),
+ Pair("Primavera 1979", "20"),
+ Pair("Inverno 1978", "16"),
+ Pair("Outono 1978", "17"),
+ )
+ val fansubs = arrayOf(
+ every,
+ Pair("AMA", "ama"),
+ Pair("ANSK", "ansk"),
+ Pair("Absolute", "absolute"),
+ Pair("Aenianos", "aenianos"),
+ Pair("Akogare", "akogare"),
+ Pair("Anipakku", "anipakku"),
+ Pair("Armagedon", "armagedon"),
+ Pair("Atlantida", "atlantida"),
+ Pair("BAS", "bas"),
+ Pair("Dollars", "dollars"),
+ Pair("Elite", "elite fansub"),
+ Pair("Eternal Animes", "eternal animes"),
+ Pair("Fênix Sub", "fênix sub"),
+ Pair("Hacchi", "hacchi"),
+ Pair("Hacchi", "hacchi"),
+ Pair("Infinite", "infinite"),
+ Pair("Kiyoteru", "kiyoteru"),
+ Pair("Kyoshiro", "kyoshiro"),
+ Pair("Lolicons Anônimos", "lolicons anonimos"),
+ Pair("Nippon", "nippon"),
+ Pair("Oficial", "oficial"),
+ Pair("Proxy", "proxy"),
+ Pair("SubVision", "subvision"),
+ )
+
+ val studios = arrayOf(
+ every,
+ Pair("3xCube", "329"),
+ Pair("8bit", "75"),
+ Pair("A-1 Pictures", "39"),
+ Pair("A-Real", "233"),
+ Pair("A.C.G.T.", "185"),
+ Pair("Acca effe", "301"),
+ Pair("Actas", "133"),
+ Pair("AIC ASTA", "146"),
+ Pair("AIC Build", "277"),
+ Pair("AIC Classic", "237"),
+ Pair("AIC Frontier", "221"),
+ Pair("AIC PLUS+", "159"),
+ Pair("AIC Spirits", "110"),
+ Pair("AIC", "88"),
+ Pair("Ajia-Do", "93"),
+ Pair("Albacrow", "290"),
+ Pair("Anima&Co.", "274"),
+ Pair("animate Film", "90"),
+ Pair("Animation Do", "327"),
+ Pair("Animation Staff Room", "310"),
+ Pair("Ankama Animations", "214"),
+ Pair("Annapuru", "156"),
+ Pair("APPP", "138"),
+ Pair("ARECT", "332"),
+ Pair("Arms", "101"),
+ Pair("Artland", "130"),
+ Pair("Artmic", "89"),
+ Pair("Arvo Animation", "67"),
+ Pair("Asahi Production", "179"),
+ Pair("Asatsu DK", "147"),
+ Pair("Ascension", "308"),
+ Pair("Ashi Production", "189"),
+ Pair("asread.", "36"),
+ Pair("Asura Film", "199"),
+ Pair("AtelierPontdarc", "6"),
+ Pair("AXsiZ", "70"),
+ Pair("B.CMAY PICTURES", "154"),
+ Pair("B&T", "260"),
+ Pair("Bakken Record", "309"),
+ Pair("Bandai Namco Pictures", "132"),
+ Pair("Barnum Studio", "300"),
+ Pair("Bee Media", "119"),
+ Pair("Bee Train", "94"),
+ Pair("BeSTACK", "192"),
+ Pair("Bibury Animation Studios", "144"),
+ Pair("BigFireBird Animation", "249"),
+ Pair("Blade", "126"),
+ Pair("Bones", "9"),
+ Pair("Bouncy", "203"),
+ Pair("Brain's Base", "96"),
+ Pair("Bridge", "105"),
+ Pair("C-Station", "242"),
+ Pair("C2C", "53"),
+ Pair("CANDY BOX", "177"),
+ Pair("Chaos Project", "235"),
+ Pair("Children's Playground Entertainment", "66"),
+ Pair("China Literature Limited", "225"),
+ Pair("CLAP", "335"),
+ Pair("CloverWorks", "150"),
+ Pair("Colored Pencil Animation", "92"),
+ Pair("CoMix Wave Films", "19"),
+ Pair("Connect", "44"),
+ Pair("Craftar Studios", "184"),
+ Pair("Creators in Pack", "208"),
+ Pair("CygamesPictures", "294"),
+ Pair("D.A.S.T.", "165"),
+ Pair("DandeLion Animation Studio", "161"),
+ Pair("Darts", "291"),
+ Pair("Daume", "35"),
+ Pair("David Production", "83"),
+ Pair("Digital Network Animation", "341"),
+ Pair("Diomedéa", "32"),
+ Pair("DLE", "111"),
+ Pair("DMM.futureworks", "153"),
+ Pair("Doga Kobo", "37"),
+ Pair("domerica", "272"),
+ Pair("Dongwoo A&E", "181"),
+ Pair("DRAWIZ", "320"),
+ Pair("Drive", "157"),
+ Pair("Dwango", "81"),
+ Pair("Dynamic Planning", "190"),
+ Pair("Dynamo Pictures", "173"),
+ Pair("E&G Films", "288"),
+ Pair("Egg Firm", "85"),
+ Pair("Eiken", "134"),
+ Pair("EKACHI EPILKA", "56"),
+ Pair("Emon", "125"),
+ Pair("EMT Squared", "164"),
+ Pair("Encourage Films", "86"),
+ Pair("ENGI", "4"),
+ Pair("Ezόla", "246"),
+ Pair("Fanworks", "155"),
+ Pair("feel.", "65"),
+ Pair("Felix Film", "231"),
+ Pair("Fifth Avenue", "169"),
+ Pair("Filmlink International", "140"),
+ Pair("FILMONY", "311"),
+ Pair("FLAGSHIP LINE", "64"),
+ Pair("G-angle", "240"),
+ Pair("G&G Entertainment", "304"),
+ Pair("Gainax Kyoto", "232"),
+ Pair("Gainax", "80"),
+ Pair("Gallop", "186"),
+ Pair("Gambit", "52"),
+ Pair("Gathering", "259"),
+ Pair("GEEK TOYS", "261"),
+ Pair("GEMBA", "280"),
+ Pair("Geno Studio", "26"),
+ Pair("GIFTanimation", "47"),
+ Pair("Giga Production", "302"),
+ Pair("Ginga Ya", "295"),
+ Pair("GoHands", "31"),
+ Pair("Gonzo", "116"),
+ Pair("Gosay Studio", "313"),
+ Pair("Graphinica", "63"),
+ Pair("Green Monster Team", "248"),
+ Pair("GRIZZLY", "337"),
+ Pair("Group TAC", "117"),
+ Pair("Grouper Productions", "183"),
+ Pair("Hal Film Maker", "14"),
+ Pair("Haoliners Animation League", "124"),
+ Pair("Hiro Media", "253"),
+ Pair("Hoods Drifters Studio", "265"),
+ Pair("Hoods Entertainment", "79"),
+ Pair("HORNETS", "298"),
+ Pair("Hotline", "198"),
+ Pair("HOTZIPANG", "158"),
+ Pair("I.Gzwei", "299"),
+ Pair("ILCA", "281"),
+ Pair("IMAGICA Lab.", "315"),
+ Pair("Imagineer", "166"),
+ Pair("Indivision", "57"),
+ Pair("Ishimori Entertainment", "333"),
+ Pair("Issen", "285"),
+ Pair("ixtl", "215"),
+ Pair("Iyasakadou Film", "247"),
+ Pair("J.C.Staff", "8"),
+ Pair("Japan Vistec", "123"),
+ Pair("K-Factory", "128"),
+ Pair("Kachidoki Studio", "278"),
+ Pair("Kamikaze Douga", "23"),
+ Pair("Karaku", "127"),
+ Pair("Khara", "238"),
+ Pair("Kigumi", "342"),
+ Pair("Kinema Citrus", "22"),
+ Pair("Kitty Film Mitaka Studio", "129"),
+ Pair("Kitty Films", "131"),
+ Pair("Knack Productions", "142"),
+ Pair("Kyoto Animation", "76"),
+ Pair("l-a-unch・BOX", "122"),
+ Pair("L²Studio", "102"),
+ Pair("LandQ studios", "257"),
+ Pair("Lapin Track", "229"),
+ Pair("Larx Entertainment", "40"),
+ Pair("Lay-duce", "171"),
+ Pair("Lerche", "49"),
+ Pair("Lesprit", "91"),
+ Pair("LEVELS", "321"),
+ Pair("LIDENFILMS Kyoto Studio", "58"),
+ Pair("LIDENFILMS Osaka Studio", "306"),
+ Pair("LIDENFILMS", "55"),
+ Pair("Life Work", "296"),
+ Pair("LMD", "137"),
+ Pair("M.S.C", "220"),
+ Pair("Madhouse", "45"),
+ Pair("Magia Doraglier", "314"),
+ Pair("Magic Bus", "234"),
+ Pair("Maho Film", "108"),
+ Pair("Manglobe", "100"),
+ Pair("MAPPA", "7"),
+ Pair("Marone", "251"),
+ Pair("Marvy Jack", "178"),
+ Pair("Marza Animation Planet", "330"),
+ Pair("Millepensee", "218"),
+ Pair("Minami Machi Bugyousho", "222"),
+ Pair("MMT Technology", "322"),
+ Pair("Mushi Production", "175"),
+ Pair("Namu Animation", "250"),
+ Pair("NAZ", "149"),
+ Pair("Nexus", "141"),
+ Pair("Nice Boat Animation", "317"),
+ Pair("Nihon Ad Systems", "293"),
+ Pair("Nippon Animation", "34"),
+ Pair("Nomad", "43"),
+ Pair("Nut", "262"),
+ Pair("Oh! Production", "254"),
+ Pair("Okuruto Noboru", "191"),
+ Pair("OLM Digital", "286"),
+ Pair("OLM Team Yoshioka", "339"),
+ Pair("OLM", "28"),
+ Pair("Orange", "95"),
+ Pair("Ordet", "269"),
+ Pair("Original Force", "324"),
+ Pair("P.A. Works", "98"),
+ Pair("P.I.C.S.", "312"),
+ Pair("Palm Studio", "118"),
+ Pair("Passione", "72"),
+ Pair("Pastel", "78"),
+ Pair("Picture Magic", "268"),
+ Pair("Pierrot Plus", "10"),
+ Pair("Pine Jam", "106"),
+ Pair("Platinum Vision", "263"),
+ Pair("Polygon Pictures", "77"),
+ Pair("PPM", "180"),
+ Pair("PRA", "87"),
+ Pair("Primastea", "282"),
+ Pair("Production +h.", "343"),
+ Pair("production doA", "136"),
+ Pair("Production GoodBook", "264"),
+ Pair("Production I.G", "21"),
+ Pair("Production IMS", "99"),
+ Pair("Production Reed", "197"),
+ Pair("Project No.9", "209"),
+ Pair("Purple Cow Studio Japan", "270"),
+ Pair("Quad", "338"),
+ Pair("Qualia Animation", "104"),
+ Pair("Radix", "160"),
+ Pair("RAMS", "245"),
+ Pair("Remic", "307"),
+ Pair("Revoroot", "284"),
+ Pair("Rising Force", "168"),
+ Pair("Robot Communications", "266"),
+ Pair("Rockwell Eyes", "244"),
+ Pair("Ruo Hong Culture", "319"),
+ Pair("Saetta", "305"),
+ Pair("Samsara Animation Studio", "318"),
+ Pair("Sanrio", "256"),
+ Pair("SANZIGEN", "170"),
+ Pair("Satelight", "46"),
+ Pair("Science SARU", "27"),
+ Pair("Seven Arcs Pictures", "202"),
+ Pair("Seven Arcs", "42"),
+ Pair("Seven Stone Entertainment", "292"),
+ Pair("Shaft", "30"),
+ Pair("Shanghai Foch Film and TV Culture Investment", "267"),
+ Pair("Shenying Animation", "336"),
+ Pair("Shin-Ei Animation", "84"),
+ Pair("Shinkuukan", "283"),
+ Pair("Shirogumi", "151"),
+ Pair("Shuka", "82"),
+ Pair("SIDO LIMITED", "303"),
+ Pair("Signal.MD", "73"),
+ Pair("SILVER LINK.", "1"),
+ Pair("Soft Garage", "213"),
+ Pair("Sola Digital Arts", "279"),
+ Pair("Soyep", "297"),
+ Pair("Space Neko Company", "115"),
+ Pair("Sprite Animation Studios", "287"),
+ Pair("Square Enix", "326"),
+ Pair("Steve N' Steven", "243"),
+ Pair("Stingray", "174"),
+ Pair("Studio 3Hz", "148"),
+ Pair("Studio 4°C", "172"),
+ Pair("Studio A-CAT", "120"),
+ Pair("Studio Animal", "331"),
+ Pair("Studio Bind", "74"),
+ Pair("Studio Blanc", "38"),
+ Pair("Studio Chizu", "210"),
+ Pair("Studio Colorido", "25"),
+ Pair("Studio Comet", "187"),
+ Pair("Studio Crocodile", "228"),
+ Pair("Studio Daisy", "323"),
+ Pair("Studio Deen", "12"),
+ Pair("Studio elle", "121"),
+ Pair("Studio Fantasia", "33"),
+ Pair("Studio Flad", "68"),
+ Pair("Studio Flag", "328"),
+ Pair("Studio Ghibli", "112"),
+ Pair("Studio Gokumi", "54"),
+ Pair("Studio Hibari", "205"),
+ Pair("Studio Jemi", "48"),
+ Pair("Studio Kafka", "334"),
+ Pair("Studio Kai", "193"),
+ Pair("Studio Kyuuma", "201"),
+ Pair("Studio LAN", "226"),
+ Pair("Studio Lings", "216"),
+ Pair("Studio Live", "230"),
+ Pair("Studio Matrix", "143"),
+ Pair("studio MOTHER", "340"),
+ Pair("Studio Nue", "217"),
+ Pair("Studio Palette", "71"),
+ Pair("Studio Pierrot", "2"),
+ Pair("Studio Ponoc", "206"),
+ Pair("Studio PuYUKAI", "196"),
+ Pair("Studio Rikka", "41"),
+ Pair("Studio Signal", "275"),
+ Pair("Studio Signpost", "11"),
+ Pair("Studio Unicorn", "252"),
+ Pair("Studio VOLN", "236"),
+ Pair("Studio World", "258"),
+ Pair("Sublimation", "51"),
+ Pair("Sunrise Beyond", "50"),
+ Pair("Sunrise", "29"),
+ Pair("SynergySP", "59"),
+ Pair("Tatsunoko Production", "17"),
+ Pair("Team TillDawn", "188"),
+ Pair("Team YokkyuFuman", "113"),
+ Pair("teamKG", "289"),
+ Pair("Tear Studio", "316"),
+ Pair("Telecom Animation Film", "182"),
+ Pair("Tencent Animation & Comics", "224"),
+ Pair("Tezuka Productions", "18"),
+ Pair("The Answer Studio", "139"),
+ Pair("Think Corporation", "255"),
+ Pair("TMS Entertainment", "13"),
+ Pair("TNK", "109"),
+ Pair("Todos", ""),
+ Pair("Toei Animation", "3"),
+ Pair("Toho Interactive Animation", "223"),
+ Pair("Tokyo Kids", "114"),
+ Pair("Tokyo Media Connections", "204"),
+ Pair("Tokyo Movie Shinsha", "135"),
+ Pair("Tomason", "195"),
+ Pair("Topcraft", "273"),
+ Pair("Trans Arts", "219"),
+ Pair("Tri-Slash", "211"),
+ Pair("Triangle Staff", "271"),
+ Pair("TriF Studio", "207"),
+ Pair("Trigger", "24"),
+ Pair("Trinet Entertainment", "200"),
+ Pair("TROYCA", "163"),
+ Pair("Twilight Studio", "241"),
+ Pair("TYO Animations", "107"),
+ Pair("Typhoon Graphics", "227"),
+ Pair("ufotable", "20"),
+ Pair("Vega Entertainment", "60"),
+ Pair("Venet", "145"),
+ Pair("View Works", "276"),
+ Pair("Visual Flight", "239"),
+ Pair("W-Toon Studio", "152"),
+ Pair("Wan Wei Mao Donghua", "325"),
+ Pair("WAO World", "167"),
+ Pair("White Fox", "97"),
+ Pair("Wit Studio", "16"),
+ Pair("Wolfsbane", "69"),
+ Pair("XEBEC M2", "103"),
+ Pair("Xebec", "15"),
+ Pair("XFLAG Pictures", "212"),
+ Pair("Yaoyorozu", "194"),
+ Pair("Yokohama Animation Lab", "5"),
+ Pair("Yostar Pictures", "176"),
+ Pair("Yumeta Company", "62"),
+ Pair("Zero-G", "61"),
+ Pair("Zexcs", "162"),
+ )
+
+ val producers = arrayOf(
+ every,
+ Pair("12 Diary Holders", "67"),
+ Pair("1st PLACE", "432"),
+ Pair("3xCube", "482"),
+ Pair("5pb.", "358"),
+ Pair("81 Produce", "119"),
+ Pair("A-1 Pictures", "650"),
+ Pair("A-Craft", "567"),
+ Pair("A-Line", "467"),
+ Pair("A-Sketch", "129"),
+ Pair("A3", "361"),
+ Pair("ABC Animation", "2"),
+ Pair("Abe Shuuji Jimusho", "594"),
+ Pair("AbemaTV", "726"),
+ Pair("AC Create", "622"),
+ Pair("AC-Bu", "677"),
+ Pair("ADK Emotions", "489"),
+ Pair("ADK Marketing Solutions", "111"),
+ Pair("Adores", "500"),
+ Pair("Aeon Entertainment", "317"),
+ Pair("AG-ONE", "642"),
+ Pair("Age Global Networks", "241"),
+ Pair("Agent 21", "764"),
+ Pair("Ai Addiction", "274"),
+ Pair("AIC Rights", "466"),
+ Pair("AIC", "208"),
+ Pair("AKABEiSOFT2", "728"),
+ Pair("Akatsuki", "487"),
+ Pair("Akita Shoten", "442"),
+ Pair("Alchemist", "647"),
+ Pair("Amber Film Works", "712"),
+ Pair("AMG Entertainment", "632"),
+ Pair("AMG MUSIC", "519"),
+ Pair("Amuse", "316"),
+ Pair("Amusement Media Academy", "507"),
+ Pair("AN Entertainment", "435"),
+ Pair("Anima&Co.", "267"),
+ Pair("Animaruya", "434"),
+ Pair("animate Film", "256"),
+ Pair("Animatic", "297"),
+ Pair("Animation 21", "623"),
+ Pair("Animation Do", "459"),
+ Pair("Animatsu Entertainment", "638"),
+ Pair("Animax", "164"),
+ Pair("Anime Beans", "695"),
+ Pair("Anime Consortium Japan", "250"),
+ Pair("Anime R", "497"),
+ Pair("Aniplex", "4"),
+ Pair("Ankama", "453"),
+ Pair("Annapuru", "347"),
+ Pair("Aoni Entertainment", "375"),
+ Pair("Aoni Production", "641"),
+ Pair("APDREAM", "686"),
+ Pair("Apollon", "444"),
+ Pair("AQUA ARIS", "269"),
+ Pair("Aquamarine", "702"),
+ Pair("AQUAPLUS", "512"),
+ Pair("arma bianca", "532"),
+ Pair("Arquebuse", "645"),
+ Pair("Artist Management Office", "249"),
+ Pair("Artmic", "465"),
+ Pair("Asahi Broadcasting", "162"),
+ Pair("Asahi Production", "176"),
+ Pair("Asahi Shimbun", "276"),
+ Pair("Asatsu DK", "143"),
+ Pair("ASCII Media Works", "204"),
+ Pair("Ashi Production", "579"),
+ Pair("Ashisuto", "724"),
+ Pair("Asmik Ace", "144"),
+ Pair("AT-X", "22"),
+ Pair("Atelier Musa", "215"),
+ Pair("Atlus", "651"),
+ Pair("Audio Highs", "236"),
+ Pair("Audio Planning U", "568"),
+ Pair("Audio Tanaka", "303"),
+ Pair("Avex Entertainment", "141"),
+ Pair("Avex Pictures", "18"),
+ Pair("Avex Technologies", "755"),
+ Pair("AZ Creative", "494"),
+ Pair("Azumaker", "424"),
+ Pair("Bandai Channel", "527"),
+ Pair("Bandai Namco Arts", "98"),
+ Pair("Bandai Namco Entertainment", "78"),
+ Pair("Bandai Namco Games", "216"),
+ Pair("Bandai Namco Live Creative", "293"),
+ Pair("Bandai Namco Rights Marketing", "404"),
+ Pair("Bandai Spirits", "96"),
+ Pair("Bandai Visual", "48"),
+ Pair("Banpresto", "152"),
+ Pair("Barnum Studio", "376"),
+ Pair("Beijing Enlight Pictures", "570"),
+ Pair("Beijing IMMG", "680"),
+ Pair("Being", "495"),
+ Pair("Beyond C.", "339"),
+ Pair("Big Bang", "696"),
+ Pair("Big West", "401"),
+ Pair("BIGFACE", "477"),
+ Pair("BIGLOBE", "461"),
+ Pair("bilibili", "159"),
+ Pair("Bit grooove promotion", "12"),
+ Pair("Bit Promotion", "336"),
+ Pair("BloomZ", "631"),
+ Pair("BMG Japan", "485"),
+ Pair("BookLive", "592"),
+ Pair("Bouncy", "171"),
+ Pair("Brave Hearts", "572"),
+ Pair("Bridge", "451"),
+ Pair("Broccoli", "170"),
+ Pair("BS Asahi", "369"),
+ Pair("BS Fuji", "118"),
+ Pair("BS Japan", "454"),
+ Pair("BS NTV", "194"),
+ Pair("BS-TBS", "286"),
+ Pair("BS11", "108"),
+ Pair("Bulls Eye", "535"),
+ Pair("Bungeishunjuu", "640"),
+ Pair("Bushiroad Move", "186"),
+ Pair("Bushiroad Music", "181"),
+ Pair("Bushiroad", "95"),
+ Pair("Buzz Wave", "766"),
+ Pair("C & I entertainment", "698"),
+ Pair("C-one", "625"),
+ Pair("CA-Cygames Anime Fund", "541"),
+ Pair("Cammot", "251"),
+ Pair("Capcom", "281"),
+ Pair("CBC Television", "323"),
+ Pair("CBS", "163"),
+ Pair("chara-ani.com", "66"),
+ Pair("Chiba TV", "421"),
+ Pair("Children's Playground Entertainment", "380"),
+ Pair("China Animation Characters", "476"),
+ Pair("China Film Animation", "679"),
+ Pair("China Literature Limited", "475"),
+ Pair("Christmas Holly", "581"),
+ Pair("Chrono Gear Creative", "462"),
+ Pair("Chugai Mining", "212"),
+ Pair("Chukyo TV Broadcasting", "97"),
+ Pair("CIC", "731"),
+ Pair("Cloud22", "455"),
+ Pair("Coamix", "563"),
+ Pair("Cocoro Free", "636"),
+ Pair("Code", "87"),
+ Pair("COLOPL", "658"),
+ Pair("Comic Animation", "518"),
+ Pair("Comic Umenohone", "582"),
+ Pair("comico", "445"),
+ Pair("COMICSMART", "717"),
+ Pair("CoMix Wave Films", "377"),
+ Pair("Contents Seed", "116"),
+ Pair("Cosmic Ray", "299"),
+ Pair("Cospa", "193"),
+ Pair("CREi", "736"),
+ Pair("Crest", "777"),
+ Pair("Cromea", "254"),
+ Pair("Crunchyroll SC Anime Fund", "183"),
+ Pair("CTW", "656"),
+ Pair("CUCURI", "771"),
+ Pair("Culture Entertainment", "595"),
+ Pair("CyberAgent", "99"),
+ Pair("CyberConnect2", "763"),
+ Pair("CyberStep", "552"),
+ Pair("Cyclone Graphics", "242"),
+ Pair("Cygames", "165"),
+ Pair("d-rights", "209"),
+ Pair("D-techno", "121"),
+ Pair("D.A.S.T.", "659"),
+ Pair("D.N. Dream Partners", "418"),
+ Pair("Da Huoniao Donghua", "683"),
+ Pair("Dai Nippon Printing", "393"),
+ Pair("Daiichi Shokai", "270"),
+ Pair("Daiichikosho", "606"),
+ Pair("Darts", "585"),
+ Pair("Daume", "732"),
+ Pair("DAX Production", "76"),
+ Pair("Dear Stage inc.", "147"),
+ Pair("Deho Gallery", "711"),
+ Pair("Delfi Sound", "70"),
+ Pair("Delightworks", "734"),
+ Pair("DeNA", "104"),
+ Pair("Dentsu Meitetsu Communications", "753"),
+ Pair("Dentsu", "26"),
+ Pair("Digital Frontier", "379"),
+ Pair("Digital Works", "730"),
+ Pair("Directions", "86"),
+ Pair("DIVE II Entertainment", "34"),
+ Pair("DMM Music", "106"),
+ Pair("DMM pictures", "62"),
+ Pair("DMM.com Labo", "573"),
+ Pair("DMM.com", "313"),
+ Pair("DMM.futureworks", "327"),
+ Pair("Docomo Anime Store", "127"),
+ Pair("Dream Creation", "300"),
+ Pair("Dream Force", "537"),
+ Pair("Dream Shift", "546"),
+ Pair("Drecom", "665"),
+ Pair("Duckbill Entertainment", "437"),
+ Pair("dugout", "16"),
+ Pair("Dwango", "68"),
+ Pair("Dynamic Planning", "569"),
+ Pair("Dynamo Pictures", "520"),
+ Pair("e-notion", "610"),
+ Pair("E&G Films", "217"),
+ Pair("Earth Star Entertainment", "328"),
+ Pair("eBooK Initiative Japan", "646"),
+ Pair("Echoes", "302"),
+ Pair("Egg Firm", "79"),
+ Pair("ELF-IN", "271"),
+ Pair("EMI", "387"),
+ Pair("Emon", "229"),
+ Pair("Enoki Films", "357"),
+ Pair("ensky", "513"),
+ Pair("entama", "130"),
+ Pair("Enterbrain", "153"),
+ Pair("Epicross", "463"),
+ Pair("eStream", "776"),
+ Pair("Eswood", "333"),
+ Pair("Evil Line Records", "312"),
+ Pair("Exa International", "314"),
+ Pair("Exit Tunes", "306"),
+ Pair("Eye Move", "372"),
+ Pair("F.M.F", "329"),
+ Pair("f4samurai", "363"),
+ Pair("FABTONE", "720"),
+ Pair("famima.com", "390"),
+ Pair("FanFan Inc.", "262"),
+ Pair("Fanworks", "539"),
+ Pair("FBC", "562"),
+ Pair("feng", "285"),
+ Pair("Fields", "291"),
+ Pair("FILMONY", "673"),
+ Pair("Flex Comix", "158"),
+ Pair("flying DOG", "23"),
+ Pair("Forecast Communications", "268"),
+ Pair("Fosun Entertainment Japan", "768"),
+ Pair("Free-Will", "257"),
+ Pair("Front Line", "604"),
+ Pair("Front Wing", "185"),
+ Pair("Frontier Works", "20"),
+ Pair("Fuji Creative", "123"),
+ Pair("Fuji TV", "7"),
+ Pair("Fuji&gumi Games", "706"),
+ Pair("Fujimi Shobo", "234"),
+ Pair("Fujio Production", "714"),
+ Pair("Fujipacific Music", "259"),
+ Pair("Fujishouji", "545"),
+ Pair("Fukuoka Broadcasting System", "385"),
+ Pair("FuRyu", "120"),
+ Pair("Futabasha", "491"),
+ Pair("FUTURE LEAP", "657"),
+ Pair("G-mode", "471"),
+ Pair("G&G Entertainment", "601"),
+ Pair("GAGA", "470"),
+ Pair("Gainax", "528"),
+ Pair("Gakken", "597"),
+ Pair("Gallop", "587"),
+ Pair("Gamegate", "308"),
+ Pair("GANSIS", "311"),
+ Pair("GDH", "213"),
+ Pair("Genco", "64"),
+ Pair("Geneon Universal Entertainment", "94"),
+ Pair("Gentosha Comics", "207"),
+ Pair("Gigno Systems", "373"),
+ Pair("Global Solutions", "175"),
+ Pair("Glovision", "56"),
+ Pair("Gonzo", "620"),
+ Pair("Good Smile Company", "148"),
+ Pair("Good Smile Film", "246"),
+ Pair("GOON TRAX", "719"),
+ Pair("GRANTdesign", "634"),
+ Pair("Graphinica", "243"),
+ Pair("GREE Entertainment", "205"),
+ Pair("Green Bunny", "578"),
+ Pair("Greenwood", "586"),
+ Pair("Group TAC", "222"),
+ Pair("GYAO!", "128"),
+ Pair("Gzbrain", "635"),
+ Pair("Hakoniwa Academy Student Council", "427"),
+ Pair("Hakuhodo DY Media Partners", "51"),
+ Pair("Hakuhodo DY Music & Pictures", "115"),
+ Pair("Hakusensha", "53"),
+ Pair("Hal Film Maker", "63"),
+ Pair("Half H.P Studio", "107"),
+ Pair("Haoliners Animation League", "230"),
+ Pair("Happinet Pictures", "58"),
+ Pair("Happy Elements", "433"),
+ Pair("Harappa", "509"),
+ Pair("Harmony Gold", "499"),
+ Pair("Hawkeye", "684"),
+ Pair("Hayakawa Shobou", "508"),
+ Pair("Heart Company", "112"),
+ Pair("HeART-BIT", "739"),
+ Pair("Heewon Entertainment", "664"),
+ Pair("Heiwa", "457"),
+ Pair("Heroz", "618"),
+ Pair("High Kick Entertainment", "210"),
+ Pair("Highlights Entertainment", "406"),
+ Pair("Hikari TV", "543"),
+ Pair("Hiroshima Television", "90"),
+ Pair("HJ Holdings", "746"),
+ Pair("HOBBY BASE Yellow Submarine", "556"),
+ Pair("Hobby Japan", "289"),
+ Pair("Hobibox", "332"),
+ Pair("Hochi Shimbun", "577"),
+ Pair("Hokkaido Azmacy", "740"),
+ Pair("Hokkaido Cultural Broadcasting", "630"),
+ Pair("Hoods Entertainment", "514"),
+ Pair("HoriPro International", "648"),
+ Pair("HoriPro", "378"),
+ Pair("Hotline", "103"),
+ Pair("HOTZIPANG", "325"),
+ Pair("Houbunsha", "72"),
+ Pair("Hulu", "381"),
+ Pair("I was a Ballerina", "264"),
+ Pair("I Will", "588"),
+ Pair("i0+", "177"),
+ Pair("ibis Capital Partners", "699"),
+ Pair("Ichigo Animation", "517"),
+ Pair("Ichijinsha", "360"),
+ Pair("Idea Factory", "138"),
+ Pair("ILCA", "749"),
+ Pair("Ima Group", "479"),
+ Pair("IMAGICA Lab.", "155"),
+ Pair("ImaginAsian Entertainment", "770"),
+ Pair("Imagine", "296"),
+ Pair("INCS toenter", "114"),
+ Pair("Index", "551"),
+ Pair("Infinite", "192"),
+ Pair("iQIYI", "748"),
+ Pair("it's", "157"),
+ Pair("Iwatobi High School Swimming Club", "741"),
+ Pair("J.C.Staff", "506"),
+ Pair("Japan Home Video", "619"),
+ Pair("Japan Sleeve", "596"),
+ Pair("Japan Volleyball Association", "765"),
+ Pair("jeux d'eau", "362"),
+ Pair("Jinnan Studio", "160"),
+ Pair("JM Animation", "338"),
+ Pair("JR East Marketing & Communications", "42"),
+ Pair("JTB Entertainment", "179"),
+ Pair("JTB Next Creation", "554"),
+ Pair("Jumondo", "287"),
+ Pair("Just Production", "391"),
+ Pair("JY Animation", "292"),
+ Pair("K-Factory", "627"),
+ Pair("Kadokawa Animation", "727"),
+ Pair("Kadokawa Contents Gate", "167"),
+ Pair("Kadokawa Daiei Studio", "515"),
+ Pair("Kadokawa Media (Taiwan)", "671"),
+ Pair("Kadokawa Media House", "113"),
+ Pair("Kadokawa Pictures Japan", "65"),
+ Pair("Kadokawa Shoten", "57"),
+ Pair("Kadokawa", "11"),
+ Pair("Kakao Japan", "492"),
+ Pair("Kamikaze Douga", "745"),
+ Pair("Kanetsu Investment", "174"),
+ Pair("Kanon Sound", "188"),
+ Pair("Kansai Telecasting", "228"),
+ Pair("KBS", "150"),
+ Pair("KDDI", "550"),
+ Pair("KEN ON", "417"),
+ Pair("KENMedia", "218"),
+ Pair("Khara", "414"),
+ Pair("Kids Station", "219"),
+ Pair("King Records", "74"),
+ Pair("Kinoshita Group Holdings", "247"),
+ Pair("Kinoshita Koumuten", "350"),
+ Pair("Kinoshita Management", "589"),
+ Pair("Kinyosha", "602"),
+ Pair("Kitty Films", "231"),
+ Pair("Kiyosumi High School Mahjong Club", "607"),
+ Pair("KJJ Animation", "682"),
+ Pair("KLab", "83"),
+ Pair("KlockWorx", "55"),
+ Pair("Kobunsha", "742"),
+ Pair("Kodansha", "36"),
+ Pair("Koei Tecmo Games", "663"),
+ Pair("Konami Digital Entertainment", "729"),
+ Pair("Konami", "468"),
+ Pair("KSS", "9"),
+ Pair("Kyoraku Industrial Holdings", "59"),
+ Pair("Lantis", "49"),
+ Pair("Lawson Entertainment", "45"),
+ Pair("Lawson HMV Entertainment", "41"),
+ Pair("Legs", "166"),
+ Pair("Level-5", "480"),
+ Pair("Liber Entertainment", "284"),
+ Pair("Libre", "574"),
+ Pair("LIDENFILMS", "662"),
+ Pair("LINE Corporation", "415"),
+ Pair("LinkedBrain", "549"),
+ Pair("Live Viewing Japan", "616"),
+ Pair("Lucent Pictures Entertainment", "576"),
+ Pair("Lucky Paradise", "750"),
+ Pair("m.o.e.", "536"),
+ Pair("M.S.C", "469"),
+ Pair("Mad Box", "681"),
+ Pair("Madhouse", "713"),
+ Pair("Mag Garden", "25"),
+ Pair("MAGES.", "73"),
+ Pair("Magic Bus", "187"),
+ Pair("Magic Capsule", "61"),
+ Pair("MAGNET", "85"),
+ Pair("Maho Film", "722"),
+ Pair("Mainichi Broadcasting System", "14"),
+ Pair("Manga Productions", "345"),
+ Pair("Marine Entertainment", "516"),
+ Pair("Marubeni", "456"),
+ Pair("Marui Group", "195"),
+ Pair("Marvel Entertainment", "410"),
+ Pair("Marvelous AQL", "309"),
+ Pair("Marvelous", "149"),
+ Pair("Media Do", "279"),
+ Pair("Media Factory", "137"),
+ Pair("Media Rings", "674"),
+ Pair("MediaLink Entertainment Limited", "538"),
+ Pair("MediaNet Pictures", "140"),
+ Pair("Medicos Entertainment", "226"),
+ Pair("Mellow Head", "599"),
+ Pair("Melonbooks", "639"),
+ Pair("Memory-Tech", "252"),
+ Pair("Micro Magazine Publishing", "109"),
+ Pair("Milestone Music Publishing", "202"),
+ Pair("Milky Cartoon", "621"),
+ Pair("Mill Creek Entertainment", "349"),
+ Pair("Mime Corporation", "156"),
+ Pair("Minami Machi Bugyousho", "305"),
+ Pair("Miracle Bus", "238"),
+ Pair("Miracle Robo", "237"),
+ Pair("Mirai-Kojo", "555"),
+ Pair("Mixer", "690"),
+ Pair("Miyagi Television Broadcasting", "383"),
+ Pair("Miyazaki Broadcasting", "633"),
+ Pair("Mobcast", "321"),
+ Pair("Möbius Tone", "708"),
+ Pair("Moonbell", "548"),
+ Pair("Movic", "28"),
+ Pair("Muse Communication", "168"),
+ Pair("Music Brains", "775"),
+ Pair("Music Ray'n", "203"),
+ Pair("My Theater D.D.", "407"),
+ Pair("Myrica Music", "184"),
+ Pair("NADA Holdings", "439"),
+ Pair("Nagoya Broadcasting Network", "398"),
+ Pair("Naver Webtoons", "474"),
+ Pair("NAZ", "557"),
+ Pair("NBCUniversal Entertainment Japan", "13"),
+ Pair("NEC Avenue", "443"),
+ Pair("Nelke Planning", "685"),
+ Pair("Nelvana", "426"),
+ Pair("NetEase", "399"),
+ Pair("Netflix", "84"),
+ Pair("NewGin", "580"),
+ Pair("Nexon", "122"),
+ Pair("NHK Enterprises", "134"),
+ Pair("NHK-BS2", "628"),
+ Pair("NHK", "30"),
+ Pair("NHN PlayArt", "478"),
+ Pair("NIANTIC", "386"),
+ Pair("NichiNare", "227"),
+ Pair("Nichion", "190"),
+ Pair("Nihon Ad Systems", "81"),
+ Pair("Nihon Falcom", "522"),
+ Pair("Nihon Keizai Koukokusha", "413"),
+ Pair("Nikkatsu", "341"),
+ Pair("Nintendo", "697"),
+ Pair("Nippon Animation", "335"),
+ Pair("Nippon Columbia", "92"),
+ Pair("Nippon Cultural Broadcasting", "105"),
+ Pair("Nippon Ichi Software", "412"),
+ Pair("Nippon Shuppan Hanbai (Nippan) K.K.", "490"),
+ Pair("Nippon Television Music", "364"),
+ Pair("Nippon Television Network", "77"),
+ Pair("Nishinippon Broadcasting", "504"),
+ Pair("Nitroplus", "180"),
+ Pair("North Stars Pictures", "342"),
+ Pair("Notes", "126"),
+ Pair("NTT Docomo", "253"),
+ Pair("NTT Plala", "182"),
+ Pair("OB Planning", "125"),
+ Pair("Office ENDLESS", "273"),
+ Pair("OLM", "502"),
+ Pair("Omnibus Japan", "133"),
+ Pair("On The Run", "304"),
+ Pair("On-Lead", "762"),
+ Pair("ONEMUSIC", "436"),
+ Pair("Orange", "605"),
+ Pair("Orchid Seed", "359"),
+ Pair("Overlap", "337"),
+ Pair("Palm Studio", "221"),
+ Pair("Parco", "609"),
+ Pair("Pazzy Entertainment", "561"),
+ Pair("pH Studio", "294"),
+ Pair("Pia", "591"),
+ Pair("Pierrot Plus", "611"),
+ Pair("Pink Pineapple", "511"),
+ Pair("Pioneer LDC", "298"),
+ Pair("Planet", "721"),
+ Pair("Plum", "488"),
+ Pair("Plus One", "735"),
+ Pair("Po10tial", "751"),
+ Pair("Polygon Pictures", "688"),
+ Pair("Pony Canyon Enterprise", "38"),
+ Pair("Pony Canyon", "35"),
+ Pair("PPP", "703"),
+ Pair("PRA", "233"),
+ Pair("Production Ace", "290"),
+ Pair("Production I.G", "19"),
+ Pair("Q-Tec", "244"),
+ Pair("Qiying Animation", "744"),
+ Pair("QREAZY", "759"),
+ Pair("Quaras", "629"),
+ Pair("Quatre Stella", "761"),
+ Pair("RAB Aomori Broadcasting", "738"),
+ Pair("Radio Osaka", "608"),
+ Pair("Radix", "422"),
+ Pair("Raku High Student Council", "351"),
+ Pair("Rakuonsha", "5"),
+ Pair("Rakuten", "521"),
+ Pair("RAY", "161"),
+ Pair("Remic", "603"),
+ Pair("Rex Entertainment", "704"),
+ Pair("Rialto Entertainment", "486"),
+ Pair("RightTracks", "670"),
+ Pair("Rironsha", "278"),
+ Pair("Robot Communications", "343"),
+ Pair("Romantica club !!", "747"),
+ Pair("Rondo Robe", "223"),
+ Pair("Royal Limousine", "530"),
+ Pair("Ryukyu Asahi Broadcasting", "348"),
+ Pair("S-TAR7", "716"),
+ Pair("Saban Brands", "689"),
+ Pair("Sakura Create", "69"),
+ Pair("Sammy", "154"),
+ Pair("Sankyo Planning", "752"),
+ Pair("Sanrio", "295"),
+ Pair("Sanyo Bussan", "669"),
+ Pair("SANZIGEN", "472"),
+ Pair("Sapporo Television Broadcasting", "382"),
+ Pair("Satelight", "531"),
+ Pair("Sav! The World Productions", "31"),
+ Pair("SB Creative", "409"),
+ Pair("Scarlet", "769"),
+ Pair("Science SARU", "60"),
+ Pair("Sega Interactive", "718"),
+ Pair("Sega", "322"),
+ Pair("Seikaisha", "737"),
+ Pair("Seven", "566"),
+ Pair("Shaft", "756"),
+ Pair("Shanghai Animation Film Studio", "450"),
+ Pair("Shanghai Tiantan Culture & Media", "438"),
+ Pair("Shelty", "558"),
+ Pair("Shimogumi", "593"),
+ Pair("Shin-Ei Animation", "320"),
+ Pair("Shinchosha", "501"),
+ Pair("Shinshokan", "245"),
+ Pair("Shizuoka Daiichi Television", "384"),
+ Pair("Shochiku Music Publishing", "767"),
+ Pair("Shochiku", "21"),
+ Pair("Shogakukan Music & Digital Entertainment", "542"),
+ Pair("Shogakukan-Shueisha Productions", "91"),
+ Pair("Shogakukan", "82"),
+ Pair("Shounen Gahousha", "334"),
+ Pair("Shout! Factory", "612"),
+ Pair("Show Corporation", "452"),
+ Pair("Showgate", "50"),
+ Pair("Shueisha", "6"),
+ Pair("Shufunotomo", "151"),
+ Pair("Shun Produce", "263"),
+ Pair("SILVER LINK.", "694"),
+ Pair("SKY Perfect Well Think", "353"),
+ Pair("SKY PerfecTV!", "275"),
+ Pair("Slow Curve", "272"),
+ Pair("SME Visual Works", "255"),
+ Pair("Smile Company", "40"),
+ Pair("Smiral Animation", "330"),
+ Pair("Soeishinsha", "324"),
+ Pair("Soft Garage", "258"),
+ Pair("SoftBank Creative", "248"),
+ Pair("SoftX", "523"),
+ Pair("Sogo Vision", "135"),
+ Pair("Sol Blade", "397"),
+ Pair("Sola Entertainment", "473"),
+ Pair("Sonilude", "169"),
+ Pair("Sony Creative Products", "498"),
+ Pair("Sony Interactive Entertainment", "666"),
+ Pair("Sony Music Communications", "71"),
+ Pair("Sony Music Entertainment", "29"),
+ Pair("Sony Music Solutions", "110"),
+ Pair("Sony PCL", "52"),
+ Pair("Sony Pictures Entertainment", "211"),
+ Pair("Sotsu Music Publishing", "214"),
+ Pair("Sotsu", "32"),
+ Pair("Sound Team Don Juan", "365"),
+ Pair("Souten no Ken", "691"),
+ Pair("Sovat Theater", "583"),
+ Pair("Spacey Music Entertainment", "534"),
+ Pair("Spectrum", "772"),
+ Pair("SPO Entertainment", "565"),
+ Pair("Square Enix", "1"),
+ Pair("Starchild Records", "132"),
+ Pair("Stardust Promotion", "615"),
+ Pair("Starry Cube", "654"),
+ Pair("Steve N' Steven", "449"),
+ Pair("STORY", "44"),
+ Pair("Straight Edge", "80"),
+ Pair("Strawberry Meets Pictures", "743"),
+ Pair("Stray Cats", "355"),
+ Pair("Studio A-CAT", "102"),
+ Pair("Studio Blanc", "701"),
+ Pair("Studio CHANT", "301"),
+ Pair("Studio Comet", "661"),
+ Pair("Studio elle", "280"),
+ Pair("Studio Fantasia", "428"),
+ Pair("Studio GOONEYS", "687"),
+ Pair("Studio Gram", "733"),
+ Pair("Studio Hibari", "265"),
+ Pair("Studio Jack", "47"),
+ Pair("Studio Junio", "754"),
+ Pair("Studio Kai", "705"),
+ Pair("Studio Kelmadick", "392"),
+ Pair("Studio Kikan", "199"),
+ Pair("Studio Kyuuma", "510"),
+ Pair("Studio LAN", "481"),
+ Pair("Studio Mausu", "33"),
+ Pair("Studio Mir", "571"),
+ Pair("Studio Moriken", "660"),
+ Pair("Studio NOIX", "346"),
+ Pair("Studio Nue", "402"),
+ Pair("Studio Pastoral", "405"),
+ Pair("Studio Pierrot", "493"),
+ Pair("Studio Saki Makura", "668"),
+ Pair("Studio Shamrock", "307"),
+ Pair("Studio Take Off", "693"),
+ Pair("Studio Tulip", "260"),
+ Pair("Studio Wombat", "626"),
+ Pair("Studio Zain", "408"),
+ Pair("studioGONG", "389"),
+ Pair("StudioRF Inc.", "544"),
+ Pair("Sumitomo", "145"),
+ Pair("Sumzap", "17"),
+ Pair("Sun TV", "93"),
+ Pair("Sunny Side Up", "440"),
+ Pair("Sunrise Music Publishing", "403"),
+ Pair("Sunrise", "239"),
+ Pair("SUPA LOVE", "653"),
+ Pair("Synergy Japan", "758"),
+ Pair("SynergySP", "757"),
+ Pair("T.O Entertainment", "644"),
+ Pair("Tablier Communications", "526"),
+ Pair("Takahashi Studio", "447"),
+ Pair("Takara Tomy A.R.T.S", "368"),
+ Pair("Takeshobo", "173"),
+ Pair("TAKI Corporation", "614"),
+ Pair("tamakoshi", "655"),
+ Pair("TAP", "8"),
+ Pair("Tapioca", "464"),
+ Pair("Tatsunoko Production", "598"),
+ Pair("TBS", "131"),
+ Pair("TC Entertainment", "356"),
+ Pair("TEAM Entertainment Inc.", "760"),
+ Pair("Techno Sound", "37"),
+ Pair("Teichiku Entertainment", "564"),
+ Pair("Telecom Animation Film", "318"),
+ Pair("Tencent Animation & Comics", "525"),
+ Pair("Tencent Japan", "524"),
+ Pair("Tencent Penguin Pictures", "282"),
+ Pair("Tezuka Productions", "352"),
+ Pair("The Answer Studio", "575"),
+ Pair("Think Corporation", "559"),
+ Pair("THINKR", "547"),
+ Pair("Three Fat Samurai", "396"),
+ Pair("TMS Entertainment", "142"),
+ Pair("TMS Music", "189"),
+ Pair("TMS-Kyokuchi", "584"),
+ Pair("TO Books", "411"),
+ Pair("Tochigi TV", "643"),
+ Pair("Todas", ""),
+ Pair("Toei Agency", "172"),
+ Pair("Toei Animation", "266"),
+ Pair("Toei Video", "319"),
+ Pair("Tohan Corporation", "590"),
+ Pair("TOHO animation", "15"),
+ Pair("Toho Interactive Animation", "725"),
+ Pair("Toho Music", "206"),
+ Pair("Toho Visual Entertainment", "709"),
+ Pair("Tohokushinsha Film Corporation", "101"),
+ Pair("Tokuma Japan Communications", "232"),
+ Pair("Tokuma Shoten", "224"),
+ Pair("Tokyo Animator Gakuin", "553"),
+ Pair("Tokyo Kids", "400"),
+ Pair("Tokyo Movie Shinsha", "288"),
+ Pair("Tokyo MX", "24"),
+ Pair("Tokyo Theatres", "678"),
+ Pair("TOMY Company", "649"),
+ Pair("Top Marshal", "560"),
+ Pair("Top-Insight International", "310"),
+ Pair("Toppan Printing", "484"),
+ Pair("Toranoana", "198"),
+ Pair("Tose", "672"),
+ Pair("Toshiba Digital Frontiers", "675"),
+ Pair("Toshiba EMI", "431"),
+ Pair("Toshiba Entertainment", "220"),
+ Pair("Tosho Printing", "637"),
+ Pair("Toy's Factory", "146"),
+ Pair("Toyo Recording", "394"),
+ Pair("Trans Arts", "371"),
+ Pair("Trick Block", "88"),
+ Pair("Trigger", "533"),
+ Pair("Trilogy Future Studio", "225"),
+ Pair("Trinet Entertainment", "540"),
+ Pair("Trinity Sound", "235"),
+ Pair("TRUSS", "441"),
+ Pair("Tsuburaya Productions", "692"),
+ Pair("Tsukuru no Mori", "613"),
+ Pair("TSUTAYA", "723"),
+ Pair("TV Aichi", "429"),
+ Pair("TV Asahi Music", "617"),
+ Pair("TV Asahi", "196"),
+ Pair("TV Osaka", "366"),
+ Pair("TV Saitama", "420"),
+ Pair("TV Tokyo Music", "10"),
+ Pair("TV Tokyo", "3"),
+ Pair("Twin Engine", "46"),
+ Pair("TYO Animations", "460"),
+ Pair("Typhoon Graphics", "715"),
+ Pair("U-NEXT", "458"),
+ Pair("Ultra Super Pictures", "136"),
+ Pair("Universal Music Japan", "496"),
+ Pair("Universal Pictures Japan", "600"),
+ Pair("Universal Studios", "707"),
+ Pair("VAP", "75"),
+ Pair("Victor Entertainment", "39"),
+ Pair("Video Market", "529"),
+ Pair("Visual 80", "331"),
+ Pair("Visual Arts", "100"),
+ Pair("Visual Vision", "277"),
+ Pair("VIZ Media", "624"),
+ Pair("voque ting", "43"),
+ Pair("Voyager Entertainment", "503"),
+ Pair("VV-ALKLINE", "710"),
+ Pair("W-Toon Studio", "326"),
+ Pair("Walt Disney Japan", "416"),
+ Pair("Walt Disney Studios", "344"),
+ Pair("WAO World", "505"),
+ Pair("Wargaming Japan", "178"),
+ Pair("Warner Bros. Japan", "54"),
+ Pair("Warner Bros. Pictures", "448"),
+ Pair("Warner Music Japan", "425"),
+ Pair("Wave Master", "773"),
+ Pair("Wawayu Animation", "124"),
+ Pair("Wicky.Records", "370"),
+ Pair("Wolfsbane", "652"),
+ Pair("World Cosplay Summit", "367"),
+ Pair("WOWMAX", "774"),
+ Pair("WOWOW", "191"),
+ Pair("Xebec", "201"),
+ Pair("XFLAG Pictures", "446"),
+ Pair("XFLAG", "240"),
+ Pair("Xing", "388"),
+ Pair("Y&N Brothers", "700"),
+ Pair("Yahoo! Japan", "197"),
+ Pair("Yamasa", "283"),
+ Pair("Yaoqi", "200"),
+ Pair("Yokohama Animation Lab", "676"),
+ Pair("Yomiko Advertising", "89"),
+ Pair("Yomiuri Advertising", "315"),
+ Pair("Yomiuri Shimbun", "419"),
+ Pair("Yomiuri Telecasting", "27"),
+ Pair("Yomiuri TV Enterprise", "261"),
+ Pair("Yoshimoto Creative Agency", "395"),
+ Pair("Yostar Pictures", "354"),
+ Pair("Youmex", "430"),
+ Pair("YTV", "117"),
+ Pair("Yuhodo", "139"),
+ Pair("YUKE'S", "340"),
+ Pair("Zack Promotion", "374"),
+ Pair("ZERO-A", "483"),
+ Pair("Zero-G Room", "423"),
+ Pair("ZOOM ENTERPRISE", "667"),
+ )
+
+ val genres = arrayOf(
+ Pair("Amor de meninas", "amor-de-meninas"),
+ Pair("Amor de meninos", "amor-de-meninos"),
+ Pair("Artes Marciais", "artes-marciais"),
+ Pair("Avant Garde", "avant-garde"),
+ Pair("Aventura", "aventura"),
+ Pair("Ação", "acao"),
+ Pair("Comédia", "comedia"),
+ Pair("Cotidiano", "cotidiano"),
+ Pair("Demência", "demencia"),
+ Pair("Demônios", "demonios"),
+ Pair("Drama", "drama"),
+ Pair("Ecchi", "ecchi"),
+ Pair("Erotica", "erotica"),
+ Pair("Escolar", "escolar"),
+ Pair("Espacial", "espacial"),
+ Pair("Esportes", "esportes"),
+ Pair("Fantasia", "fantasia"),
+ Pair("Fatia de vida", "fatia-de-vida"),
+ Pair("Ficção Científica", "ficcao-cientifica"),
+ Pair("Game", "game"),
+ Pair("Garotos amam", "garotos-amam"),
+ Pair("Gourmet", "gourmet"),
+ Pair("Harém", "harem"),
+ Pair("Hentai", "hentai"),
+ Pair("Histórico", "historico"),
+ Pair("Horror", "horror"),
+ Pair("Infantil", "infantil"),
+ Pair("Josei", "josei"),
+ Pair("Magia", "magia"),
+ Pair("Mecha", "mecha"),
+ Pair("Militar", "militar"),
+ Pair("Mistério", "misterio"),
+ Pair("Musical", "musical"),
+ Pair("Paródia", "parodia"),
+ Pair("Policial", "policial"),
+ Pair("Psicológico", "psicologico"),
+ Pair("Romance", "romance"),
+ Pair("Samurai", "samurai"),
+ Pair("Sci-Fi", "sci-fi"),
+ Pair("Seinen", "seinen"),
+ Pair("Shoujo", "shoujo"),
+ Pair("Shoujo-Ai", "shoujo-ai"),
+ Pair("Shounen", "shounen"),
+ Pair("Shounen-Ai", "shounen-ai"),
+ Pair("Slice of Life", "slice-of-life"),
+ Pair("Sobrenatural", "sobrenatural"),
+ Pair("Super Poderes", "super-poderes"),
+ Pair("Suspense", "suspense"),
+ Pair("Terror", "terror"),
+ Pair("Thriller", "thriller"),
+ Pair("Tragédia", "tragedia"),
+ Pair("Vampiros", "vampiros"),
+ Pair("Vanguarda", "vanguarda"),
+ Pair("Vida Escolar", "vida-escolar"),
+ Pair("Vida de trabalho", "vida-de-trabalho"),
+ Pair("Yaoi", "yaoi"),
+ Pair("Yuri", "yuri"),
+ )
+ }
+}
diff --git a/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AVUrlActivity.kt b/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AVUrlActivity.kt
new file mode 100644
index 000000000..c4c72c25b
--- /dev/null
+++ b/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AVUrlActivity.kt
@@ -0,0 +1,43 @@
+package eu.kanade.tachiyomi.animeextension.pt.animesvision
+
+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://animes.vision//- intents
+ * and redirects them to the main Aniyomi process.
+ */
+class AVUrlActivity : Activity() {
+
+ private val TAG = "AVUrlActivity"
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val pathSegments = intent?.data?.pathSegments
+ if (pathSegments != null && pathSegments.size > 1) {
+ val type = pathSegments[0]
+ val item = pathSegments[1]
+ val searchQuery = "$type/$item"
+ val mainIntent = Intent().apply {
+ action = "eu.kanade.tachiyomi.ANIMESEARCH"
+ putExtra("query", "${AnimesVision.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)
+ }
+}
diff --git a/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AnimesVision.kt b/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AnimesVision.kt
new file mode 100644
index 000000000..c69d11798
--- /dev/null
+++ b/src/pt/animesvision/src/eu/kanade/tachiyomi/animeextension/pt/animesvision/AnimesVision.kt
@@ -0,0 +1,390 @@
+package eu.kanade.tachiyomi.animeextension.pt.animesvision
+
+import android.app.Application
+import android.content.SharedPreferences
+import androidx.preference.ListPreference
+import androidx.preference.PreferenceScreen
+import eu.kanade.tachiyomi.animeextension.pt.animesvision.dto.AVResponseDto
+import eu.kanade.tachiyomi.animeextension.pt.animesvision.dto.PayloadData
+import eu.kanade.tachiyomi.animeextension.pt.animesvision.dto.PayloadItem
+import eu.kanade.tachiyomi.animeextension.pt.animesvision.extractors.GlobalVisionExtractor
+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.streamtapeextractor.StreamTapeExtractor
+import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor
+import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.network.POST
+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.decodeFromString
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
+import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
+import okhttp3.Interceptor
+import okhttp3.OkHttpClient
+import okhttp3.Request
+import okhttp3.RequestBody.Companion.toRequestBody
+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 java.io.IOException
+import java.lang.Exception
+
+class AnimesVision : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
+
+ override val name = "AnimesVision"
+
+ override val baseUrl = "https://animes.vision"
+
+ override val lang = "pt-BR"
+
+ override val supportsLatest = true
+
+ override val client: OkHttpClient = network.cloudflareClient.newBuilder()
+ .addInterceptor(::loginInterceptor)
+ .build()
+
+ private val json = Json {
+ ignoreUnknownKeys = true
+ }
+
+ private val preferences: SharedPreferences by lazy {
+ Injekt.get().getSharedPreferences("source_$id", 0x0000)
+ }
+
+ override fun headersBuilder() = super.headersBuilder()
+ .add("Referer", baseUrl)
+ .add("Accept-Language", ACCEPT_LANGUAGE)
+
+ // ============================== Popular ===============================
+ private fun nextPageSelector(): String = "ul.pagination li.page-item:contains(›):not(.disabled)"
+ override fun popularAnimeSelector(): String = "div#anime-trending div.item > a.film-poster"
+ override fun popularAnimeRequest(page: Int): Request = GET(baseUrl)
+
+ override fun popularAnimeFromElement(element: Element): SAnime {
+ val anime = SAnime.create().apply {
+ val img = element.selectFirst("img")!!
+ setUrlWithoutDomain(element.attr("href"))
+ title = img.attr("title")
+ thumbnail_url = img.attr("src")
+ }
+ return anime
+ }
+
+ override fun popularAnimeNextPageSelector() = null
+
+ // ============================== Episodes ==============================
+ override fun episodeListSelector(): String = "div.container div.screen-items > div.item"
+
+ private fun getAllEps(response: Response): List {
+ val epList = mutableListOf()
+ val url = response.request.url.toString()
+ val doc = if (url.contains("/episodio-") || url.contains("/filme-")) {
+ getRealDoc(response.asJsoup())
+ } else { response.asJsoup() }
+
+ val epElementList = doc.select(episodeListSelector())
+ epList.addAll(epElementList.map { episodeFromElement(it) })
+ if (doc.hasNextPage()) {
+ val nextUrl = doc.selectFirst(nextPageSelector())!!
+ .selectFirst("a")!!
+ .attr("href")
+ val newResponse = client.newCall(GET(nextUrl)).execute()
+ epList.addAll(getAllEps(newResponse))
+ }
+ return epList
+ }
+ override fun episodeListParse(response: Response): List {
+ return getAllEps(response).reversed()
+ }
+
+ override fun episodeFromElement(element: Element): SEpisode {
+ val episode = SEpisode.create().apply {
+ setUrlWithoutDomain(element.selectFirst("a")!!.attr("href"))
+ val epName = element.selectFirst("h3")!!.text().trim()
+ name = epName
+ episode_number = try {
+ epName.substringAfterLast(" ").toFloat()
+ } catch (e: NumberFormatException) { 0F }
+ }
+ return episode
+ }
+
+ // ============================ Video Links =============================
+ override fun videoListParse(response: Response): List