From 049a67943afb3ee418289fb2e52254901a14ea24 Mon Sep 17 00:00:00 2001 From: seew3l <90949336+seew3l@users.noreply.github.com> Date: Mon, 13 Feb 2023 05:33:41 -0500 Subject: [PATCH] Fix VCPVMP (#15338) * Fix VCPVMP * Add update_strategy --- src/es/vcpvmp/build.gradle | 2 +- .../tachiyomi/extension/es/vcpvmp/VCPVMP.kt | 440 ++---------------- .../extension/es/vcpvmp/VCPVMPFactory.kt | 400 ++-------------- 3 files changed, 90 insertions(+), 752 deletions(-) diff --git a/src/es/vcpvmp/build.gradle b/src/es/vcpvmp/build.gradle index 0e45a4025..c81ce99f3 100644 --- a/src/es/vcpvmp/build.gradle +++ b/src/es/vcpvmp/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'VCPVMP' pkgNameSuffix = "es.vcpvmp" extClass = '.VCPVMPFactory' - extVersionCode = 6 + extVersionCode = 7 isNsfw = true } diff --git a/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt b/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt index f01381e80..3dffe2d9b 100644 --- a/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt +++ b/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMP.kt @@ -6,6 +6,7 @@ import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.model.UpdateStrategy import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request @@ -27,25 +28,36 @@ open class VCPVMP(override val name: String, override val baseUrl: String) : Par override fun latestUpdatesNextPageSelector() = throw UnsupportedOperationException("Not used") - override fun popularMangaRequest(page: Int) = GET("$baseUrl/page/$page", headers) + override fun popularMangaRequest(page: Int) = GET("$baseUrl/$urlSuffix/page/$page", headers) - override fun popularMangaSelector() = "div#ccontent div.gallery" + override fun popularMangaSelector() = "div.blog-list-items > div.entry" override fun popularMangaFromElement(element: Element) = SManga.create().apply { - element.select("a.cover").first()!!.let { + element.select("a.popimg").first()!!.let { setUrlWithoutDomain(it.attr("href")) - title = it.select("div.caption").text() + title = it.select("img").attr("alt") thumbnail_url = it.select("img").attr("abs:src").substringBefore("?") } } - override fun popularMangaNextPageSelector() = "ul.pagination > li.active + li" + override fun popularMangaNextPageSelector() = "div.wp-pagenavi > span.current + a" override fun mangaDetailsParse(document: Document) = SManga.create().apply { - document.select("div#catag").let { - genre = document.select("div#tagsin > a[rel=tag]").joinToString { it.text() } - status = SManga.UNKNOWN - thumbnail_url = document.select(pageListSelector).firstOrNull()?.attr("abs:src") + document.select("div.tax_post").let { + status = SManga.COMPLETED + update_strategy = UpdateStrategy.ONLY_FETCH_ONCE + val genreList = document.select("div.tax_box:has(div.title:contains(Etiquetas)) a[rel=tag]") + genre = genreList.joinToString { genre -> + val text = genre.text().replaceFirstChar { it.uppercase() } + val slug = genre.attr("href").replace("$baseUrl/$genreSuffix/", "") + val newPair = Pair(text, slug) + + if (!genres.contains(newPair)) { + genres += newPair + } + + text + } } } @@ -63,38 +75,38 @@ open class VCPVMP(override val name: String, override val baseUrl: String) : Par override fun chapterListSelector() = throw UnsupportedOperationException("Not used") override fun chapterFromElement(element: Element) = throw UnsupportedOperationException("Not used") - protected open val pageListSelector = "div.comicimg img" + protected open val pageListSelector = "div.wp-content p > img" override fun pageListParse(document: Document): List = document.select(pageListSelector) .mapIndexed { i, img -> Page(i, "", img.attr("abs:src")) } override fun imageUrlParse(document: Document) = throw UnsupportedOperationException("Not used") + protected open val urlSuffix = "" + protected open val genreSuffix = "" + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { var url = baseUrl.toHttpUrlOrNull()!!.newBuilder() - val isOnVCP = (baseUrl == "https://vercomicsporno.com") - url.addPathSegments("page") - url.addPathSegments(page.toString()) - url.addQueryParameter("s", query) + if (query.isNotBlank()) { + url = "$baseUrl/$urlSuffix".toHttpUrlOrNull()!!.newBuilder() + url.addPathSegments("page") + url.addPathSegments(page.toString()) + url.addQueryParameter("s", query) + + return GET(url.build().toString(), headers) + } filters.forEach { filter -> when (filter) { is Genre -> { if (filter.toUriPart().isNotEmpty()) { - url = baseUrl.toHttpUrlOrNull()!!.newBuilder() - - url.addPathSegments(if (isOnVCP) "tags" else "genero") + url.addPathSegments(genreSuffix) url.addPathSegments(filter.toUriPart()) url.addPathSegments("page") url.addPathSegments(page.toString()) } } - is Category -> { - if (filter.toUriPart().isNotEmpty()) { - url.addQueryParameter("cat", filter.toUriPart()) - } - } else -> {} } } @@ -108,377 +120,23 @@ open class VCPVMP(override val name: String, override val baseUrl: String) : Par override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() - override fun getFilterList() = FilterList( - Genre(), - Filter.Separator(), - Category(), - ) + protected open var genres = arrayOf(Pair("Ver todos", "")) - // Array.from(document.querySelectorAll('div.tagcloud a.tag-cloud-link')).map(a => `Pair("${a.innerText}", "${a.href.replace('https://vercomicsporno.com/etiqueta/', '')}")`).join(',\n') - // from https://vercomicsporno.com/ - private class Genre : UriPartFilter( - "Filtrar por categoría", - arrayOf( - Pair("Ver todos", ""), - Pair("Anales", "anales"), - Pair("Comics Porno", "comics-porno"), - Pair("Culonas", "culonas"), - Pair("Doujins", "doujins"), - Pair("Furry", "furry"), - Pair("Incesto", "incesto"), - Pair("Lesbianas", "lesbianas"), - Pair("Madre Hijo", "madre-hijo"), - Pair("Mamadas", "mamadas"), - Pair("Manga Hentai", "manga-hentai"), - Pair("Milfs", "milfs"), - Pair("Milftoon", "milftoon-comics"), - Pair("Orgias", "orgias"), - Pair("Parodias Porno", "parodias-porno"), - Pair("Rubias", "rubias"), - Pair("Series De Tv", "series-de-tv"), - Pair("Tetonas", "tetonas"), - Pair("Trios", "trios"), - Pair("Videojuegos", "videojuegos"), - Pair("Yuri", "yuri-2"), - ), - ) + override fun getFilterList(): FilterList { + val filters = listOf( + Filter.Header("Los filtros serán ignorados si la búsqueda no está vacía."), + Filter.Separator(), + Genre(genres), + ) - // Array.from(document.querySelectorAll('form select#cat option.level-0')).map(a => `Pair("${a.innerText}", "${a.value}")`).join(',\n') + return FilterList(filters) + } + + // Array.from(document.querySelectorAll('div.tagcloud a.tag-cloud-link')).map(a => `Pair("${a.innerText}", "${a.href.replace('https://vercomicsporno.com/etiquetas/', '')}")`).join(',\n') // from https://vercomicsporno.com/ - private class Category : UriPartFilter( - "Filtrar por categoría", - arrayOf( - Pair("Ver todos", ""), - Pair("5ish", "2853"), - Pair("69", "1905"), - Pair("8muses", "856"), - Pair("Aarokira", "2668"), - Pair("ABBB", "3058"), - Pair("Absurd Stories", "2846"), - Pair("Adam 00", "1698"), - Pair("Aeolus", "2831"), - Pair("Afrobull", "3032"), - Pair("Alcor", "2837"), - Pair("angstrom", "2996"), - Pair("Anonymouse", "2851"), - Pair("Aoino Broom", "3086"), - Pair("Aquarina", "2727"), - Pair("Arabatos", "1780"), - Pair("Aroma Sensei", "2663"), - Pair("Art of jaguar", "167"), - Pair("Atreyu Studio", "3040"), - Pair("Awaerr", "2921"), - Pair("Bakuhaku", "2866"), - Pair("Bashfulbeckon", "2841"), - Pair("Bear123", "2814"), - Pair("Black and White", "361"), - Pair("Black House", "3044"), - Pair("Blackadder", "83"), - Pair("Blacky Chan", "2901"), - Pair("Blargsnarf", "2728"), - Pair("BlueVersusRed", "2963"), - Pair("Bnouait", "2706"), - Pair("Born to Die", "2982"), - Pair("Buena trama", "2579"), - Pair("Buru", "2736"), - Pair("Cagri", "2751"), - Pair("CallMePlisskin", "2960"), - Pair("Catfightcentral", "2691"), - Pair("cecyartbytenshi", "2799"), - Pair("Cheka.art", "2999"), - Pair("Cherry Mouse Street", "2891"), - Pair("cherry-gig", "2679"), - Pair("Chochi", "3085"), - Pair("ClaraLaine", "2697"), - Pair("Clasicos", "2553"), - Pair("Cobatsart", "2729"), - Pair("Comics porno", "6"), - Pair("Comics Porno 3D", "1910"), - Pair("Comics porno mexicano", "511"), - Pair("Comics XXX", "119"), - Pair("CrazyDad3d", "2657"), - Pair("Creeeen", "2922"), - Pair("Croc", "1684"), - Pair("Crock", "3004"), - Pair("Cyberunique", "2801"), - Pair("Danaelus", "3080"), - Pair("DankoDeadZone", "3055"), - Pair("Darkhatboy", "2856"), - Pair("DarkShadow", "2845"), - Pair("DarkToons Cave", "2893"), - Pair("Dasan", "2692"), - Pair("David Willis", "2816"), - Pair("Dboy", "3094"), - Pair("Dconthedancefloor", "2905"), - Pair("Degenerate", "2923"), - Pair("Diathorn", "2894"), - Pair("Dicasty", "2983"), - Pair("Dimedrolly", "3017"), - Pair("Dirtycomics", "2957"), - Pair("DMAYaichi", "2924"), - Pair("Dony", "2769"), - Pair("Doxy", "2698"), - Pair("Drawnsex", "9"), - Pair("DrCockula", "2708"), - Pair("Dude-doodle-do", "2984"), - Pair("ebluberry", "2842"), - Pair("Ecchi Kimochiii", "1948"), - Pair("EcchiFactor 2.0", "1911"), - Pair("Eirhjien", "2817"), - Pair("Eliana Asato", "2878"), - Pair("Ender Selya", "2774"), - Pair("Enessef-UU", "3124"), - Pair("ERN", "3010"), - Pair("Erotibot", "2711"), - Pair("Escoria", "2945"), - Pair("Evil Rick", "2946"), - Pair("FearingFun", "3057"), - Pair("Felsala", "2138"), - Pair("Fetishhand", "2932"), - Pair("Fikomi", "2887"), - Pair("Fixxxer", "2737"), - Pair("FLBL", "3050"), - Pair("Folo", "2762"), - Pair("Forked Tail", "2830"), - Pair("Fotonovelas XXX", "320"), - Pair("Freckles", "3095"), - Pair("Fred Perry", "2832"), - Pair("Freehand", "400"), - Pair("FrozenParody", "1766"), - Pair("Fuckit", "2883"), - Pair("Funsexydragonball", "2786"), - Pair("Futanari", "1732"), - Pair("Futanari Fan", "2787"), - Pair("Garabatoz", "2877"), - Pair("Gerph", "2889"), - Pair("GFI", "3123"), - Pair("Ghettoyouth", "2730"), - Pair("Gilftoon", "2619"), - Pair("Glassfish", "84"), - Pair("GNAW", "3084"), - Pair("Goat-Head", "3011"), - Pair("Greivs", "3136"), - Pair("Grigori", "2775"), - Pair("Grose", "2876"), - Pair("Gundam888", "2681"), - Pair("Hagfish", "2599"), - Pair("Hary Draws", "2752"), - Pair("Hioshiru", "2673"), - Pair("Hmage", "2822"), - Pair("Horny-Oni", "2947"), - Pair("Hoteggs102", "2925"), - Pair("InCase", "1927"), - Pair("Incest Candy", "3126"), - Pair("Incesto 3d", "310"), - Pair("Incognitymous", "2693"), - Pair("Inker Shike", "2895"), - Pair("Interracial", "364"), - Pair("Inusen", "2854"), - Pair("Inuyuru", "2699"), - Pair("isakishi", "2721"), - Pair("Jadenkaiba", "2064"), - Pair("javisuzumiya", "2823"), - Pair("Jay Marvel", "2135"), - Pair("Jay Naylor", "174"), - Pair("Jellcaps", "2818"), - Pair("Jhon Person", "135"), - Pair("Jitsch", "2835"), - Pair("Jkr", "718"), - Pair("JLullaby", "2680"), - Pair("John North", "2927"), - Pair("JohnJoseco", "2906"), - Pair("JooJoo", "3026"), - Pair("Joru", "2798"), - Pair("JZerosk", "2757"), - Pair("K/DA", "2667"), - Pair("Ka-iN", "2874"), - Pair("Kadath", "2700"), - Pair("Kannel", "2836"), - Pair("Kaos", "1994"), - Pair("Karmagik", "2943"), - Pair("Karmakaze", "2968"), - Pair("Katoto Chan", "2916"), - Pair("Kimmundo", "2669"), - Pair("Kinkamashe", "2873"), - Pair("Kinkymation", "2733"), - Pair("Kirtu", "107"), - Pair("Kiselrok", "3075"), - Pair("Kogeikun", "2738"), - Pair("KrasH", "2958"), - Pair("Krazy Krow", "2848"), - Pair("Kumi Pumi", "2771"), - Pair("l", "1"), - Pair("Lady Astaroth", "2722"), - Pair("LaundryMom", "2926"), - Pair("LawyBunne", "2744"), - Pair("Laz", "2933"), - Pair("Lemon Font", "2750"), - Pair("Lewdua", "2734"), - Pair("LilithN", "2991"), - Pair("Locofuria", "2578"), - Pair("Loonyjams", "2935"), - Pair("Los Simpsons XXX", "94"), - Pair("Lumo", "2858"), - Pair("MAD-Project", "2890"), - Pair("Magnificent Sexy Gals", "2942"), - Pair("Manaworld", "85"), - Pair("Manaworldcomics", "164"), - Pair("Manga hentai", "152"), - Pair("Maoukouichi", "2910"), - Pair("Marcos Crot", "3025"), - Pair("Matemi", "2741"), - Pair("Mavruda", "2865"), - Pair("MCC", "2843"), - Pair("Meesh", "2740"), - Pair("Meinfischer", "3063"), - Pair("Melkor Mancin", "169"), - Pair("Meowwithme", "2936"), - Pair("Metal Owl", "2694"), - Pair("Miles-DF", "2864"), - Pair("Milffur", "140"), - Pair("Milftoon", "13"), - Pair("Milftoonbeach", "1712"), - Pair("Milky Bunny", "3066"), - Pair("MissBehaviour", "2997"), - Pair("Mojarte", "1417"), - Pair("Moose", "2939"), - Pair("morganagod", "2917"), - Pair("Moval-X", "2785"), - Pair("Mr. E Comics", "2562"), - Pair("Mr. Estella", "3068"), - Pair("MrPotatoParty", "2712"), - Pair("My Bad Bunny", "2989"), - Pair("Myster Box", "2670"), - Pair("Nastee34", "2930"), - Pair("Neal D Anderson", "2725"), - Pair("nearphotison", "3039"), - Pair("nicekotatsu", "2749"), - Pair("nihaotomita", "2998"), - Pair("Nikipostat", "2824"), - Pair("NiniiDawns", "2937"), - Pair("Nisego", "2768"), - Pair("Norasuko", "2800"), - Pair("Noticias", "1664"), - Pair("nsfyosu", "2859"), - Pair("Nyoronyan", "2758"), - Pair("NyuroraXBigdon", "3134"), - Pair("O-tako Studios", "2723"), - Pair("Oh!Nice", "2896"), - Pair("OldFlameShotgun", "2884"), - Pair("Otomo-San", "2788"), - Pair("Pack Imagenes", "654"), - Pair("Pak009", "2819"), - Pair("Palcomix", "48"), - Pair("Pandora Box", "155"), - Pair("peculiart", "3000"), - Pair("Pegasus Smith", "2682"), - Pair("Personalami", "2789"), - Pair("PeterAndWhitney", "2860"), - Pair("Pia-Sama", "2797"), - Pair("PinkPawg", "2861"), - Pair("Pinktoon", "2868"), - Pair("Pixelboy", "2840"), - Pair("pleasure castle", "3081"), - Pair("Pokeporn", "1914"), - Pair("Polyle", "2952"), - Pair("Poonet", "648"), - Pair("Prism Girls", "1926"), - Pair("Privados", "858"), - Pair("PTDMCA", "2949"), - Pair("QTsunade", "2770"), - Pair("quad", "3051"), - Pair("Quarko-Muon", "2872"), - Pair("Queenchikki", "3062"), - Pair("QueenComplex", "2951"), - Pair("QueenTsunade", "2811"), - Pair("Queervanire", "2871"), - Pair("r_ex", "2898"), - Pair("Raidon-san", "2962"), - Pair("RanmaBooks", "1974"), - Pair("Razter", "2689"), - Pair("recreator 2099", "2671"), - Pair("Redboard", "2803"), - Pair("reddanmanic", "2867"), - Pair("Reinbach", "2888"), - Pair("Relatedguy", "2829"), - Pair("ReloadHB", "3012"), - Pair("Revolverwing", "2790"), - Pair("RickFoxxx", "1411"), - Pair("Rino99", "2934"), - Pair("Ripperelite", "2820"), - Pair("RobCiveCat", "2739"), - Pair("RogueArtLove", "2812"), - Pair("Rousfairly", "2776"), - Pair("Rukasu", "2778"), - Pair("Rupalulu", "3135"), - Pair("SakuSaku Panic", "2907"), - Pair("SaMelodii", "2701"), - Pair("SanePerson", "2683"), - Pair("SatyQ", "3024"), - Pair("Saurian", "2950"), - Pair("Selrock", "2886"), - Pair("Shadako26", "2780"), - Pair("Shadbase", "1713"), - Pair("Shadow2007x", "2781"), - Pair("ShadowFenrir", "3132"), - Pair("Sheela", "2690"), - Pair("Sillygirl", "2129"), - Pair("Sin Porno", "2266"), - Pair("Sinner", "2897"), - Pair("Sinope", "2985"), - Pair("Sirkowski", "2802"), - Pair("Skulltitti", "2918"), - Pair("SleepyGimp", "2911"), - Pair("Slipshine", "2791"), - Pair("Slypon", "2912"), - Pair("Smutichi", "2821"), - Pair("Snaketrap", "2940"), - Pair("Sorje", "2961"), - Pair("Spirale", "2870"), - Pair("Stereoscope Comics", "3054"), - Pair("Stormfeder", "2759"), - Pair("Sun1Sol", "2782"), - Pair("SunsetRiders7", "1705"), - Pair("Super Melons", "2850"), - Pair("Taboolicious", "88"), - Pair("Tease Comix", "2948"), - Pair("Tekuho", "2601"), - Pair("Tentabat", "2862"), - Pair("the dark mangaka", "2783"), - Pair("The Pit", "2792"), - Pair("thegoodbadart", "2684"), - Pair("TheKite", "2825"), - Pair("Theminus", "2828"), - Pair("TheNewGuy", "3018"), - Pair("TheOtherHalf", "2666"), - Pair("Tim Fischer", "2763"), - Pair("Totempole", "2746"), - Pair("TotesFleisch8", "2764"), - Pair("Tovio Rogers", "3056"), - Pair("Tracy Scops", "2648"), - Pair("Transmorpher DDS", "2672"), - Pair("Turtlechan", "2796"), - Pair("TvMx", "2793"), - Pair("Urakan", "3043"), - Pair("Uzonegro", "2695"), - Pair("V3rnon", "2973"), - Pair("Vaiderman", "3031"), - Pair("VentZX", "2575"), - Pair("Vercomicsporno", "1376"), - Pair("Watsup", "2863"), - Pair("Whargleblargle", "2844"), - Pair("Wherewolf", "2685"), - Pair("Witchking00", "1815"), - Pair("Wulfsaga", "2931"), - Pair("Xamrock", "2686"), - Pair("Xierra099", "2702"), - Pair("Xkit", "2703"), - Pair("Y3df", "86"), - Pair("Yamamoto", "3019"), - Pair("Yusioka", "3082"), - Pair("Zillionaire", "2807"), - Pair("Zzomp", "252"), - Pair("ZZZ Comics", "2839"), - ), + + private class Genre(genres: Array>) : UriPartFilter( + "Filtrar por género", + genres, ) } diff --git a/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMPFactory.kt b/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMPFactory.kt index c7c26cd92..b79db8770 100644 --- a/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMPFactory.kt +++ b/src/es/vcpvmp/src/eu/kanade/tachiyomi/extension/es/vcpvmp/VCPVMPFactory.kt @@ -3,8 +3,6 @@ package eu.kanade.tachiyomi.extension.es.vcpvmp import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceFactory import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.SManga -import org.jsoup.nodes.Element class VCPVMPFactory : SourceFactory { override fun createSources(): List = listOf( @@ -15,381 +13,63 @@ class VCPVMPFactory : SourceFactory { class VCP : VCPVMP("VCP", "https://vercomicsporno.com") { - override fun popularMangaSelector() = "div.blog-list-items header ~ div.entry" - - override val pageListSelector = "div.wp-content img" - - override fun popularMangaNextPageSelector() = "span.current + a" - - override fun popularMangaFromElement(element: Element) = SManga.create().apply { - element.select("a.popimg").first()!!.let { - setUrlWithoutDomain(it.attr("href")) - it.select("figure img").first()!!.let { img -> - title = img.attr("alt") - thumbnail_url = img.attr("abs:src") - } - } - } + override val urlSuffix = "comics-porno" + override val genreSuffix = "etiquetas" + override var genres = + arrayOf( + Pair("Ver todos", ""), + Pair("Anales", "anales"), + Pair("Anime", "anime"), + Pair("Aprobado por c1b3r3y3", "aprobado-por-c1b3r3y3"), + Pair("Comics Incesto", "incesto-xxx"), + Pair("Culonas", "culonas"), + Pair("Furry", "furry-3"), + Pair("Futanari", "futanari-2"), + Pair("Lesbianas", "lesbianas"), + Pair("Madre Hijo", "madre-hijo"), + Pair("Mamadas", "mamadas"), + Pair("Manga Hentai", "manga-hentai-3"), + Pair("Masturbaciones", "madre-hijo"), + Pair("Milfs", "milfs-xxx"), + Pair("Orgias", "orgias"), + Pair("Parodias Porno", "parodias-porno-xxx"), + Pair("Rubias", "rubias"), + Pair("Tetonas", "tetonas"), + Pair("Trios", "trios"), + Pair("Videojuegos", "videojuegos-2"), + Pair("Yuri", "yuri-xxx"), + ) } class VMP : VCPVMP("VMP", "https://vermangasporno.com") { - override val pageListSelector = "div.comicimg img[src^=$baseUrl]" - // Array.from(document.querySelectorAll('div.tagcloud a.tag-cloud-link')) - // .map(a => `Pair("${a.innerText}", "${a.href.replace('https://vermangasporno.com/genero/', '')}")`).join(',\n') - // from https://vermangasporno.com/ - private class Genre : UriPartFilter( - "Filtrar por generos", + override val urlSuffix = "xxx" + override val genreSuffix = "genero" + + override var genres = arrayOf( Pair("Ver todos", ""), Pair("Ahegao", "ahegao"), - Pair("Anal", "anal"), Pair("Big Ass", "big-ass"), Pair("Big Breasts", "big-breasts"), Pair("Blowjob", "blowjob"), Pair("Cheating", "cheating"), - Pair("Colegiala", "colegiala"), - Pair("Fullcolor", "fullcolor"), + Pair("Creampie", "creampie"), + Pair("Cum", "cum"), Pair("Group", "group"), - Pair("Incest", "incest"), - Pair("loli", "loli"), - Pair("Lolicon", "lolicon"), + Pair("Hairy", "hairy"), + Pair("Kissing", "kissing"), Pair("Milf", "milf"), + Pair("Mosaic Censorship", "mosaic-censorship"), Pair("Nakadashi", "nakadashi"), - Pair("Paizuri", "paizuri"), Pair("Schoolgirl Uniform", "schoolgirl-uniform"), + Pair("Sin Censura", "sin-censura"), Pair("Sole Female", "sole-female"), + Pair("Sole Male", "sole-male"), + Pair("Squirting", "squirting"), Pair("Stockings", "stockings"), - Pair("Tetona", "tetona"), - Pair("Tetonas", "tetonas"), - ), - ) - - // Array.from(document.querySelectorAll('form select#cat option.level-0')).map(a => `Pair("${a.innerText}", "${a.value}")`).join(',\n') - // from https://vermangasporno.com/ - private class Category : UriPartFilter( - "Filtrar por categoría", - arrayOf( - Pair("Ver todos", ""), - Pair("3×3 Eyes", "1325"), - Pair("Accel World", "175"), - Pair("Aikatsu!", "1983"), - Pair("Akame ga Kill!", "2235"), - Pair("Akaruku Tanoshiku Kimochiyoku", "2268"), - Pair("Amagami", "1194"), - Pair("Amagi Brilliant Park", "209"), - Pair("Amano Megumi ha Sukidarake!", "888"), - Pair("Ane Doki", "1121"), - Pair("Angel Beats!", "176"), - Pair("Ano Hi Mita Hana no Namae wo Bokutachi wa Mada Shiranai", "1097"), - Pair("Another", "177"), - Pair("Ansatsu Kyoushitsu", "2"), - Pair("Aoi Hana", "1256"), - Pair("Aquarion EVOL", "2089"), - Pair("Arcana Heart", "934"), - Pair("Arslan senki", "2068"), - Pair("Asobi ni Iku yo!", "1280"), - Pair("Azur Lane", "2076"), - Pair("Baka to Test to Shoukanjuu", "1202"), - Pair("Baka to Test to Shoukanjuu | Autor: Kurosawa Kiyotaka", "1201"), - Pair("Bakemonogatari", "931"), - Pair("Bakuman", "1259"), - Pair("BanG Dream!", "1863"), - Pair("Batman", "184"), - Pair("bijin onna joushi takizawa-san", "2104"), - Pair("Bishoujo Senshi Sailor Moon", "745"), - Pair("Bleach", "82"), - Pair("Blend S", "2102"), - Pair("Blood+", "189"), - Pair("Boku no Hero Academia", "245"), - Pair("Boku wa tomodachi ga sukunai", "674"), - Pair("Bokutachi wa Benkyou ga Dekinai", "2180"), - Pair("Boruto", "2071"), - Pair("Capcom", "251"), - Pair("Charlotte", "1444"), - Pair("Clannad", "102"), - Pair("Claymore", "170"), - Pair("Code Geass", "171"), - Pair("Cyberbots", "981"), - Pair("Dagashi Kashi", "733"), - Pair("Danganronpa", "92"), - Pair("Danmachi", "1042"), - Pair("Darker than Black", "995"), - Pair("Darker than Black: The Black Contractor", "1086"), - Pair("Darkstalkers", "1996"), - Pair("Date A Live", "670"), - Pair("Dead Or Alive", "233"), - Pair("Deadman Wonderland", "900"), - Pair("Denpa Onna to Seishun Otoko", "952"), - Pair("Dokidoki! Precure", "1919"), - Pair("Dr. Slump", "977"), - Pair("Dragon Quest", "3"), - Pair("dragon quest iii", "239"), - Pair("Dragonball", "4"), - Pair("Dragon’s Crown", "1064"), - Pair("DREAM C CLUB", "941"), - Pair("Dungeon Ni Deai O Motomeru No Wa Machigatteiru Darou Ka", "226"), - Pair("Dungeon ni Deai wo Motomeru no wa Machigatteiru Darou ka", "127"), - Pair("Dungeon Travelers", "1951"), - Pair("Dynasty Warriors", "1885"), - Pair("Enen no Shouboutai", "2169"), - Pair("Eromanga Sensei", "901"), - Pair("Evangelion", "172"), - Pair("Fairy Tail", "348"), - Pair("Fantasy Earth Zero", "1433"), - Pair("Fate Kaleid Liner Prisma Illya", "237"), - Pair("Fate Stay Night", "235"), - Pair("Fate/Grand Order", "891"), - Pair("Fate/hollow ataraxia", "1294"), - Pair("Fate/stay night", "722"), - Pair("Final Fantasy", "591"), - Pair("Final Figh", "1215"), - Pair("Freezing", "190"), - Pair("Full Metal Daemon: Muramasa", "122"), - Pair("Full Metal Panic", "167"), - Pair("Fullmetal Alchemist", "118"), - Pair("Furry", "1972"), - Pair("Gabriel Dropout", "884"), - Pair("Gakkou Gurashi!", "1047"), - Pair("Gate: Jieitai Kano Chi nite Kaku Tatakaeri", "761"), - Pair("Gate: Jieitai Kanochi nite", "241"), - Pair("Gate: Jieitai Kanochi nite Kaku Tatakaeri", "243"), - Pair("Gegege no Kitarou", "1862"), - Pair("Getsuyoubi no Tawawa", "250"), - Pair("Ghost In The Shell", "1898"), - Pair("Girls und Panzer", "904"), - Pair("Goblin Slayer", "2143"), - Pair("Gochuumon wa Usagi Desu ka?", "5"), - Pair("Golden Kamuy", "2227"), - Pair("Gotoubun no Hanayome", "2251"), - Pair("Granblue Fantasy", "257"), - Pair("Grisaia no Kajitsu", "6"), - Pair("Guilty Gear", "727"), - Pair("Gundam 00", "857"), - Pair("Gundam Build Divers", "2137"), - Pair("Gundam Build Fighters", "7"), - Pair("Gundam SEED Destiny", "103"), - Pair("Hanasaku Iroha", "1104"), - Pair("Hanayamata", "1947"), - Pair("Hatsujou no Genri", "2139"), - Pair("Hatsukoi Delusion", "1930"), - Pair("Hayate no Gotoku!", "595"), - Pair("He Is My Master", "104"), - Pair("Hentai Ouji to Warawanai Neko.", "8"), - Pair("Hibike! Euphonium", "9"), - Pair("Highschool Dead", "168"), - Pair("Highschool DxD", "105"), - Pair("Highschool of the Dead", "937"), - Pair("Himouto! Umaru-chan", "1039"), - Pair("Hokenshitsu no Shinigami", "1105"), - Pair("Honkai Gakuen", "2165"), - Pair("Hyperdimension Neptunia", "1567"), - Pair("Ichigo 100%", "151"), - Pair("Incesto", "182"), - Pair("Infinite Stratos", "786"), - Pair("Isekai Maou to Shoukan Shoujo no Dorei Majutsu", "2170"), - Pair("K-ON", "150"), - Pair("Kaguya Luna", "2249"), - Pair("Kaguya-sama wa Kokurasetai", "2157"), - Pair("Kaichou wa Maid-sama!", "1129"), - Pair("Kaiten Mutenmaru", "911"), - Pair("Kami Nomi zo Shiru Sekai", "1091"), - Pair("Kämpfer", "1120"), - Pair("Kangoku Gakuen", "1036"), - Pair("Kanon", "65"), - Pair("Kantai Collection: KanColle", "10"), - Pair("Kara no Kyoukai", "731"), - Pair("Kenichi", "96"), - Pair("Keroro Gunsou", "11"), - Pair("Kidou Senshi Gundam 00", "960"), - Pair("Kill la Kill", "1851"), - Pair("Kimetsu no Yaiba", "2149"), - Pair("Kimi ni Todoke", "1127"), - Pair("Kimi no Na wa", "2147"), - Pair("KimiKiss", "1182"), - Pair("King of fighter", "155"), - Pair("King of Fighters", "788"), - Pair("Kiratto Pri Chan", "2182"), - Pair("Kobayashi-san-chi no Maid Dragon", "299"), - Pair("Koihime Musou", "1188"), - Pair("Kono Subarashii Sekai Ni Syukufuku O", "259"), - Pair("Kono Subarashii Sekai ni Syukufuku o!", "853"), - Pair("Konosuba!", "2128"), - Pair("Kurogane no Linebarrels", "1150"), - Pair("Kyoukai Senjou no Horizon", "660"), - Pair("Ladies Versus Butlers", "204"), - Pair("Little Witch Academia", "2127"), - Pair("Love Hina", "94"), - Pair("Love Live Sunshine", "207"), - Pair("Love Live!", "716"), - Pair("Love Live! School Idol Project", "12"), - Pair("Love Plus", "1013"), - Pair("Lucky Star", "893"), - Pair("Macross Frontier", "157"), - Pair("Mahou Sensei Negima", "61"), - Pair("Mahou Sensei Negima!", "1331"), - Pair("Mahou Shoujo Lyrical Nanoha", "13"), - Pair("Mahouka Koukou no Rettousei", "93"), - Pair("Mai-Otome", "2271"), - Pair("Maji de Watashi ni Koi Shinasai!", "1218"), - Pair("Maria-sama ga Miteru", "902"), - Pair("Mayo Chiki!", "137"), - Pair("Medaka Box", "615"), - Pair("Minecraft", "2098"), - Pair("Mirai Nikki", "1138"), - Pair("Mitsuboshi Colors", "2307"), - Pair("Mobile Suit Gundam Tekketsu No Orphans", "297"), - Pair("Mondaiji-tachi ga Isekai Kara Kuru Sou Desu yo?", "1403"), - Pair("Monster Hunter", "1742"), - Pair("Monster Musume no Iru Nichijou", "683"), - Pair("Moyashimon", "1509"), - Pair("Musaigen no Phantom World", "298"), - Pair("Nagi no Asukara", "1830"), - Pair("Nanatsu no Taizai", "2299"), - Pair("Naruto", "14"), - Pair("Nazo no Kanojo X", "1247"), - Pair("Neon Genesis Evangelion", "62"), - Pair("Nisekoi", "246"), - Pair("Nyan Koi!", "978"), - Pair("Oboro Muramasa", "1116"), - Pair("Ojousama to Maid no Midarana Seikatsu", "1931"), - Pair("Okusan", "998"), - Pair("One Piece", "68"), - Pair("One Punch Man", "188"), - Pair("Onegai Teacher", "1076"), - Pair("Ookami to Koushinryou", "958"), - Pair("Ookami-san to Shichinin no Nakama-tachi", "1244"), - Pair("Ore no Imouto ga Konna ni Kawaii Wake ga Nai", "328"), - Pair("Original", "15"), - Pair("Oshiete! Galko-chan", "2136"), - Pair("Overlord", "686"), - Pair("Overwatch", "260"), - Pair("Panty & Stocking with Garterbelt", "1176"), - Pair("Papa no Iu Koto o Kikinasai!", "976"), - Pair("Parasyte", "1911"), - Pair("Persona 3", "255"), - Pair("Persona 4", "953"), - Pair("Persona 5", "2265"), - Pair("Pokemon", "148"), - Pair("Princess crown", "983"), - Pair("Princess Lover!", "1175"), - Pair("Prison School", "164"), - Pair("Psycho-Pass", "2275"), - Pair("Puella Magi Madoka Magica", "948"), - Pair("Queen’s Blade", "656"), - Pair("Ragnarok Online", "1243"), - Pair("Rakudai Kishi no Cavalry", "765"), - Pair("Rakuen Tsuihou -Expelled from Paradise-", "1045"), - Pair("Ranma 1/2", "767"), - Pair("Re:Zero kara Hajimeru Isekai Seikatsu", "161"), - Pair("Real Drive", "261"), - Pair("Rebuild of evangelion", "149"), - Pair("Renkin San-kyuu Magical? Pokaan", "737"), - Pair("Resident Evil", "1118"), - Pair("Rockman DASH", "1242"), - Pair("Rokka no Yuusha", "1600"), - Pair("Rosario + Vampire", "1204"), - Pair("Rosario Vampire", "234"), - Pair("Rozen Maiden", "1240"), - Pair("Rurouni Kenshin", "1520"), - Pair("Saber Marionette", "73"), - Pair("Saenai Heroine no Sodatekata", "926"), - Pair("Sailor Moon", "186"), - Pair("Saint Seiya", "66"), - Pair("Saki", "258"), - Pair("School Rumble", "191"), - Pair("Sekirei", "180"), - Pair("Sekiro: Shadows Die Twice", "2152"), - Pair("Serial Experiments Lain", "1498"), - Pair("Seto No Hanayome", "219"), - Pair("Shadowverse", "1957"), - Pair("Shantae", "1050"), - Pair("Shijou Saikyou no Deshi Kenichi", "1144"), - Pair("Shingeki no Kyojin", "169"), - Pair("Shingetsutan Tsukihime", "16"), - Pair("Shinmai Fukei Kiruko-san", "2207"), - Pair("Shinmai Maou no Testament", "17"), - Pair("Shinra Bansho", "18"), - Pair("Shinrabansho", "2063"), - Pair("Shinrabanshou", "1979"), - Pair("Shinryaku! Ika Musume", "1160"), - Pair("shirokuma cafe", "2074"), - Pair("Shitsuke Ai", "1630"), - Pair("Shokugeki no Soma", "152"), - Pair("Smile Precure", "858"), - Pair("Smile PreCure!", "1841"), - Pair("SNK", "252"), - Pair("Sora no Otoshimono", "20"), - Pair("Soul Eater", "158"), - Pair("Space Dandy", "1826"), - Pair("Spice and wolf", "154"), - Pair("Spider-man", "2140"), - Pair("Star Twinkle PreCure", "2310"), - Pair("Steins;Gate", "992"), - Pair("Street Fighter", "101"), - Pair("Strike Witches", "642"), - Pair("Subarashii Sekai ni Shukufuku wo!", "739"), - Pair("Suite Precure♪", "145"), - Pair("Super Sonico", "1102"), - Pair("Super Street Fighter IV", "802"), - Pair("Suzumiya Haruhi No Yuuutsu", "314"), - Pair("Sword art online", "147"), - Pair("taimanin asagi", "1869"), - Pair("Taimanin Yukikaze", "826"), - Pair("Tales of the Abyss", "1148"), - Pair("Tamako Market", "770"), - Pair("Tate no Yuusha no Nariagari", "2184"), - Pair("Teen Titans", "21"), - Pair("Tengen Toppa Gurren Lagann", "1190"), - Pair("Tengen Toppa Gurren-Lagann", "100"), - Pair("Tera", "2215"), - Pair("TERA The Exiled Realm of Arborea", "2214"), - Pair("Terra Formars", "2073"), - Pair("The iDOLM@STER", "22"), - Pair("the loud house", "2054"), - Pair("The OneChanbara", "1053"), - Pair("The Seven Deadly Sins", "620"), - Pair("To Love-Ru", "23"), - Pair("To Love-Ru Darkness", "1135"), - Pair("Toaru Kagaku no Railgun", "769"), - Pair("Toaru Majutsu no Index", "741"), - Pair("ToHeart", "1164"), - Pair("ToHeart2", "905"), - Pair("ToHeart2 AnotherDays", "97"), - Pair("Tokyo 7th Sisters", "762"), - Pair("Tokyo Ghoul", "864"), - Pair("Tonari no Seki-kun", "1768"), - Pair("Toradora", "192"), - Pair("Toradora!", "1152"), - Pair("Touhou Project", "24"), - Pair("Traducción Exclusiva", "2285"), - Pair("Tsujou Kougeki ga Zentai Kougeki de 2-kai Kougeki no Okaasan wa Suki desu ka?", "2131"), - Pair("Tsukihime", "877"), - Pair("Uchuu no Stellvia", "715"), - Pair("Utawarerumono", "1905"), - Pair("Uzaki-chan wa Asobitai!", "2146"), - Pair("Valkyria Chronicles", "1084"), - Pair("Vampire savior", "982"), - Pair("Vocaloid", "912"), - Pair("Watashi ga Motenai no wa Dou Kangaetemo Omaera ga Warui!", "1032"), - Pair("Witch Craft Works", "552"), - Pair("Witchblade", "1302"), - Pair("Wizard of Oz", "723"), - Pair("Yahari Ore no Seishun Love Come wa Machigatteiru", "967"), - Pair("Yakitate!! Japan", "1409"), - Pair("yatterman", "984"), - Pair("Yotsubato!", "1429"), - Pair("Yu-Gi-Oh! ZEXAL", "196"), - Pair("Yuru Yuri", "25"), - Pair("YuruYuri", "894"), - Pair("Zegapain", "1330"), - Pair("Zero no Tsukaima", "26"), - Pair("Zettai Junpaku Mahou Shoujo", "1918"), - Pair("Zettai Karen Children", "1417"), - Pair("Zoids Shinseiki Zero", "153"), - Pair("Zombieland Saga", "2059"), - ), - ) + Pair("Unusual Pupils", "unusual-pupils"), + ) } open class UriPartFilter(displayName: String, private val vals: Array>) :