Add some sources
Fix some sources Add @Broken on some sources close #909 #912 #920 #910 #914 #916
This commit is contained in:
@@ -20,7 +20,7 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex
|
||||
|
||||
override val availableStates: Set<MangaState> = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED)
|
||||
|
||||
override val configKeyDomain = ConfigKey.Domain("comicextra.org")
|
||||
override val configKeyDomain = ConfigKey.Domain("comixextra.com")
|
||||
|
||||
override val isMultipleTagsSupported = false
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import kotlin.random.Random
|
||||
|
||||
private const val TOO_MANY_REQUESTS = 429
|
||||
private const val MAX_RETRY_COUNT = 5
|
||||
private val JSON_MEDIA_TYPE get() = "application/json; charset=utf-8".toMediaType()
|
||||
|
||||
@@ -157,9 +156,9 @@ internal class ReaperComics(context: MangaLoaderContext) :
|
||||
keys.add(userAgentKey)
|
||||
}
|
||||
|
||||
private fun chapterListNextPageSelector(): String = "button[wire:click*=nextPage]"
|
||||
private val chapterListNextPageSelector: String = "button[wire:click*=nextPage]"
|
||||
|
||||
private fun chapterListSelector() = "div[wire:id] > div > ul[role=list] > li"
|
||||
private val chapterListSelector: String = "div[wire:id] > div > ul[role=list] > li"
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val cachedChapters = chapterCache[manga.url]
|
||||
@@ -171,9 +170,9 @@ internal class ReaperComics(context: MangaLoaderContext) :
|
||||
val simpleDateFormat = SimpleDateFormat("dd/MM/yyyy", sourceLocale)
|
||||
var totalChapters = (doc.selectFirst(selectTotalChapter)?.text()?.toFloatOrNull() ?: 0f) - 1f
|
||||
val chapters = mutableSetOf<MangaChapter>()
|
||||
var hasNextPage = doc.selectFirst(chapterListNextPageSelector()) != null
|
||||
var hasNextPage = doc.selectFirst(chapterListNextPageSelector) != null
|
||||
chapters.addAll(
|
||||
doc.select(chapterListSelector()).mapChapters { _, li ->
|
||||
doc.select(chapterListSelector).mapChapters { _, li ->
|
||||
val a = li.selectFirstOrThrow("a")
|
||||
val chapterUrl = a.attr("href").toRelativeUrl(domain)
|
||||
MangaChapter(
|
||||
@@ -218,7 +217,7 @@ internal class ReaperComics(context: MangaLoaderContext) :
|
||||
var pageToQuery = 2
|
||||
|
||||
// Javascript: (Math.random() + 1).toString(36).substring(8)
|
||||
val generateId = { ->
|
||||
val generateId = {
|
||||
"1.${
|
||||
Random.nextLong().toString(36)
|
||||
}".substring(10)
|
||||
@@ -248,7 +247,7 @@ internal class ReaperComics(context: MangaLoaderContext) :
|
||||
serverMemo = mergeLeft(serverMemo, responseData.serverMemo)
|
||||
val chaptersHtml = Jsoup.parse(responseData.effects.html, "https://$domain")
|
||||
chapters.addAll(
|
||||
chaptersHtml.select(chapterListSelector()).mapChapters { _, li ->
|
||||
chaptersHtml.select(chapterListSelector).mapChapters { _, li ->
|
||||
val a = li.selectFirstOrThrow("a")
|
||||
val chapterUrl = a.attr("href").toRelativeUrl(domain)
|
||||
MangaChapter(
|
||||
@@ -267,7 +266,7 @@ internal class ReaperComics(context: MangaLoaderContext) :
|
||||
)
|
||||
},
|
||||
)
|
||||
hasNextPage = chaptersHtml.selectFirst(chapterListNextPageSelector()) != null
|
||||
hasNextPage = chaptersHtml.selectFirst(chapterListNextPageSelector) != null
|
||||
pageToQuery++
|
||||
}
|
||||
|
||||
|
||||
@@ -13,12 +13,13 @@ import java.util.*
|
||||
@MangaSourceParser("MODESCANLATOR", "ModeScanlator", "pt")
|
||||
internal class ModeScanlator(
|
||||
context: MangaLoaderContext,
|
||||
) : HeanCms(context, MangaParserSource.MODESCANLATOR, "modescanlator.com") {
|
||||
) : HeanCms(context, MangaParserSource.MODESCANLATOR, "site.modescanlator.net") {
|
||||
|
||||
private val domainNoSite = domain.removePrefix("site.")
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
append("https://api.")
|
||||
append(domain)
|
||||
append(domainNoSite)
|
||||
append("/query?adult=true&query_string=")
|
||||
when (filter) {
|
||||
is MangaListFilter.Search -> {
|
||||
@@ -70,7 +71,7 @@ internal class ModeScanlator(
|
||||
val cover = if (j.getString("thumbnail").contains('/')) {
|
||||
j.getString("thumbnail")
|
||||
} else {
|
||||
"https://api.$domain/${j.getString("thumbnail")}"
|
||||
"https://api.$domainNoSite/${j.getString("thumbnail")}"
|
||||
}
|
||||
Manga(
|
||||
id = j.getLong("id"),
|
||||
@@ -100,7 +101,7 @@ internal class ModeScanlator(
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val url = buildString {
|
||||
append("https://api.")
|
||||
append(domain)
|
||||
append(domainNoSite)
|
||||
append("/chapter/query?perPage=9999&series_id=")
|
||||
append(manga.id)
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("EZMANGA", "EzManga", "en")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("KEWNSCANS", "KewnScans", "en")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("LAIDBACKSCANS", "LaidBackScans", "en")
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.keyoapp.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("NECROSCANS", "NecroScans", "en")
|
||||
internal class NecroScans(context: MangaLoaderContext) :
|
||||
KeyoappParser(context, MangaParserSource.NECROSCANS, "necroscans.com")
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.fr
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("ANTEIKUSCAN", "AnteikuScan", "fr")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.fr
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("ASTRAMES", "Astrames", "fr")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.fr
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
|
||||
@MangaSourceParser("EDSCANLATION", "EdScanlation", "fr")
|
||||
|
||||
@@ -595,7 +595,15 @@ internal abstract class MadaraParser(
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val chapterProtectorHtml = chapterProtector.html()
|
||||
|
||||
val chapterProtectorHtml = chapterProtector.attr("src")
|
||||
.takeIf { it.startsWith("data:text/javascript;base64,") }
|
||||
?.substringAfter("data:text/javascript;base64,")
|
||||
?.let {
|
||||
Base64.getDecoder().decode(it).decodeToString()
|
||||
}
|
||||
?: chapterProtector.html()
|
||||
|
||||
val password = chapterProtectorHtml.substringAfter("wpmangaprotectornonce='").substringBefore("';")
|
||||
val chapterData = JSONObject(
|
||||
chapterProtectorHtml.substringAfter("chapter_data='").substringBefore("';").replace("\\/", "/"),
|
||||
|
||||
@@ -5,7 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ARYASCANS", "AryaScans", "en")
|
||||
internal class AryaScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ARYASCANS, "aryascans.com")
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ASURASCANSGG", "AsuraScansGg", "en")
|
||||
internal class AsuraScansGg(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ASURASCANSGG, "asurascansgg.com")
|
||||
@@ -1,11 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("BIBIMANGA", "BibiManga", "en", ContentType.HENTAI)
|
||||
internal class BibiManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.BIBIMANGA, "bibimanga.com") {
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("BOYS_LOVE", "BoysLove", "en", ContentType.HENTAI)
|
||||
internal class BoysLove(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.BOYS_LOVE, "boyslove.me", 20) {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI)
|
||||
internal class CoComic(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co")
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("GEDECOMIX", "GedeComix", "en", ContentType.HENTAI)
|
||||
internal class GedeComix(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.GEDECOMIX, "gedecomix.com", 18) {
|
||||
override val tagPrefix = "comics-tag/"
|
||||
override val listUrl = "porncomic/"
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HENTAIXYURI", "Hentai x Yuri", "en", ContentType.HENTAI)
|
||||
@MangaSourceParser("HENTAIXYURI", "HentaiXYuri", "en", ContentType.HENTAI)
|
||||
internal class HentaixYuri(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.HENTAIXYURI, "hentaixyuri.com", 16) {
|
||||
override val postReq = true
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HUNLIGHT", "HunLight", "en")
|
||||
internal class HunLight(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.HUNLIGHT, "hunlight.com")
|
||||
@@ -1,11 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("MANGA18XYZ", "Manga18.xyz", "en", ContentType.HENTAI)
|
||||
internal class Manga18Xyz(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGA18XYZ, "manga18.xyz", 36)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI)
|
||||
internal class MangaHall(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.net", 24)
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAZIN", "MangaZin", "en")
|
||||
internal class MangaZin(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAZIN, "mangazin.org")
|
||||
@@ -1,11 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("MMSCANS", "MmScans", "en")
|
||||
internal class MmScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MMSCANS, "mm-scans.org") {
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("STONESCAPE", "StoneScape", "en")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("TCBSCANSMANGA", "TcbScansManga", "en")
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("TEENMANHUA", "TeenManhua", "en")
|
||||
internal class TeenManhua(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.TEENMANHUA, "teenmanhua.com") {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("UTOON", "UToon", "en")
|
||||
internal class UToon(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.UTOON, "utoon.net") {
|
||||
override val datePattern = "dd MMM"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("YAOIHUB", "YaoiHub", "en", ContentType.HENTAI)
|
||||
internal class YaoiHub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.YAOIHUB, "yaoihub.com")
|
||||
@@ -4,7 +4,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZINCHANMANGA", "ZinChanManga", "en", ContentType.HENTAI)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZINMANGA_CC", "ZinManga.cc", "en")
|
||||
internal class ZinMangaCc(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ZINMANGA_CC, "zinmanga.cc")
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZIN_MANGA_COM", "Zin-Manga.com", "en")
|
||||
internal class ZinMangaCom(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ZIN_MANGA_COM, "zin-manga.com") {
|
||||
override val selectPage = "img"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZINMANGA_MS", "ZinManga.ms", "en")
|
||||
internal class ZinMangaMS(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ZINMANGA_MS, "zinmanga.ms") {
|
||||
override val listUrl = "manga-1/"
|
||||
override val tagPrefix = "manga-genre-1/"
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZINMANGA", "ZinManga", "en")
|
||||
@MangaSourceParser("ZINMANGA", "ZinManga.net", "en")
|
||||
internal class Zinmanga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ZINMANGA, "zinmanga.net") {
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("DOUJINSHELL", "DoujinShell", "es", ContentType.HENTAI)
|
||||
internal class DoujinShell(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.DOUJINSHELL, "www.doujinshell.com", 10) {
|
||||
override val datePattern = "dd MMMM, yyyy"
|
||||
override val listUrl = "/doujin"
|
||||
override val tagPrefix = "/doujin-genero"
|
||||
override val selectPage = "img:not(.aligncenter)"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HAREMSCANN", "HaremScann", "es")
|
||||
internal class HaremScann(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.HAREMSCANN, "haremscann.es") {
|
||||
override val postReq = true
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("INMORALNOFANSUB", "InmoralNoFansub", "es")
|
||||
internal class InmoralNoFansub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.INMORALNOFANSUB, "inmoralnofansub.xyz") {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("JEAZTWOBLUESCANS", "JeazTwoBlueScans", "es")
|
||||
internal class JeazTwoBlueScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.JEAZTWOBLUESCANS, "jeaz.twobluescans.com") {
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("JOBSIBE", "Jobsibe", "es")
|
||||
internal class Jobsibe(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.JOBSIBE, "jobsibe.com") {
|
||||
override val datePattern = "dd/MM"
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("KENHUAV2SCANK", "Kenhuav2Scan", "es")
|
||||
internal class Kenhuav2Scan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.KENHUAV2SCANK, "kenhuav2scan.com")
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("LKSCANLATION", "LkScanlation", "es")
|
||||
internal class LkScanlation(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.LKSCANLATION, "lkscanlation.com") {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MARMOTA", "Marmota", "es", ContentType.COMICS)
|
||||
internal class Marmota(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MARMOTA, "marmota.me", 48) {
|
||||
override val datePattern = "d 'de' MMMMM 'de' yyyy"
|
||||
override val tagPrefix = "genero/"
|
||||
override val listUrl = "comic/"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("PANCONCOLA", "Panconcola", "es")
|
||||
internal class Panconcola(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.PANCONCOLA, "panconcola.com") {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
override val tagPrefix = "generos-de-manga/"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("SAPPHIRESCAN", "SapphireScan", "es")
|
||||
internal class SapphireScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.SAPPHIRESCAN, "sapphirescan.com")
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("TERRITORIOLEAL", "TerritorioLeal", "es")
|
||||
internal class TerritorioLeal(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.TERRITORIOLEAL, "territorioleal.com") {
|
||||
override val datePattern = "d 'de' MMMM 'de' yyyy"
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HARMONYSCAN", "HarmonyScan", "fr")
|
||||
|
||||
@@ -4,7 +4,6 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HENTAIORIGINES", "HentaiOrigines", "fr", ContentType.HENTAI)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("SCANHENTAI", "ScanHentai", "fr", ContentType.HENTAI)
|
||||
internal class ScanHentai(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.SCANHENTAI, "scan-hentai.fr") {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -8,8 +8,7 @@ import java.util.*
|
||||
|
||||
@MangaSourceParser("SHINIGAMI", "Shinigami", "id")
|
||||
internal class Shinigami(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigamitoon.id", 10) {
|
||||
|
||||
MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami02.com", 10) {
|
||||
override val tagPrefix = "genre/"
|
||||
override val listUrl = "series/"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.id
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("YUBIKIRI", "Yubikiri", "id")
|
||||
internal class Yubikiri(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.YUBIKIRI, "yubikiri.my.id", 18) {
|
||||
override val tagPrefix = "genre/"
|
||||
override val datePattern = "d MMMM"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.id
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("YURAMANGA", "YuraManga", "id")
|
||||
internal class YuraManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.YURAMANGA, "yuramanga.my.id") {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.ja
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANGAFENXI", "MangaFenxi", "ja")
|
||||
internal class MangaFenxi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAFENXI, "mangafenxi.net", 40) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val tagPrefix = "genres/"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.ja
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("RAWXZ", "RawXz", "ja")
|
||||
internal class RawXz(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.RAWXZ, "rawxz.si") {
|
||||
override val listUrl = "jp-manga/"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pl
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAHONA", "MangaHona", "pl")
|
||||
internal class MangaHona(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAHONA, "mangahona.pl") {
|
||||
override val datePattern = "yyyy-MM-dd"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ALONESCANLATOR", "AloneScanlator", "pt")
|
||||
internal class AloneScanlator(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ALONESCANLATOR, "alonescanlator.com.br", 10) {
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ARGOSCOMICS", "ArgosComics", "pt")
|
||||
internal class ArgosComics(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ARGOSCOMICS, "argoscomics.com.br") {
|
||||
override val datePattern: String = "d 'de' MMMM 'de' yyyy"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ATEMPORAL", "Atemporal", "pt")
|
||||
internal class Atemporal(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ATEMPORAL, "atemporal.cloud") {
|
||||
override val datePattern: String = "d 'de' MMMM 'de' yyyy"
|
||||
override val withoutAjax = true
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("BURNINGSCANS", "BurningScans", "pt")
|
||||
internal class BurningScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.BURNINGSCANS, "burningscans.com") {
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("DREAMSCAN", "DreamScan", "pt")
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("EUPHORIASCAN", "EuphoriaScan", "pt", ContentType.HENTAI)
|
||||
internal class EuphoriaScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.EUPHORIASCAN, "euphoriascan.com", 10) {
|
||||
override val datePattern: String = "dd 'de' MMMM 'de' yyyy"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("FENIXPROJECT", "FenixProject", "pt")
|
||||
internal class FenixProject(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.FENIXPROJECT, "fenixproject.xyz", 10) {
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
@@ -7,6 +8,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.*
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("GEKKOUSCANS", "GekkouScans", "pt", ContentType.HENTAI)
|
||||
internal class GekkouScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.GEKKOUSCANS, "gekkou.site") {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("LADYESTELARSCAN", "LadyEstelarScan", "pt")
|
||||
internal class LadyestelarScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.LADYESTELARSCAN, "ladyestelarscan.com.br", 10) {
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("LEITORDEMANGA", "LeitorDeManga", "pt")
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("LEITORKAMISAMA", "Leitor Kamisama", "pt")
|
||||
@MangaSourceParser("LEITORKAMISAMA", "LeitorKamisama", "pt")
|
||||
internal class LeitorKamisama(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.LEITORKAMISAMA, "leitor.kamisama.com.br", 10) {
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("LERHENTAI", "LerHentai", "pt", ContentType.HENTAI)
|
||||
internal class LerHentai(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.LERHENTAI, "lerhentai.com", 20) {
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("LICHMANGAS", "LichMangas", "pt")
|
||||
internal class LichMangas(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.LICHMANGAS, "lichmangas.com", 10) {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MAIDSECRET", "MaidSecret", "pt")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGANINJA", "MangaNinja", "pt")
|
||||
|
||||
@@ -2,9 +2,38 @@ package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||
import org.koitharu.kotatsu.parsers.model.MangaPage
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
|
||||
@MangaSourceParser("MANHASTRO", "Manhastro", "pt")
|
||||
internal class Manhastro(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANHASTRO, "manhastro.com", 18)
|
||||
MadaraParser(context, MangaParserSource.MANHASTRO, "manhastro.com", 24) {
|
||||
|
||||
override val listUrl = "lermanga/"
|
||||
override val tagPrefix = "genre/"
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||
|
||||
val script = doc.selectFirstOrThrow("script:containsData(imageLinks)").data()
|
||||
val images = script.substringAfter('[').substringBeforeLast(']')
|
||||
.replace("\"", "").split(',')
|
||||
return images.map { img ->
|
||||
val url = context.decodeBase64(img).toString(Charsets.UTF_8)
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("PRISMA_HENTAI", "PrismaHentai", "pt", ContentType.HENTAI)
|
||||
internal class Prismahentai(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.PRISMA_HENTAI, "prismahentai.com", 18)
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("PROJETOSCANLATOR", "ProjetoScanlator", "pt")
|
||||
internal class ProjetoScanlator(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.PROJETOSCANLATOR, "projetoscanlator.com", 10) {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ATIKROST", "Atikrost", "tr")
|
||||
internal class Atikrost(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ATIKROST, "www.atikrost.com", 10) {
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("DECCALSCANS", "DeccalScans", "tr", ContentType.HENTAI)
|
||||
internal class DeccalScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.DECCALSCANS, "deccalscans.net") {
|
||||
override val tagPrefix = "turler/"
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("ESOMANGA", "EsoManga", "tr")
|
||||
internal class EsoManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ESOMANGA, "esomanga.com", 10) {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("GARCIAMANGA", "GarciaManga", "tr")
|
||||
internal class GarciaManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.GARCIAMANGA, "garciamanga.com", 20) {
|
||||
override val selectPage = "img"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("IMPARATORMANGA", "ImparatorManga", "tr")
|
||||
internal class ImparatorManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.IMPARATORMANGA, "www.imparatormanga.com")
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("JELLYRING", "Jellyring", "tr")
|
||||
internal class Jellyring(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.JELLYRING, "jellyring.co")
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("KABUSMANGA", "KabusManga", "tr")
|
||||
internal class KabusManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.KABUSMANGA, "kabusmanga.com") {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("KEDI", "Kedi", "tr")
|
||||
internal class Kedi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.KEDI, "kedi.to") {
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
override val tagPrefix = "tur/"
|
||||
}
|
||||
@@ -1,13 +1,58 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.jsoup.nodes.Document
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
import org.koitharu.kotatsu.parsers.util.mapChapters
|
||||
import org.koitharu.kotatsu.parsers.util.parseFailed
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.removeSuffix
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
@MangaSourceParser("LAVINIAFANSUB", "LaviniaFansub", "tr", ContentType.HENTAI)
|
||||
internal class LaviniaFansub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.LAVINIAFANSUB, "laviniafansub.com", 18) {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
|
||||
override suspend fun loadChapters(mangaUrl: String, document: Document): List<MangaChapter> {
|
||||
val doc = if (postReq) {
|
||||
val mangaId = document.select("div#manga-chapters-holder").attr("data-id")
|
||||
val url = "https://$domain/wp-admin/admin-ajax.php"
|
||||
val postData = "action=manga_get_chapters&manga=$mangaId"
|
||||
webClient.httpPost(url, postData).parseHtml()
|
||||
} else {
|
||||
val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/"
|
||||
webClient.httpPost(url, emptyMap()).parseHtml()
|
||||
}
|
||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
|
||||
return doc.select(selectChapter).mapChapters(reversed = true) { i, li ->
|
||||
val a = li.selectFirst("a:not(:has(img))")
|
||||
val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing")
|
||||
val link = href + stylePage
|
||||
val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text()
|
||||
val name = a.selectFirst("p")?.text() ?: a.ownText()
|
||||
MangaChapter(
|
||||
id = generateUid(href),
|
||||
url = link,
|
||||
name = name,
|
||||
number = i + 1f,
|
||||
volume = 0,
|
||||
branch = null,
|
||||
uploadDate = parseChapterDate(
|
||||
dateFormat,
|
||||
dateText,
|
||||
),
|
||||
scanlator = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAWT_NET", "MangaWt.net", "tr")
|
||||
internal class MangaWtNet(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAWT_NET, "mangawt.net")
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("MANGAOKU", "Mangaoku", "tr")
|
||||
internal class Mangaoku(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAOKU, "mangaoku.info", 24) {
|
||||
|
||||
@@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAWT", "MangaWt", "tr")
|
||||
@MangaSourceParser("MANGAWT", "MangaWt.com", "tr")
|
||||
internal class Mangawt(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MANGAWT, "mangawt.com")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MILASUB", "MilaSub", "tr")
|
||||
|
||||
@@ -8,6 +8,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("NIVERAFANSUB", "NiveraFansub", "tr", ContentType.HENTAI)
|
||||
internal class NiveraFansub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.NIVERAFANSUB, "niverafansub.co") {
|
||||
MadaraParser(context, MangaParserSource.NIVERAFANSUB, "niverafansub.org") {
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
//This source requires an account.
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("PIEDPIPERFANSUBYY", "PiedPiperFansubyy", "tr", ContentType.HENTAI)
|
||||
internal class PiedPiperFansubyy(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.PIEDPIPERFANSUBYY, "piedpiperfansubyy.me", 18) {
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("YAOIMANGAOKU", "YaoiMangaOku", "tr", ContentType.HENTAI)
|
||||
internal class YaoiMangaOku(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.YAOIMANGAOKU, "yaoimangaoku.com", 16) {
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
@@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("YAOITR", "YaoiTr", "tr")
|
||||
internal class YaoiTr(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.YAOITR, "yaoitr.online", 16) {
|
||||
MadaraParser(context, MangaParserSource.YAOITR, "yaoitr.fun", 16) {
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZAMANMANGA", "ZamanManga", "tr")
|
||||
internal class ZamanManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ZAMANMANGA, "zamanmanga.com") {
|
||||
override val datePattern = "dd MMMM yyyy"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.vi
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("FECOMICC", "Fecomicc", "vi")
|
||||
internal class Fecomicc(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.FECOMICC, "fecomicc.xyz", 9) {
|
||||
override val listUrl = "comic/"
|
||||
override val tagPrefix = "the-loai/"
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.vi
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("PINKTEACOMIC", "PinkTeaComic", "vi")
|
||||
internal class PinkTeaComic(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.PINKTEACOMIC, "pinkteacomic.com") {
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.vi
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("TRUYENVN", "TruyenVn", "vi", ContentType.HENTAI)
|
||||
internal class TruyenVn(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.TRUYENVN, "truyenvn.cam", 20) {
|
||||
override val listUrl = "truyen-tranh/"
|
||||
override val tagPrefix = "the-loai/"
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -132,6 +132,8 @@ internal abstract class Manga18Parser(
|
||||
protected open val selectState = "div.item:contains(Status) div.info_value"
|
||||
protected open val selectAlt = "div.item:contains(Other name) div.info_value"
|
||||
protected open val selectTag = "div.item:contains(Categories) div.info_value a"
|
||||
protected open val selectAuthor =
|
||||
"div.info_label:contains(author) + div.info_value, div.info_label:contains(autor) + div.info_value"
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
|
||||
val fullUrl = manga.url.toAbsoluteUrl(domain)
|
||||
@@ -152,7 +154,8 @@ internal abstract class Manga18Parser(
|
||||
}
|
||||
}
|
||||
|
||||
val alt = doc.body().select(selectAlt).text()
|
||||
val alt = body.selectFirst(selectAlt)?.text().takeIf { it != "Updating" || it.isNotEmpty() }
|
||||
val author = body.selectFirst(selectAuthor)?.text().takeIf { it != "Updating" }
|
||||
|
||||
manga.copy(
|
||||
tags = doc.body().select(selectTag).mapNotNullToSet { a ->
|
||||
@@ -164,6 +167,7 @@ internal abstract class Manga18Parser(
|
||||
},
|
||||
description = desc,
|
||||
altTitle = alt,
|
||||
author = author,
|
||||
state = state,
|
||||
chapters = chaptersDeferred.await(),
|
||||
)
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.manga18.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("COMIC1000", "Comic1000", "en")
|
||||
internal class Comic1000(context: MangaLoaderContext) :
|
||||
Manga18Parser(context, MangaParserSource.COMIC1000, "comic1000.com")
|
||||
|
||||
@@ -225,18 +225,18 @@ internal abstract class MangaReaderParser(
|
||||
"En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", "Онгоінг", "Publishing",
|
||||
"Devam Ediyor", "Em Andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", "Lançando", "In Arrivo", "Emision",
|
||||
"En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", "Devam ediyor", "Devam Etmekte",
|
||||
-> MangaState.ONGOING
|
||||
-> MangaState.ONGOING
|
||||
|
||||
"Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành",
|
||||
"مكتملة", "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído",
|
||||
"Concluido", "已完结", "Bitmiş",
|
||||
-> MangaState.FINISHED
|
||||
-> MangaState.FINISHED
|
||||
|
||||
"Canceled", "Cancelled", "Cancelado", "cancellato", "Cancelados", "Dropped", "Discontinued", "abandonné", "Abandonné",
|
||||
-> MangaState.ABANDONED
|
||||
-> MangaState.ABANDONED
|
||||
|
||||
"Hiatus", "On Hold", "Pausado", "En espera", "En pause", "En Pause", "En attente",
|
||||
-> MangaState.PAUSED
|
||||
-> MangaState.PAUSED
|
||||
|
||||
else -> null
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.ar
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("NOONSCAN", "NoonScan", "ar")
|
||||
internal class NoonScan(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.NOONSCAN, "noonscan.com", pageSize = 20, searchPageSize = 10)
|
||||
@@ -8,9 +8,9 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import org.koitharu.kotatsu.parsers.util.*
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
@MangaSourceParser("NORMOYUN", "Normoyun", "ar")
|
||||
@MangaSourceParser("NORMOYUN", "MaxLevelTeam", "ar")
|
||||
internal class Normoyun(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.NORMOYUN, "t1manga.com", pageSize = 42, searchPageSize = 39) {
|
||||
MangaReaderParser(context, MangaParserSource.NORMOYUN, "maxlevelteam.com", pageSize = 42, searchPageSize = 39) {
|
||||
|
||||
override val datePattern = "MMMM dd, yyyy"
|
||||
override val selectMangaList = ".listupd .bs .bsx"
|
||||
@@ -98,25 +98,11 @@ internal class Normoyun(context: MangaLoaderContext) :
|
||||
}
|
||||
|
||||
override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List<MangaChapter>): Manga {
|
||||
|
||||
/// set if is table
|
||||
|
||||
val states = docs.selectFirst("div.spe span:contains(Ongoing)")?.text()
|
||||
|
||||
val state = if (states.isNullOrEmpty()) {
|
||||
"completed"
|
||||
val mangaState = if (states.isNullOrEmpty()) {
|
||||
MangaState.FINISHED
|
||||
} else {
|
||||
"ongoing"
|
||||
}
|
||||
|
||||
val mangaState = state.let {
|
||||
when (it) {
|
||||
"ongoing" -> MangaState.ONGOING
|
||||
|
||||
"completed" -> MangaState.FINISHED
|
||||
|
||||
else -> null
|
||||
}
|
||||
MangaState.ONGOING
|
||||
}
|
||||
val author = docs.selectFirst("span.author i")?.text()
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.ar
|
||||
|
||||
import org.json.JSONObject
|
||||
import org.koitharu.kotatsu.parsers.Broken
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||
@@ -9,6 +10,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import org.koitharu.kotatsu.parsers.util.*
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("POTATOMANGA", "PotatoManga", "ar")
|
||||
internal class PotatoManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.POTATOMANGA, "potatomanga.xyz", pageSize = 30, searchPageSize = 10) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user