Initial commit
This commit is contained in:
commit
98ed7e8839
2263 changed files with 108711 additions and 0 deletions
14
src/all/missav/build.gradle
Normal file
14
src/all/missav/build.gradle
Normal file
|
@ -0,0 +1,14 @@
|
|||
ext {
|
||||
extName = 'MissAV'
|
||||
extClass = '.MissAV'
|
||||
extVersionCode = 11
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
||||
|
||||
dependencies {
|
||||
implementation(project(':lib:unpacker'))
|
||||
implementation(project(':lib:playlist-utils'))
|
||||
implementation(project(':lib:javcoverfetcher'))
|
||||
}
|
BIN
src/all/missav/res/mipmap-hdpi/ic_launcher.png
Normal file
BIN
src/all/missav/res/mipmap-hdpi/ic_launcher.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
BIN
src/all/missav/res/mipmap-mdpi/ic_launcher.png
Normal file
BIN
src/all/missav/res/mipmap-mdpi/ic_launcher.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
BIN
src/all/missav/res/mipmap-xhdpi/ic_launcher.png
Normal file
BIN
src/all/missav/res/mipmap-xhdpi/ic_launcher.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
BIN
src/all/missav/res/mipmap-xxhdpi/ic_launcher.png
Normal file
BIN
src/all/missav/res/mipmap-xxhdpi/ic_launcher.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
BIN
src/all/missav/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
BIN
src/all/missav/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
src/all/missav/res/web_hi_res_512.png
Normal file
BIN
src/all/missav/res/web_hi_res_512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
|
@ -0,0 +1,191 @@
|
|||
package eu.kanade.tachiyomi.animeextension.all.missav
|
||||
|
||||
import android.app.Application
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimesPage
|
||||
import eu.kanade.tachiyomi.animesource.model.SAnime
|
||||
import eu.kanade.tachiyomi.animesource.model.SEpisode
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource
|
||||
import eu.kanade.tachiyomi.lib.javcoverfetcher.JavCoverFetcher
|
||||
import eu.kanade.tachiyomi.lib.javcoverfetcher.JavCoverFetcher.fetchHDCovers
|
||||
import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils
|
||||
import eu.kanade.tachiyomi.lib.unpacker.Unpacker
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Element
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class MissAV : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||
|
||||
override val name = "MissAV"
|
||||
|
||||
override val lang = "all"
|
||||
|
||||
override val baseUrl = "https://missav.com"
|
||||
|
||||
override val supportsLatest = true
|
||||
|
||||
override fun headersBuilder() = super.headersBuilder()
|
||||
.add("Referer", "$baseUrl/")
|
||||
|
||||
private val playlistExtractor by lazy {
|
||||
PlaylistUtils(client, headers)
|
||||
}
|
||||
|
||||
private val preferences by lazy {
|
||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||
}
|
||||
|
||||
override fun popularAnimeRequest(page: Int) =
|
||||
GET("$baseUrl/en/today-hot?page=$page", headers)
|
||||
|
||||
override fun popularAnimeParse(response: Response): AnimesPage {
|
||||
val document = response.asJsoup()
|
||||
|
||||
val entries = document.select("div.thumbnail").map { element ->
|
||||
SAnime.create().apply {
|
||||
element.select("a.text-secondary").also {
|
||||
setUrlWithoutDomain(it.attr("href"))
|
||||
title = it.text()
|
||||
}
|
||||
thumbnail_url = element.selectFirst("img")?.attr("abs:data-src")
|
||||
}
|
||||
}
|
||||
|
||||
val hasNextPage = document.selectFirst("a[rel=next]") != null
|
||||
|
||||
return AnimesPage(entries, hasNextPage)
|
||||
}
|
||||
|
||||
override fun latestUpdatesRequest(page: Int) =
|
||||
GET("$baseUrl/en/new?page=$page", headers)
|
||||
|
||||
override fun latestUpdatesParse(response: Response) = popularAnimeParse(response)
|
||||
|
||||
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request {
|
||||
val url = baseUrl.toHttpUrl().newBuilder().apply {
|
||||
val genre = filters.firstInstanceOrNull<GenreList>()?.selected
|
||||
if (query.isNotEmpty()) {
|
||||
addEncodedPathSegments("en/search")
|
||||
addPathSegment(query.trim())
|
||||
} else if (genre != null) {
|
||||
addEncodedPathSegments(genre)
|
||||
} else {
|
||||
addEncodedPathSegments("en/new")
|
||||
}
|
||||
filters.firstInstanceOrNull<SortFilter>()?.selected?.let {
|
||||
addQueryParameter("sort", it)
|
||||
}
|
||||
addQueryParameter("page", page.toString())
|
||||
}.build().toString()
|
||||
|
||||
return GET(url, headers)
|
||||
}
|
||||
|
||||
override fun getFilterList() = getFilters()
|
||||
|
||||
override fun searchAnimeParse(response: Response) = popularAnimeParse(response)
|
||||
|
||||
override fun animeDetailsParse(response: Response): SAnime {
|
||||
val document = response.asJsoup()
|
||||
|
||||
val jpTitle = document.select("div.text-secondary span:contains(title) + span").text()
|
||||
val siteCover = document.selectFirst("video.player")?.attr("abs:data-poster")
|
||||
|
||||
return SAnime.create().apply {
|
||||
title = document.selectFirst("h1.text-base")!!.text()
|
||||
genre = document.getInfo("/genres/")
|
||||
author = listOfNotNull(
|
||||
document.getInfo("/directors/"),
|
||||
document.getInfo("/makers/"),
|
||||
).joinToString()
|
||||
artist = document.getInfo("/actresses/")
|
||||
status = SAnime.COMPLETED
|
||||
description = buildString {
|
||||
document.selectFirst("div.mb-1")?.text()?.also { append("$it\n") }
|
||||
|
||||
document.getInfo("/labels/")?.also { append("\nLabel: $it") }
|
||||
document.getInfo("/series/")?.also { append("\nSeries: $it") }
|
||||
|
||||
document.select("div.text-secondary:not(:has(a)):has(span)")
|
||||
.eachText()
|
||||
.forEach { append("\n$it") }
|
||||
}
|
||||
thumbnail_url = if (preferences.fetchHDCovers) {
|
||||
JavCoverFetcher.getCoverByTitle(jpTitle) ?: siteCover
|
||||
} else {
|
||||
siteCover
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun Element.getInfo(urlPart: String) =
|
||||
select("div.text-secondary > a[href*=$urlPart]")
|
||||
.eachText()
|
||||
.joinToString()
|
||||
.takeIf(String::isNotBlank)
|
||||
|
||||
override suspend fun getEpisodeList(anime: SAnime): List<SEpisode> {
|
||||
return listOf(
|
||||
SEpisode.create().apply {
|
||||
url = anime.url
|
||||
name = "Episode"
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
override fun videoListParse(response: Response): List<Video> {
|
||||
val document = response.asJsoup()
|
||||
|
||||
val playlists = document.selectFirst("script:containsData(function(p,a,c,k,e,d))")
|
||||
?.data()
|
||||
?.let(Unpacker::unpack)?.ifEmpty { null }
|
||||
?: return emptyList()
|
||||
|
||||
val masterPlaylist = playlists.substringAfter("source=\"").substringBefore("\";")
|
||||
|
||||
return playlistExtractor.extractFromHls(masterPlaylist, referer = "$baseUrl/")
|
||||
}
|
||||
|
||||
override fun List<Video>.sort(): List<Video> {
|
||||
val quality = preferences.getString(PREF_QUALITY, PREF_QUALITY_DEFAULT)!!
|
||||
|
||||
return sortedWith(
|
||||
compareBy { it.quality.contains(quality) },
|
||||
).reversed()
|
||||
}
|
||||
|
||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||
ListPreference(screen.context).apply {
|
||||
key = PREF_QUALITY
|
||||
title = PREF_QUALITY_TITLE
|
||||
entries = arrayOf("720p", "480p", "360p")
|
||||
entryValues = arrayOf("720", "480", "360")
|
||||
setDefaultValue(PREF_QUALITY_DEFAULT)
|
||||
summary = "%s"
|
||||
}.also(screen::addPreference)
|
||||
|
||||
JavCoverFetcher.addPreferenceToScreen(screen)
|
||||
}
|
||||
|
||||
override fun episodeListParse(response: Response): List<SEpisode> {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
private inline fun <reified T> List<*>.firstInstanceOrNull(): T? =
|
||||
filterIsInstance<T>().firstOrNull()
|
||||
|
||||
companion object {
|
||||
private const val PREF_QUALITY = "preferred_quality"
|
||||
private const val PREF_QUALITY_TITLE = "Preferred quality"
|
||||
private const val PREF_QUALITY_DEFAULT = "720"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,346 @@
|
|||
package eu.kanade.tachiyomi.animeextension.all.missav
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilter
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
|
||||
abstract class SelectFilter(
|
||||
name: String,
|
||||
private val options: List<Pair<String, String>>,
|
||||
) : AnimeFilter.Select<String>(
|
||||
name,
|
||||
options.map { it.first }.toTypedArray(),
|
||||
) {
|
||||
val selected get() = options[state].second.takeUnless { state == 0 }
|
||||
}
|
||||
|
||||
class SortFilter : SelectFilter(
|
||||
"Sort by",
|
||||
SORT,
|
||||
) {
|
||||
companion object {
|
||||
val SORT = listOf(
|
||||
Pair("Release date", "released_at"),
|
||||
Pair("Recent update", "published_at"),
|
||||
Pair("Today views", "today_views"),
|
||||
Pair("Weekly views", "weekly_views"),
|
||||
Pair("Monthly views", "monthly_views"),
|
||||
Pair("Total views", "views"),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class GenreList : SelectFilter(
|
||||
"Genres",
|
||||
GENRES,
|
||||
) {
|
||||
companion object {
|
||||
val GENRES = listOf(
|
||||
Pair("", ""),
|
||||
Pair("Uncensored Leak", "en/uncensored-leak"),
|
||||
Pair("Hd", "en/genres/Hd"),
|
||||
Pair("Exclusive", "en/genres/Exclusive"),
|
||||
Pair("Creampie", "en/genres/Creampie"),
|
||||
Pair("Big Breasts", "en/genres/Big%20Breasts"),
|
||||
Pair("Individual", "en/genres/Individual"),
|
||||
Pair("Wife", "en/genres/Wife"),
|
||||
Pair("Mature Woman", "en/genres/Mature%20Woman"),
|
||||
Pair("Ordinary Person", "en/genres/Ordinary%20Person"),
|
||||
Pair("Pretty Girl", "en/genres/Pretty%20Girl"),
|
||||
Pair("Ride", "en/genres/Ride"),
|
||||
Pair("Oral Sex", "en/genres/Oral%20Sex"),
|
||||
Pair("Orgy", "en/genres/Orgy"),
|
||||
Pair("Slim Pixelated", "en/genres/Slim%20Pixelated"),
|
||||
Pair("4 Hours Or More", "en/genres/4%20Hours%20Or%20More"),
|
||||
Pair("Slut", "en/genres/Slut"),
|
||||
Pair("Collection", "en/genres/Collection"),
|
||||
Pair("High School Girl", "en/genres/High%20School%20Girl"),
|
||||
Pair("Squirting", "en/genres/Squirting"),
|
||||
Pair("Fetish", "en/genres/Fetish"),
|
||||
Pair("Selfie", "en/genres/Selfie"),
|
||||
Pair("Tit Job", "en/genres/Tit%20Job"),
|
||||
Pair("Planning", "en/genres/Planning"),
|
||||
Pair("Incest", "en/genres/Incest"),
|
||||
Pair("Hit On Girls", "en/genres/Hit%20On%20Girls"),
|
||||
Pair("Sneak Shots", "en/genres/Sneak%20Shots"),
|
||||
Pair("Slim", "en/genres/Slim"),
|
||||
Pair("Bukkake", "en/genres/Bukkake"),
|
||||
Pair("Beautiful Breasts", "en/genres/Beautiful%20Breasts"),
|
||||
Pair("Masturbate", "en/genres/Masturbate"),
|
||||
Pair("Masturbation", "en/genres/Masturbation"),
|
||||
Pair("Restraint", "en/genres/Restraint"),
|
||||
Pair("Promiscuous", "en/genres/Promiscuous"),
|
||||
Pair("Lesbian", "en/genres/Lesbian"),
|
||||
Pair("Ntr", "en/genres/Ntr"),
|
||||
Pair("Sister", "en/genres/Sister"),
|
||||
Pair("Plot", "en/genres/Plot"),
|
||||
Pair("Cosplay", "en/genres/Cosplay"),
|
||||
Pair("Humiliation", "en/genres/Humiliation"),
|
||||
Pair("Documentary", "en/genres/Documentary"),
|
||||
Pair("Hot Girl", "en/genres/Hot%20Girl"),
|
||||
Pair("Ol", "en/genres/Ol"),
|
||||
Pair("Uniform", "en/genres/Uniform"),
|
||||
Pair("Fingering", "en/genres/Fingering"),
|
||||
Pair("Vibrator", "en/genres/Vibrator"),
|
||||
Pair("Adultery", "en/genres/Adultery"),
|
||||
Pair("Cunnilingus", "en/genres/Cunnilingus"),
|
||||
Pair("Delusion", "en/genres/Delusion"),
|
||||
Pair("Female College Student", "en/genres/Female%20College%20Student"),
|
||||
Pair("Sm", "en/genres/Sm"),
|
||||
Pair("Shame", "en/genres/Shame"),
|
||||
Pair("Anus", "en/genres/Anus"),
|
||||
Pair("Uniform", "en/genres/Uniform"),
|
||||
Pair("Petite", "en/genres/Petite"),
|
||||
Pair("Shaving", "en/genres/Shaving"),
|
||||
Pair("Subjective Perspective", "en/genres/Subjective%20Perspective"),
|
||||
Pair("Prostitute", "en/genres/Prostitute"),
|
||||
Pair("Various Occupations", "en/genres/Various%20Occupations"),
|
||||
Pair("Mother", "en/genres/Mother"),
|
||||
Pair("Vibrator", "en/genres/Vibrator"),
|
||||
Pair("Toy", "en/genres/Toy"),
|
||||
Pair("Promiscuity", "en/genres/Promiscuity"),
|
||||
Pair("Outdoor Exposure", "en/genres/Outdoor%20Exposure"),
|
||||
Pair("Butt Fetish", "en/genres/Butt%20Fetish"),
|
||||
Pair("Pantyhose", "en/genres/Pantyhose"),
|
||||
Pair("Debut", "en/genres/Debut"),
|
||||
Pair("Urinate", "en/genres/Urinate"),
|
||||
Pair("Dirty Talk", "en/genres/Dirty%20Talk"),
|
||||
Pair("Massage", "en/genres/Massage"),
|
||||
Pair("Underwear", "en/genres/Underwear"),
|
||||
Pair("Big Ass", "en/genres/Big%20Ass"),
|
||||
Pair("Forced Blowjob", "en/genres/Forced%20Blowjob"),
|
||||
Pair("Sailor Suit", "en/genres/Sailor%20Suit"),
|
||||
Pair("Swimsuit", "en/genres/Swimsuit"),
|
||||
Pair("Delivery Only", "en/genres/Delivery%20Only"),
|
||||
Pair("Female Teacher", "en/genres/Female%20Teacher"),
|
||||
Pair("Kimono", "en/genres/Kimono"),
|
||||
Pair("Swallow Sperm", "en/genres/Swallow%20Sperm"),
|
||||
Pair("69", "en/genres/69"),
|
||||
Pair("Small Breasts", "en/genres/Small%20Breasts"),
|
||||
Pair("Elder Sister", "en/genres/Elder%20Sister"),
|
||||
Pair("Young Wife", "en/genres/Young%20Wife"),
|
||||
Pair("Nurse", "en/genres/Nurse"),
|
||||
Pair("Massage Oil", "en/genres/Massage%20Oil"),
|
||||
Pair("Group Bukkake", "en/genres/Group%20Bukkake"),
|
||||
Pair("Tied Up", "en/genres/Tied%20Up"),
|
||||
Pair("Fat Girl", "en/genres/Fat%20Girl"),
|
||||
Pair("Rejuvenation Massage", "en/genres/Rejuvenation%20Massage"),
|
||||
Pair("Short Skirt", "en/genres/Short%20Skirt"),
|
||||
Pair("Ultra Slim Pixelated", "en/genres/Ultra%20Slim%20Pixelated"),
|
||||
Pair("Contribution", "en/genres/Contribution"),
|
||||
Pair("Nice Ass", "en/genres/Nice%20Ass"),
|
||||
Pair("Foot Fetish", "en/genres/Foot%20Fetish"),
|
||||
Pair("Full Hd (Fhd)", "en/genres/Full%20Hd%20%28Fhd%29"),
|
||||
Pair("Glasses Girl", "en/genres/Glasses%20Girl"),
|
||||
Pair("Kiss", "en/genres/Kiss"),
|
||||
Pair("4K", "en/genres/4K"),
|
||||
Pair("Close Up", "en/genres/Close%20Up"),
|
||||
Pair("Big Breasts", "en/genres/Big%20Breasts"),
|
||||
Pair("Tied Up", "en/genres/Tied%20Up"),
|
||||
Pair("Big Breast Fetish", "en/genres/Big%20Breast%20Fetish"),
|
||||
Pair("Swimsuit", "en/genres/Swimsuit"),
|
||||
Pair("Sportswear", "en/genres/Sportswear"),
|
||||
Pair("Virgin", "en/genres/Virgin"),
|
||||
Pair("Vibrating Egg", "en/genres/Vibrating%20Egg"),
|
||||
Pair("Aphrodisiac", "en/genres/Aphrodisiac"),
|
||||
Pair("Lesbian Kiss", "en/genres/Lesbian%20Kiss"),
|
||||
Pair("Mini Skirt", "en/genres/Mini%20Skirt"),
|
||||
Pair("White Skin", "en/genres/White%20Skin"),
|
||||
Pair("M Male", "en/genres/M%20Male"),
|
||||
Pair("Couple", "en/genres/Couple"),
|
||||
Pair("Hot Spring", "en/genres/Hot%20Spring"),
|
||||
Pair("Maid", "en/genres/Maid"),
|
||||
Pair("Face Ride", "en/genres/Face%20Ride"),
|
||||
Pair("Imprisonment", "en/genres/Imprisonment"),
|
||||
Pair("Footjob", "en/genres/Footjob"),
|
||||
Pair("Fighting", "en/genres/Fighting"),
|
||||
Pair("Tall Lady", "en/genres/Tall%20Lady"),
|
||||
Pair("Female Warrior", "en/genres/Female%20Warrior"),
|
||||
Pair("Artist", "en/genres/Artist"),
|
||||
Pair("Science Fiction", "en/genres/Science%20Fiction"),
|
||||
Pair("Mischief", "en/genres/Mischief"),
|
||||
Pair("Actress Collection", "en/genres/Actress%20Collection"),
|
||||
Pair("Married Woman", "en/genres/Married%20Woman"),
|
||||
Pair("Sweating", "en/genres/Sweating"),
|
||||
Pair("Black Male Actor", "en/genres/Black%20Male%20Actor"),
|
||||
Pair("Stepmother", "en/genres/Stepmother"),
|
||||
Pair("Petite", "en/genres/Petite"),
|
||||
Pair("Beautiful Legs", "en/genres/Beautiful%20Legs"),
|
||||
Pair("Private Teacher", "en/genres/Private%20Teacher"),
|
||||
Pair("Big Pennis", "en/genres/Big%20Pennis"),
|
||||
Pair("Super Breasts", "en/genres/Super%20Breasts"),
|
||||
Pair("Advertising Idol", "en/genres/Advertising%20Idol"),
|
||||
Pair("Torture", "en/genres/Torture"),
|
||||
Pair("Emmanuel", "en/genres/Emmanuel"),
|
||||
Pair("Anal Sex", "en/genres/Anal%20Sex"),
|
||||
Pair("Black Hair", "en/genres/Black%20Hair"),
|
||||
Pair("Beautiful Breasts", "en/genres/Beautiful%20Breasts"),
|
||||
Pair("Erotic Photo", "en/genres/Erotic%20Photo"),
|
||||
Pair("Widow", "en/genres/Widow"),
|
||||
Pair("Gym Suit", "en/genres/Gym%20Suit"),
|
||||
Pair("Cruel", "en/genres/Cruel"),
|
||||
Pair("Sexy", "en/genres/Sexy"),
|
||||
Pair("Car Sex", "en/genres/Car%20Sex"),
|
||||
Pair("Multiple Stories", "en/genres/Multiple%20Stories"),
|
||||
Pair("Campus Story", "en/genres/Campus%20Story"),
|
||||
Pair("3P, 4P", "en/genres/3P,%204P"),
|
||||
Pair("Transgender", "en/genres/Transgender"),
|
||||
Pair("Slim", "en/genres/Slim"),
|
||||
Pair("Female Doctor", "en/genres/Female%20Doctor"),
|
||||
Pair("In Love", "en/genres/In%20Love"),
|
||||
Pair("Fighter", "en/genres/Fighter"),
|
||||
Pair("Fantasy", "en/genres/Fantasy"),
|
||||
Pair("Pure", "en/genres/Pure"),
|
||||
Pair("Virgin", "en/genres/Virgin"),
|
||||
Pair("Instant Sex", "en/genres/Instant%20Sex"),
|
||||
Pair("Missy", "en/genres/Missy"),
|
||||
Pair("Enema", "en/genresenema"),
|
||||
Pair("Dance", "en/genres/Dance"),
|
||||
Pair("Feminine", "en/genres/Feminine"),
|
||||
Pair("Best, Omnibus", "en/genres/Best,%20Omnibus"),
|
||||
Pair("Whites", "en/genres/Whites"),
|
||||
Pair("Flight Attendant", "en/genres/Flight%20Attendant"),
|
||||
Pair("Harem", "en/genres/Harem"),
|
||||
Pair("Foreign Actress", "en/genres/Foreign%20Actress"),
|
||||
Pair("Physical Education", "en/genres/Physical%20Education"),
|
||||
Pair("Bronze", "en/genres/Bronze"),
|
||||
Pair("Female Investigator", "en/genres/Female%20Investigator"),
|
||||
Pair("Transsexuals", "en/genres/Transsexuals"),
|
||||
Pair("Model", "en/genres/Model"),
|
||||
Pair("Baby Face", "en/genres/Baby%20Face"),
|
||||
Pair("Doggy Style", "en/genres/Doggy%20Style"),
|
||||
Pair("Shaving", "en/genres/Shaving"),
|
||||
Pair("Bitch", "en/genres/Bitch"),
|
||||
Pair("Bloomers", "en/genres/Bloomers"),
|
||||
Pair("One Piece Dress", "en/genres/One%20Piece%20Dress"),
|
||||
Pair("Knee Socks", "en/genres/Knee%20Socks"),
|
||||
Pair("Thanks Offering", "en/genres/Thanks%20Offering"),
|
||||
Pair("Cute Little Boy", "en/genres/Cute%20Little%20Boy"),
|
||||
Pair("Delivery-Only Amateur", "en/genres/Delivery-Only%20Amateur"),
|
||||
Pair("Other", "en/genres/Other"),
|
||||
Pair("Bubble Bath", "en/genres/Bubble%20Bath"),
|
||||
Pair("Tickle", "en/genres/Tickle"),
|
||||
Pair("High School Girl", "en/genres/High%20School%20Girl"),
|
||||
Pair("Sister", "en/genres/Sister"),
|
||||
Pair("Extreme Orgasm", "en/genres/Extreme%20Orgasm"),
|
||||
Pair("Breast Milk", "en/genres/Breast%20Milk"),
|
||||
Pair("M Female", "en/genres/M%20Female"),
|
||||
Pair("Pregnant Woman", "en/genres/Pregnant%20Woman"),
|
||||
Pair("Indie", "en/genres/Indie"),
|
||||
Pair("Homosexual", "en/genres/Homosexual"),
|
||||
Pair("Vr", "en/genres/Vr"),
|
||||
Pair("Drink Urine", "en/genres/Drink%20Urine"),
|
||||
Pair("Racing Girl", "en/genres/Racing%20Girl"),
|
||||
Pair("Femdom Slave", "en/genres/Femdom%20Slave"),
|
||||
Pair("Heaven Tv", "en/genres/Heaven%20Tv"),
|
||||
Pair("Secretary", "en/genres/Secretary"),
|
||||
Pair("Insult", "en/genres/Insult"),
|
||||
Pair("Hot Girl", "en/genres/Hot%20Girl"),
|
||||
Pair("Small Breasts", "en/genres/Small%20Breasts"),
|
||||
Pair("Rape", "en/genres/Rape"),
|
||||
Pair("Thirty", "en/genres/Thirty"),
|
||||
Pair("Lolita", "en/genres/Lolita"),
|
||||
Pair("Female Boss", "en/genres/Female%20Boss"),
|
||||
Pair("Foreign Object Penetration", "en/genres/Foreign%20Object%20Penetration"),
|
||||
Pair("Hit On Boys", "en/genres/Hit%20On%20Boys"),
|
||||
Pair("Stool", "en/genres/Stool"),
|
||||
Pair("Hysteroscope", "en/genres/Hysteroscope"),
|
||||
Pair("Young Wife", "en/genres/Young%20Wife"),
|
||||
Pair("Defecation", "en/genres/Defecation"),
|
||||
Pair("Gang Rape", "en/genres/Gang%20Rape"),
|
||||
Pair("Anchorwoman", "en/genres/Anchorwoman"),
|
||||
Pair("High Quality Vr", "en/genres/High%20Quality%20Vr"),
|
||||
Pair("Similar", "en/genres/Similar"),
|
||||
Pair("Transsexuals", "en/genres/Transsexuals"),
|
||||
Pair("Catwoman", "en/genres/Catwoman"),
|
||||
Pair("Bathtub", "en/genres/Bathtub"),
|
||||
Pair("Dildo", "en/genres/Dildo"),
|
||||
Pair("Limited Time", "en/genres/Limited%20Time"),
|
||||
Pair("Fist", "en/genres/Fist"),
|
||||
Pair("Dating", "en/genres/Dating"),
|
||||
Pair("Cuckold", "en/genres/Cuckold"),
|
||||
Pair("Original", "en/genres/Original"),
|
||||
Pair("Lecturer", "en/genres/Lecturer"),
|
||||
Pair("Esthetic Massage", "en/genres/Esthetic%20Massage"),
|
||||
Pair("Childhood", "en/genres/Childhood"),
|
||||
Pair("Uterus", "en/genres/Uterus"),
|
||||
Pair("Pregnant", "en/genres/Pregnant"),
|
||||
Pair("Entertainer", "en/genresentertainer"),
|
||||
Pair("Long Hair", "en/genres/Long%20Hair"),
|
||||
Pair("Petite", "en/genres/Petite"),
|
||||
Pair("First Shot", "en/genres/First%20Shot"),
|
||||
Pair("Muscle", "en/genres/Muscle"),
|
||||
Pair("Outdoors", "en/genres/Outdoors"),
|
||||
Pair("Naked Apron", "en/genres/Naked%20Apron"),
|
||||
Pair("Male Squirting", "en/genres/Male%20Squirting"),
|
||||
Pair("Hotel Owner", "en/genres/Hotel%20Owner"),
|
||||
Pair("Molester", "en/genres/Molester"),
|
||||
Pair("Artist", "en/genres/Artist"),
|
||||
Pair("Bunny Girl", "en/genres/Bunny%20Girl"),
|
||||
Pair("Travel", "en/genres/Travel"),
|
||||
Pair("Racing Girl", "en/genres/Racing%20Girl"),
|
||||
Pair("Asian Actress", "en/genres/Asian%20Actress"),
|
||||
Pair("Tentacle", "en/genres/Tentacle"),
|
||||
Pair("Proud Pussy", "en/genres/Proud%20Pussy"),
|
||||
Pair("Subordinate Or Colleague", "en/genres/Subordinate%20Or%20Colleague"),
|
||||
Pair("With Bonus Video Only For Mgs", "en/genres/With%20Bonus%20Video%20Only%20For%20Mgs"),
|
||||
Pair("Business Clothing", "en/genres/Business%20Clothing"),
|
||||
Pair("Premature Ejaculation", "en/genres/Premature%20Ejaculation"),
|
||||
Pair("Friend", "en/genres/Friend"),
|
||||
Pair("Shame And Humiliation", "en/genres/Shame%20And%20Humiliation"),
|
||||
Pair("Big Breasts", "en/genres/Big%20Breasts"),
|
||||
Pair("Short Hair", "en/genres/Short%20Hair"),
|
||||
Pair("Dildo", "en/genres/Dildo"),
|
||||
Pair("Limited Time", "en/genres/Limited%20Time"),
|
||||
Pair("Fist", "en/genres/Fist"),
|
||||
Pair("Dating", "en/genres/Dating"),
|
||||
Pair("Cuckold", "en/genres/Cuckold"),
|
||||
Pair("Original", "en/genres/Original"),
|
||||
Pair("Lecturer", "en/genres/Lecturer"),
|
||||
Pair("Esthetic Massage", "en/genres/Esthetic%20Massage"),
|
||||
Pair("Childhood", "en/genres/Childhood"),
|
||||
Pair("Uterus", "en/genres/Uterus"),
|
||||
Pair("Pregnant", "en/genres/Pregnant"),
|
||||
Pair("Entertainer", "en/genresentertainer"),
|
||||
Pair("Long Hair", "en/genres/Long%20Hair"),
|
||||
Pair("Petite", "en/genres/Petite"),
|
||||
Pair("First Shot", "en/genres/First%20Shot"),
|
||||
Pair("Muscle", "en/genres/Muscle"),
|
||||
Pair("Outdoors", "en/genres/Outdoors"),
|
||||
Pair("Naked Apron", "en/genres/Naked%20Apron"),
|
||||
Pair("Male Squirting", "en/genres/Male%20Squirting"),
|
||||
Pair("Hotel Owner", "en/genres/Hotel%20Owner"),
|
||||
Pair("Molester", "en/genres/Molester"),
|
||||
Pair("Artist", "en/genres/Artist"),
|
||||
Pair("Bunny Girl", "en/genres/Bunny%20Girl"),
|
||||
Pair("Travel", "en/genres/Travel"),
|
||||
Pair("Racing Girl", "en/genres/Racing%20Girl"),
|
||||
Pair("Asian Actress", "en/genres/Asian%20Actress"),
|
||||
Pair("Tentacle", "en/genres/Tentacle"),
|
||||
Pair("Proud Pussy", "en/genres/Proud%20Pussy"),
|
||||
Pair("Subordinate Or Colleague", "en/genres/Subordinate%20Or%20Colleague"),
|
||||
Pair("With Bonus Video Only For Mgs", "en/genres/With%20Bonus%20Video%20Only%20For%20Mgs"),
|
||||
Pair("Business Clothing", "en/genres/Business%20Clothing"),
|
||||
Pair("Premature Ejaculation", "en/genres/Premature%20Ejaculation"),
|
||||
Pair("Friend", "en/genres/Friend"),
|
||||
Pair("Shame And Humiliation", "en/genres/Shame%20And%20Humiliation"),
|
||||
Pair("Big Breasts", "en/genres/Big%20Breasts"),
|
||||
Pair("Short Hair", "en/genres/Short%20Hair"),
|
||||
Pair("Waitress", "en/genres/Waitress"),
|
||||
Pair("Clinic", "en/genres/Clinic"),
|
||||
Pair("Exposure", "en/genres/Exposure"),
|
||||
Pair("Kimono / Yukata", "en/genres/Kimono%20/%20Yukata"),
|
||||
Pair("Lewd Nasty Lady", "en/genres/Lewd%20Nasty%20Lady"),
|
||||
Pair("Bubble Socks", "en/genres/Bubble%20Socks"),
|
||||
Pair("Fantasy", "en/genres/Fantasy"),
|
||||
Pair("Idol", "en/genres/Idol"),
|
||||
Pair("Time Stops", "en/genres/Time%20Stops"),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun getFilters() = AnimeFilterList(
|
||||
SortFilter(),
|
||||
GenreList(),
|
||||
AnimeFilter.Separator(),
|
||||
AnimeFilter.Header("Genre filters ignored with text search!!"),
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue