From 65411a254d783dea8a01d771bcfbddbce05e108c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?U=C4=9Fur=20Kuyu?= <ukuyu34@gmail.com>
Date: Mon, 17 Feb 2025 01:30:53 +0300
Subject: [PATCH] Implemented advanced search feature which is already exists
 in the TurkAnime website. (#677)

-According to this change, now user could search via tags from anime details page
---
 .../animeextension/tr/turkanime/TurkAnime.kt  |   68 +-
 .../tr/turkanime/TurkAnimeFilters.kt          | 1357 +++++++++++++++++
 2 files changed, 1420 insertions(+), 5 deletions(-)
 create mode 100644 src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnimeFilters.kt

diff --git a/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnime.kt b/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnime.kt
index b86c84e3..22028b3f 100644
--- a/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnime.kt
+++ b/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnime.kt
@@ -37,6 +37,7 @@ import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
 import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.network.POST
 import eu.kanade.tachiyomi.network.await
+import eu.kanade.tachiyomi.network.awaitSuccess
 import eu.kanade.tachiyomi.util.asJsoup
 import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking
 import eu.kanade.tachiyomi.util.parallelMapBlocking
@@ -106,13 +107,70 @@ class TurkAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
 
     override fun latestUpdatesNextPageSelector() = popularAnimeNextPageSelector()
 
+    // ============================== Filters ===============================
+    override fun getFilterList(): AnimeFilterList = TurkAnimeFilters.FILTER_LIST
+
     // =============================== Search ===============================
     override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) =
-        POST(
-            "$baseUrl/arama?sayfa=$page",
-            headers,
-            FormBody.Builder().add("arama", query).build(),
-        )
+        throw UnsupportedOperationException()
+
+    private fun searchAnimeRequest(
+        page: Int,
+        query: String,
+        filters: TurkAnimeFilters.FilterSearchParams,
+    ): Request {
+        return if (query.isBlank()) {
+            POST(
+                "$baseUrl/ajax/animeler?sayfa=$page",
+                xmlHeader,
+                FormBody.Builder().apply {
+                    filters.type.takeLast(3).forEach {
+                        add("tip[]", it)
+                    }
+                    filters.genre.takeLast(3).forEach {
+                        add("tur[]", it)
+                    }
+                    filters.year.takeLast(2).forEach {
+                        add("yil[]", it)
+                    }
+                    filters.point.takeLast(2).forEach {
+                        add("puan[]", it)
+                    }
+                    filters.like.takeLast(2).forEach {
+                        add("begeni[]", it)
+                    }
+                    filters.producer.takeLast(3).forEach {
+                        add("yapimci[]", it)
+                    }
+                    filters.studio.takeLast(3).forEach {
+                        add("studyo[]", it)
+                    }
+                    add("listele", filters.list)
+                    add("sezon", filters.season)
+                    add("sirala", filters.sort)
+                }.build(),
+            )
+        } else {
+            POST(
+                "$baseUrl/arama?sayfa=$page",
+                headers,
+                FormBody.Builder().add("arama", query).build(),
+            )
+        }
+    }
+
+    override suspend fun getSearchAnime(
+        page: Int,
+        query: String,
+        filters: AnimeFilterList,
+    ): AnimesPage {
+        val params = TurkAnimeFilters.getSearchParameters(filters)
+        return client.newCall(searchAnimeRequest(page, query, params))
+            .awaitSuccess()
+            .let { response ->
+                searchAnimeParse(response)
+            }
+    }
 
     override fun searchAnimeParse(response: Response): AnimesPage {
         val document = response.asJsoup()
diff --git a/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnimeFilters.kt b/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnimeFilters.kt
new file mode 100644
index 00000000..47583d25
--- /dev/null
+++ b/src/tr/turkanime/src/eu/kanade/tachiyomi/animeextension/tr/turkanime/TurkAnimeFilters.kt
@@ -0,0 +1,1357 @@
+package eu.kanade.tachiyomi.animeextension.tr.turkanime
+
+import eu.kanade.tachiyomi.animesource.model.AnimeFilter
+import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
+
+object TurkAnimeFilters {
+    open class QueryPartFilter(
+        displayName: String,
+        private val vals: Array<Pair<String, String>>,
+    ) : AnimeFilter.Select<String>(
+        displayName,
+        vals.map { it.second }.toTypedArray(),
+    ) {
+        fun toQueryPart() = vals[state].first
+    }
+
+    private inline fun <reified R> AnimeFilterList.asQueryPart(): String {
+        return (getFirst<R>() as QueryPartFilter).toQueryPart()
+    }
+
+    private inline fun <reified R> AnimeFilterList.getFirst(): R {
+        return first { it is R } as R
+    }
+
+    private inline fun <reified R> AnimeFilterList.parseCheckbox(
+        options: Array<Pair<String, String>>,
+    ): List<String> {
+        return (getFirst<R>() as CheckBoxFilterList).state
+            .filter { it.state }
+            .map { checkbox -> options.find { it.second == checkbox.name }!!.first }
+            .filter(String::isNotBlank)
+    }
+
+    open class CheckBoxFilterList(name: String, values: List<CheckBox>) :
+        AnimeFilter.Group<AnimeFilter.CheckBox>(name, values)
+
+    private class CheckBoxVal(name: String, state: Boolean = false) :
+        AnimeFilter.CheckBox(name, state)
+
+    class TypeFilter : CheckBoxFilterList(
+        "Kategori",
+        TurkAnimeFiltersData.TYPE.map { CheckBoxVal(it.second, false) },
+    )
+
+    class GenreFilter : CheckBoxFilterList(
+        "Tür",
+        TurkAnimeFiltersData.GENRE.map { CheckBoxVal(it.second, false) },
+    )
+
+    class YearFilter : CheckBoxFilterList(
+        "Başlama & Bitiş Yılı",
+        TurkAnimeFiltersData.YEAR.map { CheckBoxVal(it.second, false) },
+    )
+
+    class PointFilter : CheckBoxFilterList(
+        "Başlama & Bitiş Puanı",
+        TurkAnimeFiltersData.POINT.map { CheckBoxVal(it.second, false) },
+    )
+
+    class LikeFilter : CheckBoxFilterList(
+        "Başlama & Bitiş Beğenisi",
+        TurkAnimeFiltersData.LIKE.map { CheckBoxVal(it.second, false) },
+    )
+
+    class ProducerFilter : CheckBoxFilterList(
+        "Yapımcı Firma",
+        TurkAnimeFiltersData.PRODUCER.map { CheckBoxVal(it.second, false) },
+    )
+
+    class StudioFilter : CheckBoxFilterList(
+        "Stüdyo",
+        TurkAnimeFiltersData.PRODUCER.map { CheckBoxVal(it.second, false) },
+    )
+
+    class ListFilter : QueryPartFilter("Listeleme", TurkAnimeFiltersData.LIST)
+    class SeasonFilter : QueryPartFilter("Sezon", TurkAnimeFiltersData.SEASON)
+    class SortFilter : QueryPartFilter("Sıralama", TurkAnimeFiltersData.SORT)
+
+    private fun Int.headerWarning(): String = "--- Seçilen son $this seçenek kullanılır ---"
+
+    val FILTER_LIST
+        get() = AnimeFilterList(
+            AnimeFilter.Header(3.headerWarning()),
+            TypeFilter(),
+            AnimeFilter.Separator(),
+            AnimeFilter.Header(3.headerWarning()),
+            GenreFilter(),
+            AnimeFilter.Separator(),
+            AnimeFilter.Header(2.headerWarning()),
+            YearFilter(),
+            AnimeFilter.Separator(),
+            AnimeFilter.Header(2.headerWarning()),
+            PointFilter(),
+            AnimeFilter.Separator(),
+            AnimeFilter.Header(2.headerWarning()),
+            LikeFilter(),
+            AnimeFilter.Separator(),
+            AnimeFilter.Header("Listenin yüklemesi zaman alabilir"),
+            AnimeFilter.Header(3.headerWarning()),
+            ProducerFilter(),
+            AnimeFilter.Separator(),
+            AnimeFilter.Header("Listenin yüklemesi zaman alabilir"),
+            AnimeFilter.Header(3.headerWarning()),
+            StudioFilter(),
+            AnimeFilter.Separator(),
+            ListFilter(),
+            SeasonFilter(),
+            SortFilter(),
+        )
+
+    data class FilterSearchParams(
+        val type: List<String> = emptyList(),
+        val genre: List<String> = emptyList(),
+        val year: List<String> = emptyList(),
+        val point: List<String> = emptyList(),
+        val like: List<String> = emptyList(),
+        val producer: List<String> = emptyList(),
+        val studio: List<String> = emptyList(),
+        val list: String = "",
+        val season: String = "",
+        val sort: String = "",
+    )
+
+    internal fun getSearchParameters(filters: AnimeFilterList): FilterSearchParams {
+        if (filters.isEmpty()) return FilterSearchParams()
+
+        return FilterSearchParams(
+            filters.parseCheckbox<TypeFilter>(TurkAnimeFiltersData.TYPE),
+            filters.parseCheckbox<GenreFilter>(TurkAnimeFiltersData.GENRE),
+            filters.parseCheckbox<YearFilter>(TurkAnimeFiltersData.YEAR),
+            filters.parseCheckbox<PointFilter>(TurkAnimeFiltersData.POINT),
+            filters.parseCheckbox<LikeFilter>(TurkAnimeFiltersData.LIKE),
+            filters.parseCheckbox<ProducerFilter>(TurkAnimeFiltersData.PRODUCER),
+            filters.parseCheckbox<StudioFilter>(TurkAnimeFiltersData.PRODUCER),
+            filters.asQueryPart<ListFilter>(),
+            filters.asQueryPart<SeasonFilter>(),
+            filters.asQueryPart<SortFilter>(),
+        )
+    }
+
+    private object TurkAnimeFiltersData {
+        val GENRE = arrayOf(
+            Pair("1", "Aksiyon"),
+            Pair("3", "Arabalar"),
+            Pair("38", "Askeri"),
+            Pair("5", "Avangard"),
+            Pair("24", "Bilim Kurgu"),
+            Pair("16", "Büyü"),
+            Pair("15", "Çocuklar"),
+            Pair("37", "Doğaüstü Güçler"),
+            Pair("17", "Dövüş Sanatları"),
+            Pair("8", "Dram"),
+            Pair("9", "Ecchi"),
+            Pair("10", "Fantastik"),
+            Pair("41", "Gerilim"),
+            Pair("7", "Gizem"),
+            Pair("35", "Harem"),
+            Pair("43", "Josei"),
+            Pair("4", "Komedi"),
+            Pair("14", "Korku"),
+            Pair("2", "Macera"),
+            Pair("18", "Mecha"),
+            Pair("19", "Müzik"),
+            Pair("23", "Okul"),
+            Pair("11", "Oyun"),
+            Pair("20", "Parodi"),
+            Pair("39", "Polisiye"),
+            Pair("40", "Psikolojik"),
+            Pair("22", "Romantizm"),
+            Pair("21", "Samuray"),
+            Pair("42", "Seinen"),
+            Pair("6", "Şeytanlar"),
+            Pair("25", "Shoujo"),
+            Pair("26", "Shoujo Ai"),
+            Pair("27", "Shounen"),
+            Pair("28", "Shounen Ai"),
+            Pair("30", "Spor"),
+            Pair("31", "Süper Güçler"),
+            Pair("13", "Tarihi"),
+            Pair("29", "Uzay"),
+            Pair("32", "Vampir"),
+            Pair("33", "Yaoi"),
+            Pair("36", "Yaşamdan Kesitler"),
+            Pair("34", "Yuri"),
+        )
+
+        val YEAR = arrayOf(
+            Pair("1930", "1930"),
+            Pair("1931", "1931"),
+            Pair("1932", "1932"),
+            Pair("1933", "1933"),
+            Pair("1934", "1934"),
+            Pair("1935", "1935"),
+            Pair("1936", "1936"),
+            Pair("1937", "1937"),
+            Pair("1938", "1938"),
+            Pair("1939", "1939"),
+            Pair("1940", "1940"),
+            Pair("1941", "1941"),
+            Pair("1942", "1942"),
+            Pair("1943", "1943"),
+            Pair("1944", "1944"),
+            Pair("1945", "1945"),
+            Pair("1946", "1946"),
+            Pair("1947", "1947"),
+            Pair("1948", "1948"),
+            Pair("1949", "1949"),
+            Pair("1950", "1950"),
+            Pair("1951", "1951"),
+            Pair("1952", "1952"),
+            Pair("1953", "1953"),
+            Pair("1954", "1954"),
+            Pair("1955", "1955"),
+            Pair("1956", "1956"),
+            Pair("1957", "1957"),
+            Pair("1958", "1958"),
+            Pair("1959", "1959"),
+            Pair("1960", "1960"),
+            Pair("1961", "1961"),
+            Pair("1962", "1962"),
+            Pair("1963", "1963"),
+            Pair("1964", "1964"),
+            Pair("1965", "1965"),
+            Pair("1966", "1966"),
+            Pair("1967", "1967"),
+            Pair("1968", "1968"),
+            Pair("1969", "1969"),
+            Pair("1970", "1970"),
+            Pair("1971", "1971"),
+            Pair("1972", "1972"),
+            Pair("1973", "1973"),
+            Pair("1974", "1974"),
+            Pair("1975", "1975"),
+            Pair("1976", "1976"),
+            Pair("1977", "1977"),
+            Pair("1978", "1978"),
+            Pair("1979", "1979"),
+            Pair("1980", "1980"),
+            Pair("1981", "1981"),
+            Pair("1982", "1982"),
+            Pair("1983", "1983"),
+            Pair("1984", "1984"),
+            Pair("1985", "1985"),
+            Pair("1986", "1986"),
+            Pair("1987", "1987"),
+            Pair("1988", "1988"),
+            Pair("1989", "1989"),
+            Pair("1990", "1990"),
+            Pair("1991", "1991"),
+            Pair("1992", "1992"),
+            Pair("1993", "1993"),
+            Pair("1994", "1994"),
+            Pair("1995", "1995"),
+            Pair("1996", "1996"),
+            Pair("1997", "1997"),
+            Pair("1998", "1998"),
+            Pair("1999", "1999"),
+            Pair("2000", "2000"),
+            Pair("2001", "2001"),
+            Pair("2002", "2002"),
+            Pair("2003", "2003"),
+            Pair("2004", "2004"),
+            Pair("2005", "2005"),
+            Pair("2006", "2006"),
+            Pair("2007", "2007"),
+            Pair("2008", "2008"),
+            Pair("2009", "2009"),
+            Pair("2010", "2010"),
+            Pair("2011", "2011"),
+            Pair("2012", "2012"),
+            Pair("2013", "2013"),
+            Pair("2014", "2014"),
+            Pair("2015", "2015"),
+            Pair("2016", "2016"),
+            Pair("2017", "2017"),
+            Pair("2018", "2018"),
+            Pair("2019", "2019"),
+            Pair("2020", "2020"),
+            Pair("2021", "2021"),
+            Pair("2022", "2022"),
+            Pair("2023", "2023"),
+            Pair("2024", "2024"),
+            Pair("2025", "2025"),
+            Pair("2026", "2026"),
+        ).reversedArray()
+
+        val TYPE = arrayOf(
+            Pair("TV", "TV"),
+            Pair("Movie", "Movie"),
+            Pair("OVA", "OVA"),
+            Pair("ONA", "ONA"),
+            Pair("Special", "Special"),
+        )
+
+        val LIST = arrayOf(
+            Pair("", "Seçiniz"),
+            Pair("0", "Alfabetik"),
+            Pair("1", "Puan"),
+            Pair("2", "Beğeni"),
+            Pair("3", "Tarih"),
+            Pair("4", "MAL Puanı"),
+        )
+
+        val SEASON = arrayOf(
+            Pair("", "Seçiniz"),
+            Pair("1", "İlkbahar"),
+            Pair("2", "Yaz"),
+            Pair("3", "Sonbahar"),
+            Pair("4", "Kış"),
+        )
+
+        val SORT = arrayOf(
+            Pair("", "Seçiniz"),
+            Pair("ASC", "A > Z"),
+            Pair("DESC", "Z > A"),
+        )
+
+        val POINT = arrayOf(
+            Pair("1", "1"),
+            Pair("2", "2"),
+            Pair("3", "3"),
+            Pair("4", "4"),
+            Pair("5", "5"),
+            Pair("6", "6"),
+            Pair("7", "7"),
+            Pair("8", "8"),
+            Pair("9", "9"),
+            Pair("10", "10"),
+        )
+
+        val LIKE = arrayOf(
+            Pair("1000", "1000"),
+            Pair("2000", "2000"),
+            Pair("3000", "3000"),
+            Pair("4000", "4000"),
+            Pair("5000", "5000"),
+            Pair("6000", "6000"),
+            Pair("7000", "7000"),
+            Pair("8000", "8000"),
+            Pair("9000", "9000"),
+            Pair("10000", "10000"),
+            Pair("11000", "11000"),
+            Pair("12000", "12000"),
+            Pair("13000", "13000"),
+            Pair("14000", "14000"),
+            Pair("15000", "15000"),
+            Pair("16000", "16000"),
+            Pair("17000", "17000"),
+            Pair("18000", "18000"),
+            Pair("19000", "19000"),
+            Pair("20000", "20000"),
+        )
+
+        val PRODUCER = arrayOf(
+            Pair("1", "Studio Pierrot"),
+            Pair("2", "Kyoto Animation"),
+            Pair("3", "Gonzo"),
+            Pair("4", "Bones"),
+            Pair("5", "Bee Train"),
+            Pair("6", "Gainax"),
+            Pair("7", "J.C.Staff"),
+            Pair("8", "Artland"),
+            Pair("10", "Production I.G"),
+            Pair("11", "Madhouse"),
+            Pair("13", "Studio 4°C"),
+            Pair("14", "Sunrise"),
+            Pair("15", "Sony Pictures Entertainment"),
+            Pair("16", "TV Tokyo"),
+            Pair("17", "Aniplex"),
+            Pair("18", "Toei Animation"),
+            Pair("21", "Studio Ghibli"),
+            Pair("22", "Nippon Animation"),
+            Pair("23", "Bandai Visual"),
+            Pair("24", "Studio Fantasia"),
+            Pair("25", "Milky Animation Label"),
+            Pair("27", "Xebec"),
+            Pair("28", "OLM"),
+            Pair("29", "VAP"),
+            Pair("30", "Ajia-Do"),
+            Pair("31", "Geneon Universal Entertainment"),
+            Pair("32", "Manglobe"),
+            Pair("33", "WOWOW"),
+            Pair("34", "Hal Film Maker"),
+            Pair("35", "Seven Arcs"),
+            Pair("36", "Studio Gallop"),
+            Pair("37", "Studio Deen"),
+            Pair("38", "Arms"),
+            Pair("39", "Daume"),
+            Pair("40", "m.o.e."),
+            Pair("41", "Satelight"),
+            Pair("42", "GDH"),
+            Pair("43", "ufotable"),
+            Pair("44", "Shaft"),
+            Pair("45", "Pink Pineapple"),
+            Pair("47", "Khara"),
+            Pair("48", "AIC"),
+            Pair("49", "Remic"),
+            Pair("50", "KSS"),
+            Pair("51", "Diomedea"),
+            Pair("52", "Avex Entertainment"),
+            Pair("53", "Dentsu"),
+            Pair("54", "Mook Animation"),
+            Pair("55", "TV Asahi"),
+            Pair("56", "A-1 Pictures"),
+            Pair("58", "Square Enix"),
+            Pair("59", "Beat Frog"),
+            Pair("60", "Actas"),
+            Pair("61", "Frontier Works"),
+            Pair("62", "Shogakukan Productions"),
+            Pair("63", "Trinet Entertainment"),
+            Pair("64", "Sotsu"),
+            Pair("65", "Tokyo Movie Shinsha"),
+            Pair("67", "OB Planning"),
+            Pair("68", "Mushi Production"),
+            Pair("69", "Front Line"),
+            Pair("70", "Nomad"),
+            Pair("71", "Mellow Head"),
+            Pair("72", "Artmic"),
+            Pair("73", "TMS Entertainment"),
+            Pair("75", "Imagin"),
+            Pair("76", "Yomiuri Telecasting Corporation"),
+            Pair("77", "APPP"),
+            Pair("78", "Picture Magic"),
+            Pair("79", "Genco"),
+            Pair("80", "Trans Arts"),
+            Pair("81", "Radix"),
+            Pair("82", "Marvelous Entertainment"),
+            Pair("83", "AIC Spirits"),
+            Pair("84", "Studio Rikka"),
+            Pair("85", "Konami"),
+            Pair("86", "Group TAC"),
+            Pair("88", "AIC A.S.T.A."),
+            Pair("89", "BeSTACK"),
+            Pair("91", "feel."),
+            Pair("92", "Starchild Records"),
+            Pair("93", "Studio Flag"),
+            Pair("94", "Telecom Animation Film"),
+            Pair("95", "Doga Kobo"),
+            Pair("96", "Yumeta Company"),
+            Pair("97", "ADV Films"),
+            Pair("98", "Sav! The World Productions"),
+            Pair("99", "Kitty Films"),
+            Pair("100", "TV Osaka"),
+            Pair("101", "Studio Hibari"),
+            Pair("102", "FUNimation Entertainment"),
+            Pair("103", "Tatsunoko Production"),
+            Pair("104", "Lantis"),
+            Pair("107", "Plum"),
+            Pair("108", "Media Factory"),
+            Pair("109", "Shochiku"),
+            Pair("110", "Triangle Staff"),
+            Pair("111", "NHK"),
+            Pair("113", "Kadokawa Shoten"),
+            Pair("114", "Studio Matrix"),
+            Pair("116", "Broccoli"),
+            Pair("117", "Studio Izena"),
+            Pair("118", "SynergySP"),
+            Pair("119", "Viz Media"),
+            Pair("120", "TNK"),
+            Pair("121", "Active"),
+            Pair("122", "Tokyo Kids"),
+            Pair("123", "Victor Entertainment"),
+            Pair("124", "Animac"),
+            Pair("126", "Studio Comet"),
+            Pair("127", "Yomiko Advertising"),
+            Pair("129", "Silky’s"),
+            Pair("130", "CherryLips"),
+            Pair("131", "G&G Entertainment"),
+            Pair("132", "P.A. Works"),
+            Pair("133", "Shinyusha"),
+            Pair("134", "HoriPro"),
+            Pair("135", "MediaNet"),
+            Pair("136", "Vega Entertainment"),
+            Pair("137", "PPM"),
+            Pair("138", "Himajin Planning"),
+            Pair("139", "Nihon Ad Systems"),
+            Pair("140", "Animax"),
+            Pair("141", "Toei Video"),
+            Pair("142", "Asatsu DK"),
+            Pair("143", "Mainichi Broadcasting System"),
+            Pair("144", "Pony Canyon"),
+            Pair("145", "TBS"),
+            Pair("146", "CBC"),
+            Pair("147", "SKY Perfect Well Think"),
+            Pair("148", "Hakusensha"),
+            Pair("149", "SME Visual Works"),
+            Pair("150", "Sanrio"),
+            Pair("152", "Green Bunny"),
+            Pair("153", "SoftX"),
+            Pair("154", "E&G Films"),
+            Pair("155", "Animate Film"),
+            Pair("156", "Polygram Japan"),
+            Pair("157", "BMG Japan"),
+            Pair("158", "Kids Station"),
+            Pair("159", "Kodansha"),
+            Pair("160", "Rondo Robe"),
+            Pair("161", "Sogo Vision"),
+            Pair("163", "Asread"),
+            Pair("164", "d-rights"),
+            Pair("165", "Marubeni"),
+            Pair("166", "Movic"),
+            Pair("167", "Sega"),
+            Pair("168", "Shelty"),
+            Pair("169", "Fuji TV"),
+            Pair("170", "Imagica"),
+            Pair("171", "A Line"),
+            Pair("172", "Alchemist"),
+            Pair("175", "Planet"),
+            Pair("176", "Ginga Ya"),
+            Pair("177", "Studio Kyuuma"),
+            Pair("178", "Trilogy Future Studio"),
+            Pair("179", "A.C.G.T."),
+            Pair("182", "Age"),
+            Pair("183", "Agent 21"),
+            Pair("184", "Ai ga areba Daijobu"),
+            Pair("185", "Aiko"),
+            Pair("189", "GEN Productions"),
+            Pair("190", "RCC Chugoku Broadcasting"),
+            Pair("191", "Eiken"),
+            Pair("192", "Shinkuukan"),
+            Pair("193", "Idea Factory"),
+            Pair("194", "ANIK"),
+            Pair("195", "Pixy"),
+            Pair("196", "Production Reed"),
+            Pair("198", "Gakken"),
+            Pair("199", "Studio Nue"),
+            Pair("200", "Tezuka Productions"),
+            Pair("204", "Pioneer LDC"),
+            Pair("206", "Digital Works"),
+            Pair("207", "Magic Bus"),
+            Pair("208", "Three Fat Samurai"),
+            Pair("209", "Sol Blade"),
+            Pair("210", "Studio Tulip"),
+            Pair("211", "Rakuonsha"),
+            Pair("212", "Venus Vangard"),
+            Pair("213", "Half H.P Studio"),
+            Pair("214", "BS-i"),
+            Pair("215", "Nelvana"),
+            Pair("216", "Studio Tron"),
+            Pair("217", "Nozomi Entertainment"),
+            Pair("218", "Zexcs"),
+            Pair("220", "Youmex"),
+            Pair("222", "Jade Animation"),
+            Pair("224", "Toshiba EMI"),
+            Pair("226", "Panmedia"),
+            Pair("228", "Daewon Media"),
+            Pair("229", "The Answer Studio"),
+            Pair("230", "Bandai"),
+            Pair("231", "CyberConnect2"),
+            Pair("233", "Bandai Entertainment"),
+            Pair("234", "Oh! Production"),
+            Pair("235", "Shirogumi"),
+            Pair("236", "YTV"),
+            Pair("238", "AT-X"),
+            Pair("239", "Y.O.U.C"),
+            Pair("240", "Capcom"),
+            Pair("241", "Koei"),
+            Pair("242", "Ashi Productions"),
+            Pair("244", "D3"),
+            Pair("245", "Toho Company"),
+            Pair("246", "Visual 80"),
+            Pair("247", "Shin-Ei Animation"),
+            Pair("248", "Tin House"),
+            Pair("249", "Robot"),
+            Pair("250", "Media Blasters"),
+            Pair("252", "4Kids Entertainment"),
+            Pair("253", "Rikuentai"),
+            Pair("254", "Soft Garage"),
+            Pair("255", "Imagi"),
+            Pair("256", "Studio Kikan"),
+            Pair("257", "Jam"),
+            Pair("258", "Echo"),
+            Pair("259", "Kaeruotoko Shokai"),
+            Pair("260", "Shuuhei Morita"),
+            Pair("261", "San-X"),
+            Pair("262", "Kadokawa Pictures USA"),
+            Pair("265", "Valkyria"),
+            Pair("266", "Natural High"),
+            Pair("267", "Five Ways"),
+            Pair("268", "Hot Bear"),
+            Pair("269", "DiC Entertainment"),
+            Pair("270", "NuTech Digital"),
+            Pair("271", "Barnum Studio"),
+            Pair("272", "Studio Kajino"),
+            Pair("273", "Think Corporation"),
+            Pair("274", "Suzuki Mirano"),
+            Pair("275", "Kojiro Shishido Animation Works"),
+            Pair("276", "DLE"),
+            Pair("277", "Anime Midstream"),
+            Pair("278", "Daiei"),
+            Pair("279", "Skouras"),
+            Pair("280", "Studio Junio"),
+            Pair("281", "Kokusai Eigasha"),
+            Pair("282", "Gentosha Comics"),
+            Pair("283", "KENMedia"),
+            Pair("284", "Central Park Media"),
+            Pair("285", "Four Some"),
+            Pair("287", "David Production"),
+            Pair("288", "Kaname Productions"),
+            Pair("289", "ACiD FiLM"),
+            Pair("290", "Kinema Citrus"),
+            Pair("291", "CoMix Wave Films"),
+            Pair("292", "AIC Plus+"),
+            Pair("293", "Picograph"),
+            Pair("294", "Discovery"),
+            Pair("296", "Critical Mass Video"),
+            Pair("297", "Armor"),
+            Pair("298", "Studio Anima"),
+            Pair("299", "Studio Pastoral"),
+            Pair("300", "Silver Link."),
+            Pair("301", "Langmaor"),
+            Pair("302", "GODxDOG Production"),
+            Pair("304", "Primastea"),
+            Pair("306", "Magic Capsule"),
+            Pair("307", "Sunwoo Entertainment"),
+            Pair("308", "Yellow Film"),
+            Pair("309", "GoHands"),
+            Pair("310", "Animeigo"),
+            Pair("311", "Enoki Films"),
+            Pair("312", "Life Work"),
+            Pair("313", "Omnibus Japan"),
+            Pair("314", "White Fox"),
+            Pair("315", "DAX Production"),
+            Pair("316", "Nippon Shuppan Hanbai (Nippan) K.K."),
+            Pair("318", "WAO World"),
+            Pair("319", "MS Pictures"),
+            Pair("320", "Maru Production"),
+            Pair("321", "Kitty Media"),
+            Pair("322", "Bee Media"),
+            Pair("323", "Nippon Columbia"),
+            Pair("324", "Directions"),
+            Pair("325", "Code"),
+            Pair("326", "Animation 21"),
+            Pair("327", "Takara"),
+            Pair("328", "Casio Entertainment"),
+            Pair("329", "Phoenix Entertainment"),
+            Pair("330", "Kanaban Graphics"),
+            Pair("331", "Indeprox"),
+            Pair("332", "Takeshobo"),
+            Pair("333", "TYO Animations"),
+            Pair("334", "Ordet"),
+            Pair("335", "Seta Corporation"),
+            Pair("336", "JM animation"),
+            Pair("338", "Studio Bogey"),
+            Pair("339", "Rankin/Bass"),
+            Pair("340", "Future Planet"),
+            Pair("341", "SamBakZa"),
+            Pair("342", "Japan Home Video"),
+            Pair("343", "Puzzle Animation Studio Limited"),
+            Pair("344", "Atlus"),
+            Pair("345", "TAKI Corporation"),
+            Pair("346", "Hoods Entertainment"),
+            Pair("347", "PrimeTime"),
+            Pair("348", "Kawamoto Productions"),
+            Pair("349", "Itasca Studio"),
+            Pair("350", "The Village of Marchen"),
+            Pair("351", "Big West"),
+            Pair("352", "Kadokawa Pictures Japan"),
+            Pair("353", "Chungeorahm Film"),
+            Pair("354", "Encourage Films"),
+            Pair("356", "Cranberry"),
+            Pair("357", "Innocent Grey"),
+            Pair("358", "Telescreen BV"),
+            Pair("359", "NHK-BS2"),
+            Pair("361", "Oxybot"),
+            Pair("362", "Film Workshop"),
+            Pair("363", "Topcraft"),
+            Pair("364", "Sovat Theater"),
+            Pair("365", "PoRO"),
+            Pair("366", "Tomoyasu Murata Company"),
+            Pair("367", "Heewon Entertainment"),
+            Pair("368", "UM Productions"),
+            Pair("370", "Iyasakadou Film"),
+            Pair("371", "Union Cho"),
+            Pair("372", "NIS America, Inc."),
+            Pair("373", "Panda Factory"),
+            Pair("374", "Plus Heads"),
+            Pair("375", "I.Toon"),
+            Pair("376", "Sentai Filmworks"),
+            Pair("377", "Kuri Jikken Manga Kobo"),
+            Pair("378", "Grasshoppa!"),
+            Pair("379", "Avaco Creative Studios"),
+            Pair("380", "Amuse Pictures"),
+            Pair("381", "Yamato Works"),
+            Pair("382", "Tokuma Shoten"),
+            Pair("383", "KMMJ Studios"),
+            Pair("384", "Trick Block"),
+            Pair("385", "Tele-Cartoon Japan"),
+            Pair("386", "Animaruya"),
+            Pair("387", "Blue Eyes"),
+            Pair("388", "Tamura Shigeru Studio"),
+            Pair("389", "I-move"),
+            Pair("390", "Tsuchida Productions"),
+            Pair("391", "Grouper Productions"),
+            Pair("392", "Enterbrain"),
+            Pair("393", "Epoch"),
+            Pair("394", "Misseri Studio"),
+            Pair("395", "Oz"),
+            Pair("397", "Bridge"),
+            Pair("398", "Milky Cartoon"),
+            Pair("399", "Dream Force"),
+            Pair("400", "Gathering"),
+            Pair("401", "ChuChu"),
+            Pair("402", "ChiChinoya"),
+            Pair("403", "Tokyo Media Connections"),
+            Pair("404", "Studio Unicorn"),
+            Pair("405", "T-Rex"),
+            Pair("406", "Asahi Production"),
+            Pair("407", "Studio 9 MAiami"),
+            Pair("408", "Amino"),
+            Pair("409", "Studio Egg"),
+            Pair("410", "Adult Source Media"),
+            Pair("411", "KBS"),
+            Pair("412", "Studio Wombat"),
+            Pair("413", "Pastel"),
+            Pair("414", "Lemon Heart"),
+            Pair("415", "Warner Bros."),
+            Pair("416", "TAP"),
+            Pair("417", "Walt Disney Studios"),
+            Pair("418", "Studio Gokumi"),
+            Pair("419", "ElectromagneticWave"),
+            Pair("420", "ACC Production"),
+            Pair("421", "International Digital Artist"),
+            Pair("422", "Schoolzone"),
+            Pair("423", "Studio Eromatick"),
+            Pair("424", "Mary Jane"),
+            Pair("425", "AIC Takarazuka"),
+            Pair("426", "Filmlink International"),
+            Pair("427", "Studio G-1Neo"),
+            Pair("428", "Nichiei Agency"),
+            Pair("429", "Office AO"),
+            Pair("430", "Mad Box"),
+            Pair("431", "Procidis"),
+            Pair("432", "Kachidoki Studio"),
+            Pair("433", "View Works"),
+            Pair("434", "Synergy Japan"),
+            Pair("435", "Studio Zero"),
+            Pair("436", "AIC Build"),
+            Pair("437", "Kamikaze Douga"),
+            Pair("438", "Studio Signal"),
+            Pair("439", "Project No.9"),
+            Pair("440", "Studio Kuma"),
+            Pair("441", "8bit"),
+            Pair("442", "Minami Machi Bugyousho"),
+            Pair("443", "Studio PuYUKAI"),
+            Pair("444", "Jinnis Animation Studios"),
+            Pair("445", "Bliss Pictures"),
+            Pair("446", "RTHK"),
+            Pair("447", "Hero Communication"),
+            Pair("448", "Postgal Workshop"),
+            Pair("449", "Maikaze"),
+            Pair("450", "Wako Productions"),
+            Pair("451", "Cookie Jar Entertainment"),
+            Pair("452", "Knack Productions"),
+            Pair("453", "Tsuburaya Productions"),
+            Pair("455", "Palm Studio"),
+            Pair("456", "Lerche"),
+            Pair("457", "Venet"),
+            Pair("458", "Beijing Sharaku Art"),
+            Pair("459", "Nitroplus"),
+            Pair("460", "KlockWorx"),
+            Pair("461", "OLE-M"),
+            Pair("462", "Chaos Project"),
+            Pair("463", "M.S.C"),
+            Pair("464", "flying DOG"),
+            Pair("465", "Hasbro"),
+            Pair("466", "Digital Media Lab"),
+            Pair("467", "Discotek"),
+            Pair("468", "Nihon Falcom"),
+            Pair("469", "ING"),
+            Pair("470", "GAGA Communications"),
+            Pair("471", "Shanghai Animation Film Studio"),
+            Pair("472", "Usagi.Ou"),
+            Pair("473", "Ascension"),
+            Pair("474", "Shogakukan Music & Digital Entertainment"),
+            Pair("475", "Ishikawa Pro"),
+            Pair("476", "The Berich"),
+            Pair("477", "Kino Production"),
+            Pair("478", "Studio Blanc"),
+            Pair("479", "DOGA Productions"),
+            Pair("481", "Office Take Off"),
+            Pair("482", "Automatic Flowers Studio"),
+            Pair("483", "Marvel Entertainment"),
+            Pair("484", "TOKYOPOP"),
+            Pair("485", "Shinwon Productions"),
+            Pair("486", "Digital Frontier"),
+            Pair("487", "Studio MWP"),
+            Pair("488", "Anchor Bay Films"),
+            Pair("489", "TCJ"),
+            Pair("490", "Maiden Japan"),
+            Pair("491", "Byakuya Shobo"),
+            Pair("492", "Horannabi"),
+            Pair("493", "Aniplex of America"),
+            Pair("494", "Studio Take Off"),
+            Pair("495", "Moonstone Cherry"),
+            Pair("497", "Studio Gram"),
+            Pair("499", "The Pokemon Company International"),
+            Pair("501", "Miramax Films"),
+            Pair("503", "Nintendo"),
+            Pair("505", "Nintendo of America"),
+            Pair("507", "Universal Studios"),
+            Pair("509", "Fuji Video"),
+            Pair("511", "Wonder Kids"),
+            Pair("513", "Nikkatsu"),
+            Pair("515", "Fairy Dust"),
+            Pair("517", "Asmik Ace Entertainment"),
+            Pair("519", "Collaboration Works"),
+            Pair("521", "Anpro"),
+            Pair("523", "SBS TV Production"),
+            Pair("525", "KAGAYA Studio"),
+            Pair("527", "Higa Brothers Production"),
+            Pair("529", "Lapis"),
+            Pair("531", "Elevenarts"),
+            Pair("533", "N&G Production"),
+            Pair("535", "Knack Animation"),
+            Pair("537", "SANZIGEN"),
+            Pair("539", "Ultra Super Pictures"),
+            Pair("541", "Seven"),
+            Pair("543", "Studio Saki Makura"),
+            Pair("545", "Studio Deva Loka"),
+            Pair("547", "Hobby Japan"),
+            Pair("549", "StudioRF Inc."),
+            Pair("551", "Crossphere"),
+            Pair("553", "Marvy Jack"),
+            Pair("555", "Studio Chizu"),
+            Pair("557", "Zyc"),
+            Pair("559", "Purple Cow Studio Japan"),
+            Pair("561", "U/M/A/A Inc."),
+            Pair("563", "LandQ studios"),
+            Pair("565", "LMD"),
+            Pair("567", "D.A.S.T."),
+            Pair("569", "MAPPA"),
+            Pair("571", "Obtain Future"),
+            Pair("573", "JapanAnime"),
+            Pair("575", "Katsudou-manga-kan"),
+            Pair("577", "Tohokushinsha Film Corporation"),
+            Pair("579", "AT-2"),
+            Pair("581", "Sparky Animation"),
+            Pair("583", "Annapuru"),
+            Pair("585", "Arplants"),
+            Pair("587", "Tomason"),
+            Pair("589", "Academy Productions"),
+            Pair("591", "Romanov Films"),
+            Pair("593", "Egg"),
+            Pair("595", "NYAV Post"),
+            Pair("601", "ixtl"),
+            Pair("605", "C2C"),
+            Pair("607", "RAMS"),
+            Pair("609", "Cammot"),
+            Pair("611", "Sakura Production"),
+            Pair("613", "Jormungand Production Partners"),
+            Pair("615", "Dream Creation"),
+            Pair("619", "Cospa"),
+            Pair("621", "SoftBank Creative Corp."),
+            Pair("623", "Kimi To Boku Production Partners"),
+            Pair("627", "Madoka Partners"),
+            Pair("629", "Studio Sign"),
+            Pair("633", "Tasogare Otome×Amnesia Production Partners"),
+            Pair("637", "Möbius Tone"),
+            Pair("643", "Trinity Sound"),
+            Pair("645", "Audio Highs"),
+            Pair("647", "Memory-Tech"),
+            Pair("649", "Hakoniwa Academy Student Council"),
+            Pair("653", "tsuritama partners"),
+            Pair("655", "Volks"),
+            Pair("657", "Lucky Paradise"),
+            Pair("661", "Right Gauge"),
+            Pair("663", "Dwango Music Entertainment"),
+            Pair("665", "chara-ani.com"),
+            Pair("667", "AC Create"),
+            Pair("675", "Yomiuri Advertising"),
+            Pair("677", "Nexon"),
+            Pair("679", "Soyuzmultfilm"),
+            Pair("681", "ASCII Media Works"),
+            Pair("685", "Kadokawa Contents Gate"),
+            Pair("687", "Bandai Namco Live Creative"),
+            Pair("689", "NTT Docomo"),
+            Pair("691", "501st JOINT FIGHTER WING"),
+            Pair("693", "BS-TBS"),
+            Pair("697", "Natsuiro Kiseki Production Partners"),
+            Pair("699", "feng"),
+            Pair("701", "seikaisha"),
+            Pair("703", "Notes"),
+            Pair("705", "Project Railgun"),
+            Pair("707", "TMS-Kyokuchi"),
+            Pair("709", "PPP"),
+            Pair("711", "Delfi Sound"),
+            Pair("713", "12 Diary Holders"),
+            Pair("715", "Dwango"),
+            Pair("717", "TV Tokyo Music"),
+            Pair("719", "Studio Mausu"),
+            Pair("721", "GANSIS"),
+            Pair("723", "Hotline"),
+            Pair("727", "Kiyosumi High School Mahjong Club"),
+            Pair("729", "Raku High Student Council"),
+            Pair("731", "Inu x Boku SS Production Partners"),
+            Pair("733", "Viki"),
+            Pair("735", "Slowcurve"),
+            Pair("737", "Sony Music Communications"),
+            Pair("739", "Project IS"),
+            Pair("741", "Toshiba Entertainment"),
+            Pair("743", "Project Eureka AO"),
+            Pair("745", "Cosmic Ray"),
+            Pair("747", "Apollon"),
+            Pair("751", "Marvelous AQL"),
+            Pair("753", "PRA"),
+            Pair("755", "Jumondo"),
+            Pair("757", "Sony Music Entertainment"),
+            Pair("759", "Eye Move"),
+            Pair("761", "Sunny Side Up"),
+            Pair("763", "Miracle Robo"),
+            Pair("765", "Sakura Create"),
+            Pair("767", "Majin"),
+            Pair("769", "Fuji Pacific Music Publishing"),
+            Pair("773", "Peter Pan Creation"),
+            Pair("775", "Bushiroad"),
+            Pair("777", "Showgate"),
+            Pair("779", "AMG MUSIC"),
+            Pair("781", "Studio NOA"),
+            Pair("783", "GKids"),
+            Pair("785", "Advance Syakujii"),
+            Pair("787", "Happinet Pictures"),
+            Pair("789", "BIGLOBE"),
+            Pair("791", "Dentsu Entertainment USA"),
+            Pair("793", "Glams"),
+            Pair("795", "Yahoo! Japan"),
+            Pair("797", "Houbunsha"),
+            Pair("799", "indigo line"),
+            Pair("801", "Nihikime no Dozeu"),
+            Pair("803", "Trigger"),
+            Pair("805", "AIC Frontier"),
+            Pair("807", "Po10tial"),
+            Pair("809", "AKOM"),
+            Pair("811", "Hang Zhou StarQ"),
+            Pair("813", "SoftCel Pictures"),
+            Pair("815", "EMI"),
+            Pair("817", "WField"),
+            Pair("819", "Next Media Animation"),
+            Pair("821", "Cotton Doll"),
+            Pair("823", "Lune Pictures"),
+            Pair("825", "Fifth Avenue"),
+            Pair("827", "Amber Film Works"),
+            Pair("829", "Studio Jack"),
+            Pair("831", "Otogi Production"),
+            Pair("833", "Kyotoma"),
+            Pair("835", "UNLIMITED Partners"),
+            Pair("839", "LIDENFILMS"),
+            Pair("841", "Saban Entertainment"),
+            Pair("843", "BS Fuji"),
+            Pair("845", "Project No Name"),
+            Pair("847", "Senran Kagura Partners"),
+            Pair("848", "Kazami Gakuen Koushiki Douga-bu"),
+            Pair("850", "Kenji Studio"),
+            Pair("852", "Nexus"),
+            Pair("854", "Solid Vox"),
+            Pair("856", "Charaction"),
+            Pair("858", "Wit Studio"),
+            Pair("860", "Triple X"),
+            Pair("862", "Pashmina"),
+            Pair("866", "Fanworks"),
+            Pair("870", "Index"),
+            Pair("872", "Shingeki no Kyojin Team"),
+            Pair("874", "Flex Comics"),
+            Pair("876", "G-mode"),
+            Pair("878", "An DerCen"),
+            Pair("880", "gimik"),
+            Pair("882", "Toranoana"),
+            Pair("884", "Strawberry Meets Pictures"),
+            Pair("886", "Cinema Tohoku"),
+            Pair("890", "Karaku"),
+            Pair("892", "NOTTV"),
+            Pair("894", "Graphinica"),
+            Pair("896", "Larx Entertainment"),
+            Pair("898", "Xebec Zwei"),
+            Pair("899", "Tokyo Animation Film"),
+            Pair("901", "Tsubasa Entertainment"),
+            Pair("903", "Studio Zealot"),
+            Pair("905", "Tokuma Japan"),
+            Pair("907", "AYCO"),
+            Pair("909", "Studio Kelmadick"),
+            Pair("911", "Passione"),
+            Pair("913", "Ryukyu Asahi Broadcasting"),
+            Pair("917", "Takahashi Studio"),
+            Pair("919", "Ankama"),
+            Pair("921", "Dynamic Planning"),
+            Pair("923", "CyberStep"),
+            Pair("925", "Earth Star Entertainment"),
+            Pair("929", "Animation Do"),
+            Pair("931", "Poncotan"),
+            Pair("933", "Carp Studio"),
+            Pair("937", "Studio Kaab"),
+            Pair("939", "Tama Production"),
+            Pair("941", "Iwatobi High School Swimming Club"),
+            Pair("945", "Vasoon Animation"),
+            Pair("947", "Manga Entertainment"),
+            Pair("949", "teamKG"),
+            Pair("951", "NAZ"),
+            Pair("953", "Soft on Demand"),
+            Pair("957", "Connect"),
+            Pair("959", "Studio Compile"),
+            Pair("961", "Baramiri"),
+            Pair("963", "MAGES."),
+            Pair("965", "Crimson Star Media"),
+            Pair("971", "Anime R"),
+            Pair("973", "Studio Liberty"),
+            Pair("975", "Angelfish"),
+            Pair("977", "Queen Bee"),
+            Pair("979", "SPEED"),
+            Pair("981", "BOOTLEG"),
+            Pair("983", "Daiko"),
+            Pair("985", "P Productions"),
+            Pair("987", "Creative Bridge"),
+            Pair("989", "Nihon Hoso Eigasha"),
+            Pair("991", "Hoso Seisaku Doga"),
+            Pair("995", "Coamix"),
+            Pair("997", "Maxell E-Cube"),
+            Pair("999", "Studio Animal"),
+            Pair("1001", "Kyodo Eiga"),
+            Pair("1003", "Nippon Television Network Corporation"),
+            Pair("1005", "Oddjob"),
+            Pair("1009", "Aubec"),
+            Pair("1011", "Warner Music Japan"),
+            Pair("1013", "Opera House"),
+            Pair("1015", "T.O Entertainment"),
+            Pair("1017", "Liverpool"),
+            Pair("1019", "Himeyuri Alumnae Incorporated Foundation"),
+            Pair("1021", "ASIA Documentary Productions"),
+            Pair("1023", "Polygon Pictures"),
+            Pair("1025", "Dongwoo A&E"),
+            Pair("1027", "Milkshake"),
+            Pair("1029", "BeeWorks"),
+            Pair("1031", "Universal Radio Studio"),
+            Pair("1033", "Studio Colorido"),
+            Pair("1037", "Japan Vistec"),
+            Pair("1039", "DIVE II Entertainment"),
+            Pair("1041", "Ai Addiction"),
+            Pair("1043", "Benesse Corporation"),
+            Pair("1045", "Space Neko Company Ltd."),
+            Pair("1049", "PoPoCo"),
+            Pair("1053", "Production IMS"),
+            Pair("1055", "Yamamura Animation, Inc."),
+            Pair("1057", "Kyowa Film"),
+            Pair("1059", "Studio Nem"),
+            Pair("1061", "Project Team Eikyuu Kikan"),
+            Pair("1063", "Calf Studio"),
+            Pair("1065", "Public & Basic"),
+            Pair("1067", "Rising Force"),
+            Pair("1071", "Studio Lotus"),
+            Pair("1073", "Magic Lantern Film"),
+            Pair("1075", "C-Station"),
+            Pair("1077", "MMDGP"),
+            Pair("1079", "3xCube"),
+            Pair("1081", "ZERO-A"),
+            Pair("1083", "Aikikaku Center"),
+            Pair("1085", "Cosmos"),
+            Pair("1087", "Lay-duce"),
+            Pair("1089", "Studio Zain"),
+            Pair("1091", "Gakken Eigakyoku"),
+            Pair("1093", "BreakBottle"),
+            Pair("1097", "Namco Bandai Games"),
+            Pair("1099", "Cyclone Graphics inc"),
+            Pair("1101", "Lambert"),
+            Pair("1103", "TROYCA"),
+            Pair("1105", "Gendai Production"),
+            Pair("1107", "Rabbit Gate"),
+            Pair("1109", "Orange"),
+            Pair("1111", "DandeLion Animation Studio LLC"),
+            Pair("1113", "NBCUniversal Entertainment Japan"),
+            Pair("1115", "Studio Korumi"),
+            Pair("1117", "1st PLACE"),
+            Pair("1119", "Shuka"),
+            Pair("1121", "Banpresto"),
+            Pair("1123", "Lucent Pictures Entertainment"),
+            Pair("1127", "Studio 3Hz"),
+            Pair("1129", "Pierrot Plus"),
+            Pair("1131", "Zero-G Room"),
+            Pair("1133", "dwarf"),
+            Pair("1135", "FOREST Hunting One"),
+            Pair("1137", "SEK Studios"),
+            Pair("1139", "BEAM Entertainment"),
+            Pair("1141", "Comstock, Ltd."),
+            Pair("1143", "TOHO animation"),
+            Pair("1147", "Shinano Kikaku"),
+            Pair("1149", "Studio Cab"),
+            Pair("1151", "Sanrio Digital"),
+            Pair("1153", "Image Kei"),
+            Pair("1155", "Studio Moriken"),
+            Pair("1157", "Big Bang"),
+            Pair("1159", "King Bee"),
+            Pair("1161", "Allure"),
+            Pair("1163", "Flatiron Film Company"),
+            Pair("1165", "Tri-Slash"),
+            Pair("1167", "Nikkatsu Mukojima"),
+            Pair("1169", "ILCA"),
+            Pair("1171", "Olive Studio"),
+            Pair("1173", "Studio Dadashow"),
+            Pair("1175", "Atelier Musa"),
+            Pair("1177", "Geijutsu Eigasha"),
+            Pair("1179", "MK Pictures"),
+            Pair("1181", "RG Animation Studios"),
+            Pair("1185", "81 Produce"),
+            Pair("1187", "Ripple Film"),
+            Pair("1189", "Sola Digital Arts"),
+            Pair("1191", "Azeta Pictures"),
+            Pair("1193", "MooGoo"),
+            Pair("1195", "Creators in Pack"),
+            Pair("1199", "L."),
+            Pair("1201", "Ponycan USA"),
+            Pair("1203", "Studio 1st"),
+            Pair("1207", "Comic Umenohone"),
+            Pair("1209", "Studio A-CAT"),
+            Pair("1211", "Tokyo MX"),
+            Pair("1213", "Mobcast"),
+            Pair("1215", "Daiichikosho"),
+            Pair("1217", "HeART-BIT"),
+            Pair("1219", "Hokkaido Azmacy"),
+            Pair("1221", "Hokkaido Cultural Broadcasting"),
+            Pair("1223", "Teichiku Entertainment"),
+            Pair("1225", "Age Global Networks"),
+            Pair("1227", "Studio GDW"),
+            Pair("1229", "Pie in The Sky"),
+            Pair("1231", "OLM Digital"),
+            Pair("1233", "Bandai Namco Entertainment"),
+            Pair("1235", "I was a Ballerina"),
+            Pair("1237", "Millepensee"),
+            Pair("1239", "KeyEast"),
+            Pair("1241", "Evil Line Records"),
+            Pair("1242", "Sakura Color Film"),
+            Pair("1243", "AniMan"),
+            Pair("1244", "Studio VOLN"),
+            Pair("1245", "ZIZ Entertainment (ZIZ)"),
+            Pair("1246", "AIR AGENCY"),
+            Pair("1247", "Mistral Japan"),
+            Pair("1248", "Studio Mirai"),
+            Pair("1249", "Mirai Film"),
+            Pair("1250", "The National Film Center Japan"),
+            Pair("1251", "Dentsu Eigasha Tokyo"),
+            Pair("1252", "Studio Binzo"),
+            Pair("1253", "Studio GOONEYS"),
+            Pair("1254", "Grooove"),
+            Pair("1255", "Glovision"),
+            Pair("1256", "Harappa"),
+            Pair("1257", "A-Real"),
+            Pair("1258", "Bandai Namco Pictures"),
+            Pair("1259", "Studio Curtain"),
+            Pair("1260", "Nakamura Production"),
+            Pair("1261", "Good Smile Company"),
+            Pair("1263", "Dynamo Pictures"),
+            Pair("1264", "EMT²"),
+            Pair("1265", "Tomovies"),
+            Pair("1266", "Studio! Cucuri"),
+            Pair("1268", "L²Studio"),
+            Pair("1269", "K-Factory"),
+            Pair("1270", "Sanctuary"),
+            Pair("1271", "Assez Finaud Fabric"),
+            Pair("1273", "Osaka University of Arts"),
+            Pair("1276", "HS Pictures Studio"),
+            Pair("1277", "Imagica West"),
+            Pair("1278", "Signal. MD"),
+            Pair("1279", "Buemon"),
+            Pair("1280", "Media Castle"),
+            Pair("1281", "Office DCI"),
+            Pair("1282", "Arcturus"),
+            Pair("1283", "TC Entertainment"),
+            Pair("1284", "Avex Pictures"),
+            Pair("1285", "Being"),
+            Pair("1286", "10Gauge"),
+            Pair("1287", "Q-Tec"),
+            Pair("1288", "Chrono Gear Creative"),
+            Pair("1289", "F.M.F"),
+            Pair("1290", "Pollyanna Graphics"),
+            Pair("1291", "KOO-KI"),
+            Pair("1292", "TUBA"),
+            Pair("1293", "Romantica club !!"),
+            Pair("1294", "Studio Don Juan"),
+            Pair("1295", "Pine Jam"),
+            Pair("1296", "Marza Animation Planet"),
+            Pair("1298", "Sakura Motion Picture"),
+            Pair("1299", "AXsiZ"),
+            Pair("1300", "Office Nobu"),
+            Pair("1301", "CCTV Animation Co. LTD"),
+            Pair("1302", "RoiVisual"),
+            Pair("1303", "PansonWorks"),
+            Pair("1304", "Qualia Animation"),
+            Pair("1305", "Milestone Music Publishing"),
+            Pair("1306", "AIC Classic"),
+            Pair("1307", "Free-Will"),
+            Pair("1308", "SEDIC International"),
+            Pair("1309", "Lawson HMV Entertainment"),
+            Pair("1310", "Hiroshi Planning"),
+            Pair("1311", "Sankyo Planning"),
+            Pair("1312", "Tokyu Recreation"),
+            Pair("1313", "Amuse"),
+            Pair("1314", "Fukushima Gainax"),
+            Pair("1315", "Fujiko F. Fujio Pro"),
+            Pair("1316", "Trans Cosmos"),
+            Pair("1317", "Production GoodBook"),
+            Pair("1318", "Asahi Shimbun"),
+            Pair("1319", "Tokyo Theatres Company"),
+            Pair("1320", "Joker Films"),
+            Pair("1322", "Creative Power Entertaining"),
+            Pair("1323", "Saban Brands"),
+            Pair("1324", "Shimogumi"),
+            Pair("1325", "Haoliners Animation League"),
+            Pair("1326", "Bitgang"),
+            Pair("1327", "White Bear"),
+            Pair("1328", "Decovocal"),
+            Pair("1329", "AQUAPLUS"),
+            Pair("1330", "ensky"),
+            Pair("1331", "i0+"),
+            Pair("1332", "famima.com"),
+            Pair("1333", "Hakuhodo DY Music & Pictures"),
+            Pair("1334", "Docomo Anime Store"),
+            Pair("1335", "TEAM Entertainment Inc."),
+            Pair("1336", "Chugai Mining Co., Ltd."),
+            Pair("1337", "Medicos Entertainment"),
+            Pair("1338", "Diabolik Lovers MB Project"),
+            Pair("1341", "Beijing Sunchime Happy Culture Company"),
+            Pair("1343", "Space Shower Music"),
+            Pair("1344", "King Records"),
+            Pair("1345", "Sammy"),
+            Pair("1346", "Kinoshita Koumuten"),
+            Pair("1347", "Hobi Animation"),
+            Pair("1348", "Sugar Boy"),
+            Pair("1349", "Tencent Animation"),
+            Pair("1350", "G.CMay Animation & Film"),
+            Pair("1351", "EDGE"),
+            Pair("1352", "Studio Ten Carat"),
+            Pair("1353", "Issen"),
+            Pair("1354", "Penta Show Studios"),
+            Pair("1355", "TV Aichi"),
+            Pair("1356", "Tonko House"),
+            Pair("1357", "Craftar"),
+            Pair("1358", "Fields"),
+            Pair("1359", "Shizuoka Broadcasting System"),
+            Pair("1360", "Hoods Drifters Studio"),
+            Pair("1361", "Darts"),
+            Pair("1362", "Rabbit Machine"),
+            Pair("1363", "Marine Entertainment"),
+            Pair("1364", "Super Techno Arts"),
+            Pair("1365", "Shueisha"),
+            Pair("1366", "Nagoya TV Housou"),
+            Pair("1368", "Kazuki Production"),
+            Pair("1369", "G-Lam"),
+            Pair("1370", "Sprite Animation Studios"),
+            Pair("1371", "T.P.O"),
+            Pair("1372", "SOEISHINSHA"),
+            Pair("1373", "Akita Shoten"),
+            Pair("1374", "Office Takeout"),
+            Pair("1375", "Studio Jam"),
+            Pair("1376", "ZOOM ENTERPRISE"),
+            Pair("1377", "Futabasha"),
+            Pair("1378", "Media Rings"),
+            Pair("1379", "Zero-G"),
+            Pair("1380", "domerica"),
+            Pair("1381", "GEMBA"),
+            Pair("1382", "Piko Studio"),
+            Pair("1383", "Studio Live"),
+            Pair("1384", "CinePix"),
+            Pair("1385", "Blue Cat"),
+            Pair("1386", "Infinite"),
+            Pair("1387", "Neft Film"),
+            Pair("1389", "Frencel"),
+            Pair("1391", "SPO Entertainment"),
+            Pair("1392", "Zack Promotion"),
+            Pair("1393", "Geno Studio"),
+            Pair("1394", "RightTracks"),
+            Pair("1395", "Clarion"),
+            Pair("1396", "W-Toon Studio"),
+            Pair("1397", "Universal Music Japan"),
+            Pair("1398", "Akabanten"),
+            Pair("1399", "Asura Film"),
+            Pair("1400", "Walkers Company"),
+            Pair("1401", "Amgakuin"),
+            Pair("1403", "Meiji Seika"),
+            Pair("1404", "PSG"),
+            Pair("1405", "Chuubu Nihon Kyouei"),
+            Pair("1406", "Miracle Bus"),
+            Pair("1408", "Lastrum Music"),
+            Pair("1409", "Monomusik"),
+            Pair("1410", "Rambling Records"),
+            Pair("1411", "Kyoraku Industrial Holdings"),
+            Pair("1412", "Kansai Telecasting Corporation"),
+            Pair("1414", "bilibili"),
+            Pair("1415", "Asahi Broadcasting Corporation"),
+            Pair("1416", "BS11"),
+            Pair("1417", "RAB Aomori Broadcasting Corporation"),
+            Pair("1418", "Nippon Television Music Corporation"),
+            Pair("1419", "GARDEN LODGE"),
+            Pair("1420", "SIDO LIMITED"),
+            Pair("1421", "Takara Tomy A.R.T.S"),
+            Pair("1422", "CyberAgent"),
+            Pair("1423", "Forecast Communications"),
+            Pair("1424", "Media Bank"),
+            Pair("1425", "5pb."),
+            Pair("1426", "Studio Meditation With a Pencil"),
+            Pair("1427", "EBS"),
+            Pair("1428", "Level-5"),
+            Pair("1429", "Azumaker"),
+            Pair("1430", "Shogakukan"),
+            Pair("1431", "Yaoqi"),
+            Pair("1432", "Bishop"),
+            Pair("1433", "Ekura Animal"),
+            Pair("1435", "JCF"),
+            Pair("1436", "Sting Ray"),
+            Pair("1437", "Ishimori Entertainment"),
+            Pair("1438", "Medicrie"),
+            Pair("1439", "Digiturbo"),
+            Pair("1440", "Felix Film"),
+            Pair("1441", "Mippei Eigeki Kiryuukan"),
+            Pair("1442", "Mook DLE"),
+            Pair("1443", "Overlap"),
+            Pair("1444", "Egg Firm"),
+            Pair("1445", "Arcs Create"),
+            Pair("1446", "NEC Avenue"),
+            Pair("1447", "Urban Vision"),
+            Pair("1448", "Network"),
+            Pair("1449", "Animatic"),
+            Pair("1450", "Universal Pictures Japan"),
+            Pair("1451", "TYO"),
+            Pair("1452", "Mag Garden"),
+            Pair("1454", "REALTHING"),
+            Pair("1455", "Tokai Television"),
+            Pair("1456", "Beijing Huihuang Animation Company"),
+            Pair("1457", "Hisashishi Videos"),
+            Pair("1458", "TOMY Company"),
+            Pair("1459", "Geneon Entertainment USA"),
+            Pair("1460", "Coastline Animation Studio"),
+            Pair("1461", "Audio Tanaka"),
+            Pair("1462", "B&T"),
+            Pair("1463", "Anime Antenna Iinkai"),
+            Pair("1464", "Hiro Media"),
+            Pair("1465", "Enlight Pictures"),
+            Pair("1466", "Bandai Visual USA"),
+            Pair("1467", "Pied Piper"),
+            Pair("1468", "Crunchyroll"),
+            Pair("1469", "BS Japan"),
+            Pair("1470", "Konami Digital Entertainment"),
+            Pair("1471", "Platinum Vision"),
+            Pair("1472", "Myung Films"),
+            Pair("1473", "Odolttogi"),
+            Pair("1474", "Synch-Point"),
+            Pair("1476", "Shochiku Animation Institute"),
+            Pair("1477", "Ministry of the Navy"),
+            Pair("1478", "Pencil"),
+            Pair("1479", "Studio Core"),
+            Pair("1480", "CBS"),
+            Pair("1481", "comico"),
+            Pair("1483", "Fuji&gumi Games"),
+            Pair("1484", "Cinelicious Pics"),
+            Pair("1485", "Light Chaser Animation Studios"),
+            Pair("1486", "eigoMANGA"),
+            Pair("1487", "Bouncy"),
+            Pair("1488", "Hakuhodo DY Media Partners"),
+        )
+    }
+}