Madara split: part 1 (#5662)
* madara 161 * 50 of madara sources * remove moved classes part 1
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'Madara (multiple sources)'
|
||||
pkgNameSuffix = "all.madara"
|
||||
extClass = '.MadaraFactory'
|
||||
extVersionCode = 178
|
||||
extVersionCode = 179
|
||||
libVersion = '1.2'
|
||||
containsNsfw = true
|
||||
}
|
||||
|
@ -1,21 +1,16 @@
|
||||
package eu.kanade.tachiyomi.extension.all.madara
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import eu.kanade.tachiyomi.annotations.Nsfw
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
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.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.util.asJsoup
|
||||
import okhttp3.CacheControl
|
||||
import okhttp3.FormBody
|
||||
import okhttp3.Headers
|
||||
import okhttp3.HttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
@ -27,59 +22,59 @@ import java.util.concurrent.TimeUnit
|
||||
|
||||
class MadaraFactory : SourceFactory {
|
||||
override fun createSources(): List<Source> = listOf(
|
||||
AdonisFansub(),
|
||||
AkuManga(),
|
||||
AlianzaMarcial(),
|
||||
AllPornComic(),
|
||||
Aloalivn(),
|
||||
AniMangaEs(),
|
||||
AoCTranslations(),
|
||||
ApollComics(),
|
||||
ArangScans(),
|
||||
ArazNovel(),
|
||||
ArgosScan(),
|
||||
AsgardTeam(),
|
||||
AstralLibrary(),
|
||||
Atikrost(),
|
||||
ATMSubs(),
|
||||
Azora(),
|
||||
Bakaman(),
|
||||
BestManga(),
|
||||
BestManhua(),
|
||||
BoysLove(),
|
||||
CatOnHeadTranslations(),
|
||||
CatTranslator(),
|
||||
ChibiManga(),
|
||||
CloverManga(),
|
||||
ComicKiba(),
|
||||
ComicsValley(),
|
||||
CopyPasteScan(),
|
||||
CutiePie(),
|
||||
DarkyuRealm(),
|
||||
DecadenceScans(),
|
||||
DetectiveConanAr(),
|
||||
DiamondFansub(),
|
||||
DisasterScans(),
|
||||
DoujinHentai(),
|
||||
DoujinYosh(),
|
||||
DreamManga(),
|
||||
DropeScan(),
|
||||
EinherjarScan(),
|
||||
FdmScan(),
|
||||
FirstKissManga(),
|
||||
FirstKissManhua(),
|
||||
FreeWebtoonCoins(),
|
||||
FurioScans(),
|
||||
GeceninLordu(),
|
||||
GoldenManga(),
|
||||
// AdonisFansub(),
|
||||
// AkuManga(),
|
||||
// AlianzaMarcial(),
|
||||
// AllPornComic(),
|
||||
// Aloalivn(),
|
||||
// AniMangaEs(),
|
||||
// AoCTranslations(),
|
||||
// ApollComics(),
|
||||
// ArangScans(),
|
||||
// ArazNovel(),
|
||||
// ArgosScan(),
|
||||
// AsgardTeam(),
|
||||
// AstralLibrary(),
|
||||
// Atikrost(),
|
||||
// ATMSubs(),
|
||||
// Azora(),
|
||||
// Bakaman(),
|
||||
// BestManga(),
|
||||
// BestManhua(),
|
||||
// BoysLove(),
|
||||
// CatOnHeadTranslations(),
|
||||
// CatTranslator(),
|
||||
// ChibiManga(),
|
||||
// CloverManga(),
|
||||
// ComicKiba(),
|
||||
// ComicsValley(),
|
||||
// CopyPasteScan(),
|
||||
// CutiePie(),
|
||||
// DarkyuRealm(),
|
||||
// DecadenceScans(),
|
||||
// DetectiveConanAr(),
|
||||
// DiamondFansub(),
|
||||
// DisasterScans(),
|
||||
// DoujinHentai(),
|
||||
// DoujinYosh(),
|
||||
// DreamManga(),
|
||||
// DropeScan(),
|
||||
// EinherjarScan(),
|
||||
// FdmScan(),
|
||||
// FirstKissManga(),
|
||||
// FirstKissManhua(),
|
||||
// FreeWebtoonCoins(),
|
||||
// FurioScans(),
|
||||
// GeceninLordu(),
|
||||
// GoldenManga(),
|
||||
GrazeScans(),
|
||||
GourmetScans(),
|
||||
GuncelManga(),
|
||||
HeroManhua(),
|
||||
HerozScanlation(),
|
||||
HikariScan(),
|
||||
HimeraFansub(),
|
||||
Hiperdex(),
|
||||
// GuncelManga(),
|
||||
// HeroManhua(),
|
||||
// HerozScanlation(),
|
||||
// HikariScan(),
|
||||
// HimeraFansub(),
|
||||
// Hiperdex(),
|
||||
Hscans(),
|
||||
HunterFansub(),
|
||||
IchirinNoHanaYuri(),
|
||||
@ -276,17 +271,10 @@ class SpookyScanlations : Madara("Spooky Scanlations", "https://spookyscanlation
|
||||
|
||||
class RandomTranslations : Madara("Random Translations", "https://randomtranslations.com", "en", SimpleDateFormat("dd/MM/yyyy", Locale.US))
|
||||
|
||||
class Atikrost : Madara("Atikrost", "https://atikrost.com", "tr", SimpleDateFormat("MMMM dd, yyyy", Locale("tr"))) {
|
||||
override val chapterUrlSelector = "a:not(:has(img))"
|
||||
override val chapterDatesNewSelector = "img:not(.thumb)"
|
||||
}
|
||||
|
||||
class ManhuaFast : Madara("ManhuaFast", "https://manhuafast.com", "en") {
|
||||
override val pageListParseSelector = "li.blocks-gallery-item"
|
||||
}
|
||||
|
||||
class BestManhua : Madara("BestManhua", "https://bestmanhua.com", "en")
|
||||
|
||||
class ManhuaSY : Madara("Manhua SY", "https://www.manhuasy.com", "en")
|
||||
|
||||
class MangaRave : Madara("MangaRave", "http://www.mangarave.com", "en")
|
||||
@ -297,10 +285,6 @@ class Manga3S : Madara("Manga3S", "https://manga3s.com", "en")
|
||||
|
||||
class MGKomik : Madara("MG Komik", "https://mgkomik.my.id", "id")
|
||||
|
||||
class Aloalivn : Madara("Aloalivn", "https://aloalivn.com", "en") {
|
||||
override val pageListParseSelector = "li.blocks-gallery-item"
|
||||
}
|
||||
|
||||
class MangaSco : Madara("MangaSco", "https://mangasco.com", "en")
|
||||
|
||||
class MangaCrimson : Madara("Manga Crimson", "https://mangacrimson.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale("tr")))
|
||||
@ -311,12 +295,8 @@ class NekoBreaker : Madara("NekoBreaker", "https://nekobreaker.com", "pt-BR", Si
|
||||
|
||||
class ManganeloLink : Madara("Manganelo.link", "https://manganelo.link", "en")
|
||||
|
||||
class ApollComics : Madara("ApollComics", "https://apollcomics.xyz", "es", SimpleDateFormat("dd MMMM, yyyy", Locale("es")))
|
||||
|
||||
class KisekiManga : Madara("KisekiManga", "https://kisekimanga.com", "en")
|
||||
|
||||
class FreeWebtoonCoins : Madara("FreeWebtoonCoins", "https://freewebtooncoins.com", "en")
|
||||
|
||||
class MangaRoma : Madara("MangaRoma", "https://mangaroma.com", "en")
|
||||
|
||||
class NTSVoidScans : Madara("NTS Void Scans", "https://ntsvoidscans.com", "en")
|
||||
@ -329,26 +309,16 @@ class WebToonily : Madara("WebToonily", "https://webtoonily.com", "en")
|
||||
|
||||
class Manga18Fun : Madara("Manga18 Fun", "https://manga18.fun", "en")
|
||||
|
||||
class CutiePie : Madara("Cutie Pie", "https://cutiepie.ga", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.forLanguageTag("tr")))
|
||||
|
||||
class DiamondFansub : Madara("DiamondFansub", "https://diamondfansub.com", "tr", SimpleDateFormat("MMMM dd, yyyy", Locale.forLanguageTag("tr")))
|
||||
|
||||
class MangaYaku : Madara("MangaYaku", "https://mangayaku.my.id", "id")
|
||||
|
||||
class RuyaManga : Madara("Rüya Manga", "https://www.ruyamanga.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.forLanguageTag("tr")))
|
||||
|
||||
class HimeraFansub : Madara("Himera Fansub", "https://himera-fansub.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.forLanguageTag("tr")))
|
||||
|
||||
class MangaBaz : Madara("MangaBaz", "https://mangabaz.com", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.forLanguageTag("tr")))
|
||||
|
||||
class Manhuaga : Madara("Manhuaga", "https://manhuaga.com", "en")
|
||||
|
||||
class MangaCultivator : Madara("MangaCultivator", "https://mangacultivator.com", "en")
|
||||
|
||||
class HerozScanlation : Madara("Heroz Scanlation", "https://herozscans.com", "en")
|
||||
|
||||
class CatOnHeadTranslations : Madara("CatOnHeadTranslations", "https://catonhead.com", "en")
|
||||
|
||||
class OffScan : Madara(
|
||||
"Off Scan",
|
||||
"https://offscan.top",
|
||||
@ -387,41 +357,6 @@ class JustForFun : Madara(
|
||||
dateFormat = SimpleDateFormat("yy.MM.dd", Locale.US)
|
||||
)
|
||||
|
||||
class AoCTranslations : Madara("Agent of Change Translations", "https://aoc.moe", "en") {
|
||||
override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl)
|
||||
override fun popularMangaSelector() = "div.page-item-detail.manga:has(span.chapter)"
|
||||
override fun chapterListSelector() = "li.wp-manga-chapter:has(a)"
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
override fun chapterListParse(response: Response): List<SChapter> {
|
||||
return response.asJsoup().let { document ->
|
||||
document.select(chapterListSelector()).let { normalChapters ->
|
||||
if (normalChapters.isNotEmpty()) {
|
||||
normalChapters.map { chapterFromElement(it) }
|
||||
} else {
|
||||
// For their "fancy" volume/chapter lists
|
||||
document.select("div.wpb_wrapper:contains(volume) a")
|
||||
.filter { it.attr("href").contains(baseUrl) && !it.attr("href").contains("imgur") }
|
||||
.map { volumeChapter ->
|
||||
SChapter.create().apply {
|
||||
volumeChapter.attr("href").let { url ->
|
||||
name = if (url.contains("volume")) {
|
||||
val volume = url.substringAfter("volume-").substringBefore("/")
|
||||
val volChap = url.substringAfter("volume-$volume/").substringBefore("/").replace("-", " ").capitalize()
|
||||
"Volume $volume - $volChap"
|
||||
} else {
|
||||
url.substringBefore("/p").substringAfterLast("/").replace("-", " ").capitalize()
|
||||
}
|
||||
setUrlWithoutDomain(url.substringBefore("?") + "?style=list")
|
||||
}
|
||||
}
|
||||
}
|
||||
}.reversed()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class KomikGo : Madara("KomikGo", "https://komikgo.com", "id")
|
||||
|
||||
class TsubakiNoScan : Madara(
|
||||
@ -450,15 +385,6 @@ class MangazukiClubJP : Madara("Mangazuki.club", "https://mangazuki.club", "ja")
|
||||
|
||||
class MangazukiClubKO : Madara("Mangazuki.club", "https://mangazuki.club", "ko")
|
||||
|
||||
class FirstKissManga : Madara(
|
||||
"1st Kiss",
|
||||
"https://1stkissmanga.com",
|
||||
"en",
|
||||
SimpleDateFormat("MMM d, yyyy", Locale.US)
|
||||
) {
|
||||
override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl)
|
||||
}
|
||||
|
||||
class MangaSY : Madara("Manga SY", "https://www.mangasy.com", "en") {
|
||||
override fun imageRequest(page: Page): Request = super.imageRequest(page).newBuilder()
|
||||
.cacheControl(CacheControl.FORCE_NETWORK)
|
||||
@ -480,13 +406,6 @@ class ManyToonMe : Madara("ManyToon.me", "https://manytoon.me", "en")
|
||||
|
||||
class BoysLove : Madara("BoysLove", "https://boyslove.me", "en")
|
||||
|
||||
class ChibiManga : Madara(
|
||||
"Chibi Manga",
|
||||
"https://www.cmreader.info",
|
||||
"en",
|
||||
dateFormat = SimpleDateFormat("MMM dd, yyyy", Locale.US)
|
||||
)
|
||||
|
||||
class ZinManga : Madara("Zin Translator", "https://zinmanga.com", "en") {
|
||||
override fun headersBuilder(): Headers.Builder = super.headersBuilder()
|
||||
.add("Referer", "https://zinmanga.com/")
|
||||
@ -496,306 +415,12 @@ class ManwahentaiMe : Madara("Manwahentai.me", "https://manhwahentai.me", "en")
|
||||
|
||||
class Manga3asq : Madara("مانجا العاشق", "https://3asq.org", "ar")
|
||||
|
||||
class AdonisFansub : Madara("Adonis Fansub", "https://manga.adonisfansub.com", "tr") {
|
||||
override val userAgentRandomizer = ""
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers)
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=latest", headers)
|
||||
}
|
||||
|
||||
@Nsfw
|
||||
class AllPornComic : Madara("AllPornComic", "https://allporncomic.com", "en") {
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers)
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=latest", headers)
|
||||
override fun searchMangaNextPageSelector() = "a[rel=next]"
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("3D", "3d"),
|
||||
Genre("Ahegao", "ahegao"),
|
||||
Genre("Alien Girl", "alien-girl"),
|
||||
Genre("Anal", "anal"),
|
||||
Genre("Anime", "anime"),
|
||||
Genre("Anthology", "anthology"),
|
||||
Genre("Artbook", "artbook"),
|
||||
Genre("BBW / Chubby / Fat Woman", "bbw"),
|
||||
Genre("BDSM", "bdsm"),
|
||||
Genre("Big Areolae", "big-areolae"),
|
||||
Genre("Big Ass", "big-ass"),
|
||||
Genre("Big Balls", "big-balls"),
|
||||
Genre("Big Breasts", "big-breasts"),
|
||||
Genre("Big Clit", "big-clit"),
|
||||
Genre("Big Nipples", "big-nipples"),
|
||||
Genre("Big Penis", "big-penis"),
|
||||
Genre("Bikini", "bikini"),
|
||||
Genre("Blackmail", "blackmail"),
|
||||
Genre("Blindfold", "blindfold"),
|
||||
Genre("Body Modification", "body-modification"),
|
||||
Genre("Body Swap", "body-swap"),
|
||||
Genre("Body Writing", "body-writing"),
|
||||
Genre("BodyStocking", "bodystocking"),
|
||||
Genre("Bodysuit", "bodysuit"),
|
||||
Genre("Bondage", "bondage"),
|
||||
Genre("Brain Fuck", "brain-fuck"),
|
||||
Genre("Cartoon", "cartoon"),
|
||||
Genre("Cheerleader", "cheerleader"),
|
||||
Genre("Chinese Dress", "chinese-dress"),
|
||||
Genre("Collar / Choker", "collar"),
|
||||
Genre("Comedy", "comedy"),
|
||||
Genre("Corruption", "corruption"),
|
||||
Genre("Corset", "corset"),
|
||||
Genre("Crotch Tattoo", "crotch-tattoo"),
|
||||
Genre("Dark Skin", "dark-skin"),
|
||||
Genre("Demon Girl / Succubus", "demon-girl"),
|
||||
Genre("Dick Growth", "dick-growth"),
|
||||
Genre("Dickgirl On Dickgirl", "dickgirl-on-dickgirl"),
|
||||
Genre("Dickgirl On Male", "dickgirl-on-male"),
|
||||
Genre("Dickgirls Only", "dickgirls-only"),
|
||||
Genre("Drugs", "drugs"),
|
||||
Genre("Drunk", "drunk"),
|
||||
Genre("Exhibitionism", "exhibitionism"),
|
||||
Genre("FFM Threesome", "ffm-threesome"),
|
||||
Genre("FFT Threesome", "fft-threesome"),
|
||||
Genre("Females Only", "females-only"),
|
||||
Genre("Femdom", "femdom"),
|
||||
Genre("Feminization", "feminization"),
|
||||
Genre("Full Body Tattoo", "full-body-tattoo"),
|
||||
Genre("Full Color", "full-color"),
|
||||
Genre("Futanari", "futanari"),
|
||||
Genre("Gender Bender", "gender-bender"),
|
||||
Genre("Glasses", "glasses"),
|
||||
Genre("Group", "group"),
|
||||
Genre("Gyaru", "gyaru"),
|
||||
Genre("Gyaru-OH", "gyaru-oh"),
|
||||
Genre("Harem", "harem"),
|
||||
Genre("Hentai", "hentai"),
|
||||
Genre("Human Pet", "human-pet"),
|
||||
Genre("Humiliation", "humiliation"),
|
||||
Genre("Impregnation", "impregnation"),
|
||||
Genre("Incest", "incest"),
|
||||
Genre("Interracial", "interracial"),
|
||||
Genre("Kimono", "kimono"),
|
||||
Genre("Latex", "latex"),
|
||||
Genre("Leash", "leash"),
|
||||
Genre("Lingerie", "lingerie"),
|
||||
Genre("Lolicon", "lolicon"),
|
||||
Genre("MILF", "milf"),
|
||||
Genre("MMF Threesome", "mmf-threesome"),
|
||||
Genre("MMT Threesome", "mmt-threesome"),
|
||||
Genre("Magical Girl", "magical-girl"),
|
||||
Genre("Maid", "maid"),
|
||||
Genre("Male On Dickgirl", "male-on-dickgirl"),
|
||||
Genre("Manhwa", "manhwa"),
|
||||
Genre("Military", "military"),
|
||||
Genre("Milking", "milking"),
|
||||
Genre("Mind Break", "mind-break"),
|
||||
Genre("Mind Control", "mind-control"),
|
||||
Genre("Monster Girl", "monster-girl"),
|
||||
Genre("Moral Degeneration", "moral-degeneration"),
|
||||
Genre("Muscle", "muscle"),
|
||||
Genre("Muscle Growth", "muscle-growth"),
|
||||
Genre("Nakadashi", "nakadashi"),
|
||||
Genre("Netorare", "netorare"),
|
||||
Genre("Netori", "netori"),
|
||||
Genre("Ninja", "ninja"),
|
||||
Genre("Nun", "nun"),
|
||||
Genre("Nurse", "nurse"),
|
||||
Genre("Orgy", "orgy"),
|
||||
Genre("Paizuri", "paizuri"),
|
||||
Genre("Pegging", "pegging"),
|
||||
Genre("Piercing", "piercing"),
|
||||
Genre("Pixie Cut", "pixie-cut"),
|
||||
Genre("Policewoman", "policewoman"),
|
||||
Genre("Possession", "possession"),
|
||||
Genre("Retro", "retro"),
|
||||
Genre("Ryona", "ryona"),
|
||||
Genre("School Swimsuit", "school-swimsuit"),
|
||||
Genre("Schoolboy Uniform", "schoolboy-uniform"),
|
||||
Genre("Schoolgirl Uniform", "schoolgirl-uniform"),
|
||||
Genre("Shared Senses", "shared-senses"),
|
||||
Genre("Shemale", "shemale"),
|
||||
Genre("Shibari", "shibari"),
|
||||
Genre("Shotacon", "shotacon"),
|
||||
Genre("Slave", "slave"),
|
||||
Genre("Slime Girl", "slime-girl"),
|
||||
Genre("Small Breasts", "small-breasts"),
|
||||
Genre("Stockings", "stockings"),
|
||||
Genre("Strap-on", "strap-on"),
|
||||
Genre("Stuck In Wall", "stuck-in-wall"),
|
||||
Genre("Superhero", "superhero"),
|
||||
Genre("Superheroine", "superheroine"),
|
||||
Genre("Tail", "tail"),
|
||||
Genre("Tail Plug", "tail-plug"),
|
||||
Genre("Tankoubon", "tankoubon"),
|
||||
Genre("Tentacles", "tentacles"),
|
||||
Genre("Thigh High Boots", "thigh-high-boots"),
|
||||
Genre("Tights", "tights"),
|
||||
Genre("Time Stop", "time-stop"),
|
||||
Genre("Tomboy", "tomboy"),
|
||||
Genre("Tomgirl", "tomgirl"),
|
||||
Genre("Torture", "torture"),
|
||||
Genre("Transformation", "transformation"),
|
||||
Genre("Uncensored", "uncensored"),
|
||||
Genre("Unusual Pupils", "unusual-pupils"),
|
||||
Genre("Unusual Teeth", "unusual-teeth"),
|
||||
Genre("Vampire", "vampire"),
|
||||
Genre("Virginity", "virginity"),
|
||||
Genre("Voyeurism", "voyeurism"),
|
||||
Genre("Webtoon", "webtoon"),
|
||||
Genre("Western", "western"),
|
||||
Genre("Witch", "witch"),
|
||||
Genre("Yandere", "yandere"),
|
||||
Genre("Yaoi", "yaoi"),
|
||||
Genre("Yuri", "yuri")
|
||||
)
|
||||
}
|
||||
|
||||
class Milftoon : Madara("Milftoon", "https://milftoon.xxx", "en") {
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/page/$page/?m_orderby=views", headers)
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/page/$page/?m_orderby=latest", headers)
|
||||
}
|
||||
|
||||
class Hiperdex : Madara("Hiperdex", "https://hiperdex.com", "en") {
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("Adult", "adult"),
|
||||
Genre("Action", "action"),
|
||||
Genre("Adventure", "adventure"),
|
||||
Genre("Bully", "bully"),
|
||||
Genre("Comedy", "comedy"),
|
||||
Genre("Drama", "drama"),
|
||||
Genre("Ecchi", "ecchi"),
|
||||
Genre("Fantasy", "fantasy"),
|
||||
Genre("Gender Bender", "gender-bender"),
|
||||
Genre("Harem", "harem"),
|
||||
Genre("Historical", "historical"),
|
||||
Genre("Horror", "horror"),
|
||||
Genre("Isekai", "isekai"),
|
||||
Genre("Josei", "josei"),
|
||||
Genre("Martial Arts", "martial-arts"),
|
||||
Genre("Mature", "mature"),
|
||||
Genre("Mystery", "mystery"),
|
||||
Genre("Psychological", "psychological"),
|
||||
Genre("Romance", "romance"),
|
||||
Genre("School Life", "school-life"),
|
||||
Genre("Sci-Fi", "sci-fi"),
|
||||
Genre("Seinen", "seinen"),
|
||||
Genre("Shoujo", "shoujo"),
|
||||
Genre("Shounen", "shounen"),
|
||||
Genre("Slice of Life", "slice-of-life"),
|
||||
Genre("Smut", "smut"),
|
||||
Genre("Sports", "sports"),
|
||||
Genre("Supernatural", "supernatural"),
|
||||
Genre("Thriller", "thriller"),
|
||||
Genre("Tragedy", "tragedy"),
|
||||
Genre("Yaoi", "yaoi"),
|
||||
Genre("Yuri", "yuri")
|
||||
)
|
||||
}
|
||||
|
||||
@Nsfw
|
||||
class DoujinHentai : Madara("DoujinHentai", "https://doujinhentai.net", "es", SimpleDateFormat("d MMM. yyyy", Locale.ENGLISH)) {
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/lista-manga-hentai?orderby=views&page=$page", headers)
|
||||
override fun popularMangaSelector() = "div.col-md-3 a"
|
||||
override fun popularMangaFromElement(element: Element): SManga {
|
||||
val manga = SManga.create()
|
||||
|
||||
manga.setUrlWithoutDomain(element.attr("href"))
|
||||
manga.title = element.select("h5").text()
|
||||
manga.thumbnail_url = element.select("img").attr("abs:data-src")
|
||||
|
||||
return manga
|
||||
}
|
||||
|
||||
override fun popularMangaNextPageSelector() = "a[rel=next]"
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/lista-manga-hentai?orderby=last&page=$page", headers)
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||
val url = HttpUrl.parse(baseUrl)!!.newBuilder()
|
||||
if (query.isNotBlank()) {
|
||||
url.addPathSegment("search")
|
||||
url.addQueryParameter("query", query) // query returns results all on one page
|
||||
} else {
|
||||
filters.forEach { filter ->
|
||||
when (filter) {
|
||||
is GenreSelectFilter -> {
|
||||
if (filter.state != 0) {
|
||||
url.addPathSegments("lista-manga-hentai/category/${filter.toUriPart()}")
|
||||
url.addQueryParameter("page", page.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return GET(url.build().toString(), headers)
|
||||
}
|
||||
|
||||
override fun searchMangaSelector() = "div.c-tabs-item__content > div.c-tabs-item__content, ${popularMangaSelector()}"
|
||||
override fun searchMangaFromElement(element: Element): SManga {
|
||||
return if (element.hasAttr("href")) {
|
||||
popularMangaFromElement(element) // genre search results
|
||||
} else {
|
||||
super.searchMangaFromElement(element) // query search results
|
||||
}
|
||||
}
|
||||
|
||||
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector()
|
||||
override fun chapterListSelector() = "ul.main.version-chap > li.wp-manga-chapter:not(:last-child)" // removing empty li
|
||||
override val pageListParseSelector = "div#all > img.img-responsive"
|
||||
override fun getFilterList() = FilterList(
|
||||
Filter.Header("Solo funciona si la consulta está en blanco"),
|
||||
GenreSelectFilter()
|
||||
)
|
||||
|
||||
class GenreSelectFilter : UriPartFilter(
|
||||
"Búsqueda de género",
|
||||
arrayOf(
|
||||
Pair("<seleccionar>", ""),
|
||||
Pair("Ecchi", "ecchi"),
|
||||
Pair("Yaoi", "yaoi"),
|
||||
Pair("Yuri", "yuri"),
|
||||
Pair("Anal", "anal"),
|
||||
Pair("Tetonas", "tetonas"),
|
||||
Pair("Escolares", "escolares"),
|
||||
Pair("Incesto", "incesto"),
|
||||
Pair("Virgenes", "virgenes"),
|
||||
Pair("Masturbacion", "masturbacion"),
|
||||
Pair("Maduras", "maduras"),
|
||||
Pair("Lolicon", "lolicon"),
|
||||
Pair("Bikini", "bikini"),
|
||||
Pair("Sirvientas", "sirvientas"),
|
||||
Pair("Enfermera", "enfermera"),
|
||||
Pair("Embarazada", "embarazada"),
|
||||
Pair("Ahegao", "ahegao"),
|
||||
Pair("Casadas", "casadas"),
|
||||
Pair("Chica Con Pene", "chica-con-pene"),
|
||||
Pair("Juguetes Sexuales", "juguetes-sexuales"),
|
||||
Pair("Orgias", "orgias"),
|
||||
Pair("Harem", "harem"),
|
||||
Pair("Romance", "romance"),
|
||||
Pair("Profesores", "profesores"),
|
||||
Pair("Tentaculos", "tentaculos"),
|
||||
Pair("Mamadas", "mamadas"),
|
||||
Pair("Shota", "shota"),
|
||||
Pair("Interracial", "interracial"),
|
||||
Pair("Full Color", "full-colo"),
|
||||
Pair("Sin Censura", "sin-censura"),
|
||||
Pair("Futanari", "futanari"),
|
||||
Pair("Doble Penetracion", "doble-penetracion"),
|
||||
Pair("Cosplay", "cosplay")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
class Azora : Madara("Azora", "https://www.azoramanga.com", "ar") {
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/page/$page/?m_orderby=views", headers)
|
||||
override fun chapterListSelector() = "li.wp-manga-chapter:not(.premium-block)" // Filter fake chapters
|
||||
override fun chapterFromElement(element: Element): SChapter {
|
||||
val chapter = SChapter.create()
|
||||
|
||||
element.select("a").let {
|
||||
chapter.url = it.attr("href").substringAfter(baseUrl)
|
||||
chapter.name = it.text()
|
||||
}
|
||||
return chapter
|
||||
}
|
||||
}
|
||||
|
||||
class KMangaIn : Madara("Kissmanga.in", "https://kissmanga.in", "en")
|
||||
|
||||
class HunterFansub : Madara("Hunter Fansub", "https://hunterfansub.com", "es") {
|
||||
@ -880,26 +505,6 @@ class YaoiToshokan : Madara("Yaoi Toshokan", "https://yaoitoshokan.com.br", "pt-
|
||||
}
|
||||
}
|
||||
|
||||
class GoldenManga : Madara("موقع لترجمة المانجا", "https://golden-manga.com", "ar", SimpleDateFormat("yyyy-MM-dd", Locale.US)) {
|
||||
override fun searchMangaSelector() = "div.c-image-hover a"
|
||||
override fun searchMangaFromElement(element: Element): SManga {
|
||||
return SManga.create().apply {
|
||||
setUrlWithoutDomain(element.attr("href"))
|
||||
title = element.attr("title")
|
||||
thumbnail_url = element.select("img").firstOrNull()?.let { imageFromElement(it) }
|
||||
}
|
||||
}
|
||||
|
||||
override fun chapterListSelector() = "div.main a"
|
||||
override fun chapterFromElement(element: Element): SChapter {
|
||||
return SChapter.create().apply {
|
||||
setUrlWithoutDomain(element.attr("href"))
|
||||
name = element.select("h6:first-of-type").text()
|
||||
date_upload = parseChapterDate(element.select("h6:last-of-type").firstOrNull()?.ownText())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Mangalek : Madara("مانجا ليك", "https://mangalek.com", "ar", SimpleDateFormat("MMMM dd, yyyy", Locale("ar")))
|
||||
|
||||
class AstralLibrary : Madara("Astral Library", "https://www.astrallibrary.net", "en", SimpleDateFormat("d MMM", Locale.US)) {
|
||||
@ -920,8 +525,6 @@ class Manhuasnet : Madara("Manhuas.net", "https://manhuas.net", "en")
|
||||
|
||||
class MangaTX : Madara("MangaTX", "https://mangatx.com", "en")
|
||||
|
||||
class ATMSubs : Madara("ATM-Subs", "https://atm-subs.fr", "fr", SimpleDateFormat("d MMMM yyyy", Locale("fr")))
|
||||
|
||||
class OnManga : Madara("OnManga", "https://onmanga.com", "en")
|
||||
|
||||
class MangaAction : Madara("Manga Action", "https://manga-action.com", "ar", SimpleDateFormat("yyyy-MM-dd", Locale("ar")))
|
||||
@ -939,22 +542,6 @@ class ThreeSixtyFiveManga : Madara("365Manga", "https://365manga.com", "en") {
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=latest", headers)
|
||||
}
|
||||
|
||||
class DisasterScans : Madara("Disaster Scans", "https://disasterscans.com", "en") {
|
||||
override val popularMangaUrlSelector = "div.post-title a:last-child"
|
||||
|
||||
override fun mangaDetailsParse(document: Document): SManga {
|
||||
val manga = super.mangaDetailsParse(document)
|
||||
|
||||
with(document) {
|
||||
select("div.post-title h1").first()?.let {
|
||||
manga.title = it.ownText()
|
||||
}
|
||||
}
|
||||
|
||||
return manga
|
||||
}
|
||||
}
|
||||
|
||||
class MangaDods : Madara("MangaDods", "https://www.mangadods.com", "en", SimpleDateFormat("yyyy-MM-dd", Locale.US))
|
||||
|
||||
class NeoxScanlator : Madara(
|
||||
@ -1015,8 +602,6 @@ class ManhuaUS : Madara("ManhuaUS", "https://manhuaus.com", "en") {
|
||||
|
||||
class MangaWT : Madara("MangaWT", "https://mangawt.com", "tr")
|
||||
|
||||
class DecadenceScans : Madara("Decadence Scans", "https://reader.decadencescans.com", "en")
|
||||
|
||||
class MangaRockTeam : Madara("Manga Rock Team", "https://mangarockteam.com", "en")
|
||||
|
||||
class MixedManga : Madara("Mixed Manga", "https://mixedmanga.com", "en", SimpleDateFormat("d MMM yyyy", Locale.US)) {
|
||||
@ -1025,75 +610,8 @@ class MixedManga : Madara("Mixed Manga", "https://mixedmanga.com", "en", SimpleD
|
||||
|
||||
class ManhuasWorld : Madara("Manhuas World", "https://manhuasworld.com", "en")
|
||||
|
||||
class ArazNovel : Madara("ArazNovel", "https://www.araznovel.com", "tr", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())) {
|
||||
override fun formBuilder(page: Int, popular: Boolean): FormBody.Builder = super.formBuilder(page, popular)
|
||||
.add("vars[meta_query][0][0][value]", "manga")
|
||||
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("Aksiyon", "action"),
|
||||
Genre("Macera", "adventure"),
|
||||
Genre("Cartoon", "cartoon"),
|
||||
Genre("Comic", "comic"),
|
||||
Genre("Komedi", "comedy"),
|
||||
Genre("Yemek", "cooking"),
|
||||
Genre("Doujinshi", "doujinshi"),
|
||||
Genre("Dram", "drama"),
|
||||
Genre("Ecchi", "ecchi"),
|
||||
Genre("Fantastik", "fantasy"),
|
||||
Genre("Harem", "harem"),
|
||||
Genre("Tarihi", "historical"),
|
||||
Genre("Korku", "horror"),
|
||||
Genre("Manga", "manga"),
|
||||
Genre("Manhua", "manhua"),
|
||||
Genre("Manhwa", "manhwa"),
|
||||
Genre("Olgun", "mature"),
|
||||
Genre("Mecha", "mecha"),
|
||||
Genre("Yetişkin", "adult"),
|
||||
Genre("Gizem", "mystery"),
|
||||
Genre("One Shot", "one-shot"),
|
||||
Genre("Isekai", "isekai"),
|
||||
Genre("Josei", "josei"),
|
||||
Genre("Dedektif", "detective"),
|
||||
Genre("Karanlık", "smut"),
|
||||
Genre("Romantizm", "romance"),
|
||||
Genre("Okul Yaşamı", "school-life"),
|
||||
Genre("Yaşamdan Kesit", "slice-of-life"),
|
||||
Genre("Spor", "sports"),
|
||||
Genre("Doğa Üstü", "supernatural"),
|
||||
Genre("Trajedi", "tragedy"),
|
||||
Genre("Webtoon ", "webtoon"),
|
||||
Genre("Dövüş Sanatları ", "martial-arts"),
|
||||
Genre("Bilim Kurgu", "sci-fi"),
|
||||
Genre("Seinen", "seinen"),
|
||||
Genre("Shoujo", "shoujo"),
|
||||
Genre("Shoujo Ai", "shoujo-ai"),
|
||||
Genre("Shounen", "shounen"),
|
||||
Genre("Shounen Ai", "shounen-ai"),
|
||||
Genre("Soft Yaoi", "soft-yaoi"),
|
||||
Genre("Soft Yuri", "soft-yuri"),
|
||||
Genre("Yaoi", "yaoi"),
|
||||
Genre("Yuri", "yuri")
|
||||
)
|
||||
|
||||
override fun chapterListParse(response: Response): List<SChapter> {
|
||||
return getXhrChapters(response.asJsoup().select("div#manga-chapters-holder").attr("data-id")).let { document ->
|
||||
document.select("li.parent").let { elements ->
|
||||
if (!elements.isNullOrEmpty()) {
|
||||
elements.reversed()
|
||||
.map { volumeElement -> volumeElement.select(chapterListSelector()).map { chapterFromElement(it) } }
|
||||
.flatten()
|
||||
} else {
|
||||
document.select(chapterListSelector()).map { chapterFromElement(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ManhwaRaw : Madara("Manhwa Raw", "https://manhwaraw.com", "ko")
|
||||
|
||||
class GuncelManga : Madara("GuncelManga", "https://guncelmanga.com", "tr")
|
||||
|
||||
class WeScans : Madara("WeScans", "https://wescans.xyz", "en") {
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manhua/manga/?m_orderby=views", headers)
|
||||
override fun popularMangaNextPageSelector(): String? = null
|
||||
@ -1103,15 +621,6 @@ class WeScans : Madara("WeScans", "https://wescans.xyz", "en") {
|
||||
override fun getFilterList(): FilterList = FilterList()
|
||||
}
|
||||
|
||||
class ArangScans : Madara("Arang Scans", "https://arangscans.com", "en", SimpleDateFormat("d MMM yyyy", Locale.US)) {
|
||||
override val userAgentRandomizer = ""
|
||||
// has very few manga
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga?m_orderby=views", headers)
|
||||
override fun popularMangaNextPageSelector(): String? = null
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga?m_orderby=latest", headers)
|
||||
override fun latestUpdatesNextPageSelector(): String? = null
|
||||
}
|
||||
|
||||
@Nsfw
|
||||
class MangaHentai : Madara("Manga Hentai", "https://mangahentai.me", "en")
|
||||
|
||||
@ -1120,12 +629,6 @@ class MangaPhoenix : Madara("Manga Diyari", "https://mangadiyari.com", "tr") {
|
||||
override val id = 4308007020001642101
|
||||
}
|
||||
|
||||
class FirstKissManhua : Madara("1st Kiss Manhua", "https://1stkissmanhua.com", "en", SimpleDateFormat("d MMM yyyy", Locale.US)) {
|
||||
override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().add("Referer", "https://1stkissmanga.com").build())
|
||||
}
|
||||
|
||||
class HeroManhua : Madara("Hero Manhua", "https://heromanhua.com", "en")
|
||||
|
||||
class MartialScans : Madara("Martial Scans", "https://martialscans.com", "en") {
|
||||
override fun popularMangaFromElement(element: Element): SManga {
|
||||
val manga = SManga.create()
|
||||
@ -1166,101 +669,6 @@ class TurkceManga : Madara("Türkçe Manga", "https://turkcemanga.com", "tr") {
|
||||
override fun latestUpdatesFromElement(element: Element): SManga = searchMangaFromElement(element)
|
||||
}
|
||||
|
||||
class EinherjarScan : Madara("Einherjar Scan", "https://einherjarscans.space", "en")
|
||||
|
||||
class DoujinYosh : Madara("DoujinYosh", "https://doujinyosh.work", "id") {
|
||||
// source issue, doing this limits results to one page but not doing it returns no results at all
|
||||
override fun searchPage(page: Int) = ""
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("4 Koma", "4koma"),
|
||||
Genre("Adult", "adult"),
|
||||
Genre("Ahegao", "ahegao"),
|
||||
Genre("Anal", "anal"),
|
||||
Genre("Animal", "animal"),
|
||||
Genre("Artist CG", "artist-cg"),
|
||||
Genre("Big Breast", "big-breast"),
|
||||
Genre("Big Penis", "big-penis"),
|
||||
Genre("Bikini", "bikini"),
|
||||
Genre("Black Mail", "black-mail"),
|
||||
Genre("Blowjob", "blowjob"),
|
||||
Genre("Body Swap", "body-swap"),
|
||||
Genre("Bondage", "bondage"),
|
||||
Genre("Cheating", "cheating"),
|
||||
Genre("Crossdressing", "crossdressing"),
|
||||
Genre("DILF", "dilf"),
|
||||
Genre("Dark Skin", "dark-skin"),
|
||||
Genre("Defloration", "defloration"),
|
||||
Genre("Demon Girl", "demon-girl"),
|
||||
Genre("Doujin", "doujin"),
|
||||
Genre("Drugs", "drugs"),
|
||||
Genre("Drunk", "drunk"),
|
||||
Genre("Elf", "elf"),
|
||||
Genre("Famele Only", "famele-only"),
|
||||
Genre("Femdom", "femdom"),
|
||||
Genre("Filming", "filming"),
|
||||
Genre("Footjob", "footjob"),
|
||||
Genre("Full Color", "full-color"),
|
||||
Genre("Furry", "furry"),
|
||||
Genre("Futanari", "futanari"),
|
||||
Genre("Glasses", "glasses"),
|
||||
Genre("Gore", "gore"),
|
||||
Genre("Group", "group"),
|
||||
Genre("Gyaru", "gyaru"),
|
||||
Genre("Harem", "harem"),
|
||||
Genre("Humiliation", "humiliation"),
|
||||
Genre("Impregnation", "impregnation"),
|
||||
Genre("Incest", "incest"),
|
||||
Genre("Inverted Nipples", "inverted-nipples"),
|
||||
Genre("Kemomimi", "kemomimi"),
|
||||
Genre("Lactation", "lactation"),
|
||||
Genre("Loli", "loli"),
|
||||
Genre("Lolipai", "lolipai"),
|
||||
Genre("MILF", "milf"),
|
||||
Genre("Maid", "maid"),
|
||||
Genre("Male Only", "male-only"),
|
||||
Genre("Miko", "miko"),
|
||||
Genre("Mind Break", "mind-break"),
|
||||
Genre("Mind Control", "mind-control"),
|
||||
Genre("Monster", "monster"),
|
||||
Genre("Monster Girl", "monster-girl"),
|
||||
Genre("Multi-Work Series", "multi-work-series"),
|
||||
Genre("Nakadashi", "nakadashi"),
|
||||
Genre("Netorare", "netorare"),
|
||||
Genre("Otona (R18)", "otona"),
|
||||
Genre("Oyakodon", "oyakodon"),
|
||||
Genre("Paizuri", "paizuri"),
|
||||
Genre("Pantyhose", "pantyhose"),
|
||||
Genre("Pregnant", "pregnant"),
|
||||
Genre("Prostitution", "prostitution"),
|
||||
Genre("Rape", "rape"),
|
||||
Genre("School Uniform", "school-uniform"),
|
||||
Genre("Sex Toy", "sex-toy"),
|
||||
Genre("Shota", "shota"),
|
||||
Genre("Sister", "sister"),
|
||||
Genre("Sleep", "sleep"),
|
||||
Genre("Slime", "slime"),
|
||||
Genre("Small Breast", "small-breast"),
|
||||
Genre("Sole Female", "sole-female"),
|
||||
Genre("Sole Male", "sole-male"),
|
||||
Genre("Stocking", "stocking"),
|
||||
Genre("Story Arc", "story-arc"),
|
||||
Genre("Sweating", "sweating"),
|
||||
Genre("Swimsuit", "swimsuit"),
|
||||
Genre("Teacher", "teacher"),
|
||||
Genre("Tentacles", "tentacles"),
|
||||
Genre("Tomboy", "tomboy"),
|
||||
Genre("Tomgirl", "tomgirl"),
|
||||
Genre("Torture", "torture"),
|
||||
Genre("Twins", "twins"),
|
||||
Genre("Virginity", "virginity"),
|
||||
Genre("Webtoon", "webtoon"),
|
||||
Genre("XRay", "xray"),
|
||||
Genre("Yandere", "yandere"),
|
||||
Genre("Yaoi", "yaoi"),
|
||||
Genre("Yuri", "yuri")
|
||||
)
|
||||
}
|
||||
|
||||
class Manga347 : Madara("Manga347", "https://manga347.com", "en", SimpleDateFormat("d MMM, yyyy", Locale.US)) {
|
||||
override val pageListParseSelector = "li.blocks-gallery-item"
|
||||
}
|
||||
@ -1271,11 +679,6 @@ class QueensManga : Madara("QueensManga ملكات المانجا", "https://que
|
||||
override fun chapterListSelector(): String = "div.listing-chapters_wrap a"
|
||||
}
|
||||
|
||||
class DropeScan : Madara("Drope Scan", "https://dropescan.com", "pt-BR") {
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers)
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=latest", headers)
|
||||
}
|
||||
|
||||
class TheTopComic : Madara("TheTopComic", "https://thetopcomic.com", "en")
|
||||
|
||||
class WebNovel : Madara("WebNovel", "https://webnovel.live", "en")
|
||||
@ -1310,14 +713,8 @@ class TruyenTranhAudioOnline : Madara("TruyenTranhAudio.online", "https://truyen
|
||||
|
||||
class MangaTurf : Madara("Manga Turf", "https://mangaturf.com", "en")
|
||||
|
||||
class FurioScans : Madara("Furio Scans", "https://furioscans.com", "pt-BR", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()))
|
||||
|
||||
class Mangareceh : Madara("Mangareceh", "https://mangareceh.id", "id")
|
||||
|
||||
class ComicKiba : Madara("ComicKiba", "https://comickiba.com", "en") {
|
||||
override val pageListParseSelector = "li.blocks-gallery-item img:nth-child(1), div.reading-content p > img, .read-container .reading-content img"
|
||||
}
|
||||
|
||||
class ToonPoint : Madara("ToonPoint", "https://toonpoint.com", "en") {
|
||||
override val userAgentRandomizer = ""
|
||||
}
|
||||
@ -1328,19 +725,12 @@ class ManhuaPlus : Madara("Manhua Plus", "https://manhuaplus.com", "en") {
|
||||
override val pageListParseSelector = "li.blocks-gallery-item"
|
||||
}
|
||||
|
||||
class AkuManga : Madara("AkuManga", "https://akumanga.com", "ar")
|
||||
|
||||
class AsgardTeam : Madara("Asgard Team", "https://www.asgard1team.com", "ar")
|
||||
|
||||
@Nsfw
|
||||
class ToonilyNet : Madara("Toonily.net", "https://toonily.net", "en")
|
||||
|
||||
class BestManga : Madara("BestManga", "https://bestmanga.club", "ru", SimpleDateFormat("dd.MM.yyyy", Locale.getDefault()))
|
||||
|
||||
class TwilightScans : Madara("Twilight Scans", "https://twilightscans.com", "en")
|
||||
|
||||
class DetectiveConanAr : Madara("شبكة كونان العربية", "https://www.manga.detectiveconanar.com", "ar")
|
||||
|
||||
// mostly novels
|
||||
class WoopRead : Madara("WoopRead", "https://woopread.com", "en")
|
||||
|
||||
@ -1350,21 +740,6 @@ class ManhwaTop : Madara("Manhwatop", "https://manhwatop.com", "en")
|
||||
|
||||
class ImmortalUpdates : Madara("Immortal Updates", "https://immortalupdates.com", "en")
|
||||
|
||||
class Bakaman : Madara("Bakaman", "https://bakaman.net", "th")
|
||||
|
||||
class CatTranslator : Madara("CAT-translator", "https://cat-translator.com", "th") {
|
||||
override fun popularMangaRequest(page: Int): Request =
|
||||
POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK)
|
||||
|
||||
override fun latestUpdatesRequest(page: Int): Request =
|
||||
POST("$baseUrl/manga/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK)
|
||||
|
||||
override fun searchPage(page: Int): String = "manga/page/$page/"
|
||||
}
|
||||
|
||||
@Nsfw
|
||||
class ComicsValley : Madara("Comics Valley", "https://comicsvalley.com", "hi")
|
||||
|
||||
class Wakascan : Madara("Wakascan", "https://wakascan.com", "fr")
|
||||
|
||||
class ShoujoHearts : Madara("ShoujoHearts", "http://shoujohearts.com", "en") {
|
||||
@ -1377,18 +752,10 @@ class ShoujoHearts : Madara("ShoujoHearts", "http://shoujohearts.com", "en") {
|
||||
override fun searchPage(page: Int): String = "reader/page/$page/"
|
||||
}
|
||||
|
||||
class AlianzaMarcial : Madara("AlianzaMarcial", "https://alianzamarcial.xyz", "es")
|
||||
|
||||
class OlaoeManga : Madara("مانجا اولاو", "https://olaoe.giize.com", "ar")
|
||||
|
||||
class FdmScan : Madara("FDM Scan", "https://fdmscan.com", "pt-BR", SimpleDateFormat("MMMM dd, yyyy", Locale("pt", "BR")))
|
||||
|
||||
class ArgosScan : Madara("Argos Scan", "https://argosscan.com", "pt-BR", SimpleDateFormat("dd 'de' MMMM 'de' yyyy", Locale("pt", "BR")))
|
||||
|
||||
class OrigamiOrpheans : Madara("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR")
|
||||
|
||||
class DarkyuRealm : Madara("Darkyu Realm", "https://darkyuerealm.site", "pt-BR")
|
||||
|
||||
class MangaKiss : Madara("Manga Kiss", "https://mangakiss.org", "en")
|
||||
|
||||
class MangaRocky : Madara("Manga Rocky", "https://mangarocky.com", "en")
|
||||
@ -1403,8 +770,6 @@ class Kombatch : Madara("Kombatch", "https://kombatch.com", "id", SimpleDateForm
|
||||
|
||||
class ProjetoScanlator : Madara("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR", SimpleDateFormat("dd/MM/yyyy", Locale("pt", "BR")))
|
||||
|
||||
class HikariScan : Madara("Hikari Scan", "https://hikariscan.com.br", "pt-BR", SimpleDateFormat("dd 'de' MMMM 'de' yyyy", Locale("pt", "BR")))
|
||||
|
||||
class NazarickScans : Madara("Nazarick Scans", "https://nazarickscans.com", "en") {
|
||||
override fun popularMangaRequest(page: Int) = GET("$baseUrl/manga/page/$page/?m_orderby=trending", headers)
|
||||
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/manga/page/$page/?m_orderby=trending", headers)
|
||||
@ -1455,12 +820,6 @@ class MysticalMerries : Madara("Mystical Merries", "https://mysticalmerries.com"
|
||||
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/genre/manhwa/page/$page/?m_orderby=latest", headers)
|
||||
}
|
||||
|
||||
class AniMangaEs : Madara("AniMangaEs", "http://animangaes.com", "en") {
|
||||
override val pageListParseSelector = "div.text-left noscript"
|
||||
override val chapterUrlSuffix = ""
|
||||
override fun chapterListParse(response: Response): List<SChapter> = super.chapterListParse(response).reversed()
|
||||
}
|
||||
|
||||
class MangaNine : Madara("Manga Nine", "https://manganine.com", "en")
|
||||
|
||||
class MarkScans : Madara("Mark Scans", "https://markscans.online", "pt-BR")
|
||||
@ -1505,10 +864,6 @@ class Voidscans : Madara("Void Scans", "https://voidscans.com", "en") {
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/?s=$query&post_type=wp-manga")
|
||||
}
|
||||
|
||||
class GeceninLordu : Madara("Gecenin Lordu", "https://geceninlordu.com/", "tr", SimpleDateFormat("dd MMM yyyy", Locale("tr"))) {
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/?s=$query&post_type=wp-manga")
|
||||
}
|
||||
|
||||
class GrazeScans : Madara("Graze Scans", "https://grazescans.com/", "en")
|
||||
|
||||
class UyuyanBalik : Madara("Uyuyan Balik", "https://uyuyanbalik.com/", "tr", SimpleDateFormat("dd MMMM yyyy", Locale.US))
|
||||
@ -1527,16 +882,12 @@ class MundoWuxia : Madara("Mundo Wuxia", "https://mundowuxia.com", "es", SimpleD
|
||||
|
||||
class WorldRomanceTranslation : Madara("World Romance Translation", "https://wrt.my.id/", "id", SimpleDateFormat("dd MMMM yyyy", Locale("id")))
|
||||
|
||||
class CloverManga : Madara("Clover Manga", "https://clover-manga.com/", "tr", SimpleDateFormat("MMMM dd, yyyy", Locale("tr")))
|
||||
|
||||
class VanguardBun : Madara("Vanguard Bun", "https://vanguardbun.com/", "en")
|
||||
|
||||
class MangaBin : Madara("Manga Bin", "https://mangabin.com/", "en")
|
||||
|
||||
class MangaChill : Madara("Manga Chill", "https://mangachill.com/", "en")
|
||||
|
||||
class DreamManga : Madara("Dream Manga", "https://dreammanga.com/", "en")
|
||||
|
||||
class GourmetScans : Madara("Gourmet Scans", "https://gourmetscans.net/", "en")
|
||||
|
||||
class ItsYourRightManhua : Madara("Its Your Right Manhua", "https://itsyourightmanhua.com/", "en")
|
||||
|
Reference in New Issue
Block a user