parent
7a571e596d
commit
7d71421c30
@ -1 +1 @@
|
|||||||
total: 1111
|
total: 1118
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.cupfox.vi
|
package org.koitharu.kotatsu.parsers.site.cupfox.vi
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.parsers.Broken
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.cupfox.CupFoxParser
|
import org.koitharu.kotatsu.parsers.site.cupfox.CupFoxParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("OIOIVN", "OioiVn", "vi")
|
@MangaSourceParser("OIOIVN", "OioiVn", "vi")
|
||||||
internal class OioiVn(context: MangaLoaderContext) :
|
internal class OioiVn(context: MangaLoaderContext) :
|
||||||
CupFoxParser(context, MangaParserSource.OIOIVN, "oioivn.com")
|
CupFoxParser(context, MangaParserSource.OIOIVN, "oioivn.com")
|
||||||
|
|||||||
@ -1,11 +1,13 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.heancms.fr
|
package org.koitharu.kotatsu.parsers.site.heancms.fr
|
||||||
|
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.parsers.Broken
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.*
|
import org.koitharu.kotatsu.parsers.model.*
|
||||||
import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
|
import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("PERF_SCAN", "PerfScan", "fr")
|
@MangaSourceParser("PERF_SCAN", "PerfScan", "fr")
|
||||||
internal class PerfScan(context: MangaLoaderContext) :
|
internal class PerfScan(context: MangaLoaderContext) :
|
||||||
HeanCms(context, MangaParserSource.PERF_SCAN, "perf-scan.fr")
|
HeanCms(context, MangaParserSource.PERF_SCAN, "perf-scan.fr")
|
||||||
|
|||||||
@ -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("REZOSCANS", "RezoScans", "en")
|
||||||
|
internal class RezoScans(context: MangaLoaderContext) :
|
||||||
|
KeyoappParser(context, MangaParserSource.REZOSCANS, "rezoscans.com")
|
||||||
@ -1,11 +1,13 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI)
|
@MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI)
|
||||||
internal class CoComic(context: MangaLoaderContext) :
|
internal class CoComic(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co")
|
MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co")
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("DARKSCAN", "Dark-Scan", "en")
|
@MangaSourceParser("DARKSCAN", "Dark-Scan", "en")
|
||||||
internal class DarkScan(context: MangaLoaderContext) :
|
internal class DarkScan(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.DARKSCAN, "dark-scan.com")
|
MadaraParser(context, MangaParserSource.DARKSCAN, "dark-scan.com")
|
||||||
|
|||||||
@ -1,13 +1,90 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||||
|
|
||||||
|
import org.json.JSONObject
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
|
import org.koitharu.kotatsu.parsers.exception.AuthRequiredException
|
||||||
|
import org.koitharu.kotatsu.parsers.exception.ParseException
|
||||||
|
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.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
import org.koitharu.kotatsu.parsers.util.CryptoAES
|
||||||
|
import org.koitharu.kotatsu.parsers.util.domain
|
||||||
|
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||||
|
import org.koitharu.kotatsu.parsers.util.parseFailed
|
||||||
|
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||||
|
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||||
|
import org.koitharu.kotatsu.parsers.util.src
|
||||||
|
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||||
|
import org.koitharu.kotatsu.parsers.util.toRelativeUrl
|
||||||
|
import java.util.Base64
|
||||||
|
|
||||||
@MangaSourceParser("DARK_SCANS", "DarkScans", "en")
|
@MangaSourceParser("DARK_SCANS", "DarkScans", "en")
|
||||||
internal class DarkScans(context: MangaLoaderContext) :
|
internal class DarkScans(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.DARK_SCANS, "darkscans.net", 18) {
|
MadaraParser(context, MangaParserSource.DARK_SCANS, "darkscans.net", 18) {
|
||||||
override val listUrl = "mangas/"
|
override val listUrl = "mangas/"
|
||||||
override val tagPrefix = "mangas-genre/"
|
override val tagPrefix = "mangas-genre/"
|
||||||
|
|
||||||
|
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||||
|
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||||
|
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||||
|
val chapterProtector = doc.getElementById("chapter-protector-data")
|
||||||
|
if (chapterProtector == null) {
|
||||||
|
throw if (doc.selectFirst(selectRequiredLogin) != null) {
|
||||||
|
AuthRequiredException(source)
|
||||||
|
} else {
|
||||||
|
val root = doc.body().selectFirst(selectBodyPage) ?: throw ParseException(
|
||||||
|
"No image found, try to log in",
|
||||||
|
fullUrl,
|
||||||
|
)
|
||||||
|
return root.select(selectPage).map { div ->
|
||||||
|
val img = div.selectFirstOrThrow("img")
|
||||||
|
val url = img.src()?.toRelativeUrl(domain) ?: div.parseFailed("Image src not found")
|
||||||
|
MangaPage(
|
||||||
|
id = generateUid(url),
|
||||||
|
url = url.replace("http:", "https:"),
|
||||||
|
preview = null,
|
||||||
|
source = source,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
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("\\/", "/"),
|
||||||
|
)
|
||||||
|
val unsaltedCiphertext = context.decodeBase64(chapterData.getString("ct"))
|
||||||
|
val salt = chapterData.getString("s").toString().decodeHex()
|
||||||
|
val ciphertext = "Salted__".toByteArray(Charsets.UTF_8) + salt + unsaltedCiphertext
|
||||||
|
|
||||||
|
val rawImgArray = CryptoAES(context).decrypt(context.encodeBase64(ciphertext), password)
|
||||||
|
val imgArrayString = rawImgArray.filterNot { c -> c == '[' || c == ']' || c == '\\' || c == '"' }
|
||||||
|
|
||||||
|
return imgArrayString.split(",").map { url ->
|
||||||
|
MangaPage(
|
||||||
|
id = generateUid(url),
|
||||||
|
url = url.replace("http:", "https:"),
|
||||||
|
preview = null,
|
||||||
|
source = source,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun String.decodeHex(): ByteArray {
|
||||||
|
check(length % 2 == 0) { "Must have an even length" }
|
||||||
|
|
||||||
|
return chunked(2).map { it.toInt(16).toByte() }.toByteArray()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("LUXMANGA", "LuxManga", "en")
|
@MangaSourceParser("LUXMANGA", "LuxManga", "en")
|
||||||
internal class LuxManga(context: MangaLoaderContext) :
|
internal class LuxManga(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.LUXMANGA, "luxmanga.net")
|
MadaraParser(context, MangaParserSource.LUXMANGA, "luxmanga.net")
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("MANGA_QUEEN", "MangaQueen", "en")
|
@MangaSourceParser("MANGA_QUEEN", "MangaQueen", "en")
|
||||||
internal class MangaQueen(context: MangaLoaderContext) :
|
internal class MangaQueen(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.MANGA_QUEEN, "mangaqueen.com", 16)
|
MadaraParser(context, MangaParserSource.MANGA_QUEEN, "mangaqueen.com", 16)
|
||||||
|
|||||||
@ -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("MSYPUBLISHER", "MsyPublisher", "en")
|
||||||
|
internal class MsyPublisher(context: MangaLoaderContext) :
|
||||||
|
MadaraParser(context, MangaParserSource.MSYPUBLISHER, "msypublisher.com", 20) {
|
||||||
|
override val listUrl = "manhua/"
|
||||||
|
override val selectGenre = "manhua-genre/"
|
||||||
|
}
|
||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("NEWMANHUA", "NewManhua", "en")
|
@MangaSourceParser("NEWMANHUA", "NewManhua", "en")
|
||||||
internal class NewManhua(context: MangaLoaderContext) :
|
internal class NewManhua(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.NEWMANHUA, "newmanhua.com", pageSize = 16)
|
MadaraParser(context, MangaParserSource.NEWMANHUA, "newmanhua.com", pageSize = 16)
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("RIGHTDARKSCAN", "RightDarkScan", "es")
|
@MangaSourceParser("RIGHTDARKSCAN", "RightDarkScan", "es")
|
||||||
internal class RightdarkScan(context: MangaLoaderContext) :
|
internal class RightdarkScan(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.RIGHTDARKSCAN, "rsdleft.com", 10)
|
MadaraParser(context, MangaParserSource.RIGHTDARKSCAN, "rsdleft.com", 10)
|
||||||
|
|||||||
@ -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("TECNOPROJECTS", "TecnoProjects", "es")
|
||||||
|
internal class TecnoProjects(context: MangaLoaderContext) :
|
||||||
|
MadaraParser(context, MangaParserSource.TECNOPROJECTS, "tecnoprojects.com") {
|
||||||
|
override val datePattern = "dd 'de' MMMM 'de' yyyy"
|
||||||
|
}
|
||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.parsers.Broken
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("READERGEN", "ReaderGen", "fr")
|
@MangaSourceParser("READERGEN", "ReaderGen", "fr")
|
||||||
internal class Readergen(context: MangaLoaderContext) :
|
internal class Readergen(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.READERGEN, "fr.readergen.fr", 18)
|
MadaraParser(context, MangaParserSource.READERGEN, "fr.readergen.fr", 18)
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
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("RAWMANGA", "RawManga", "ja")
|
||||||
|
internal class RawManga(context: MangaLoaderContext) :
|
||||||
|
MadaraParser(context, MangaParserSource.RAWMANGA, "rawmanga.su", 24) {
|
||||||
|
override val listUrl = "r/"
|
||||||
|
override val selectPage = "div.mg-item"
|
||||||
|
}
|
||||||
@ -1,14 +1,13 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
@Broken
|
|
||||||
@MangaSourceParser("MOONWITCHINLOVESCAN", "MoonWitchinLoveScan", "pt")
|
@MangaSourceParser("MOONWITCHINLOVESCAN", "MoonWitchinScan", "pt")
|
||||||
internal class Moonwitchinlovescan(context: MangaLoaderContext) :
|
internal class Moonwitchinlovescan(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.MOONWITCHINLOVESCAN, "moonwitchinlovescan.com", 10) {
|
MadaraParser(context, MangaParserSource.MOONWITCHINLOVESCAN, "moonwitchscan.com.br", 10) {
|
||||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,16 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.th
|
package org.koitharu.kotatsu.parsers.site.madara.th
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.parsers.Broken
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
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.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
@MangaSourceParser("NEKOPOST", "NekoPost", "th")
|
@Broken // Redirect to @KINGS_MANGA
|
||||||
|
@MangaSourceParser("NEKOPOST", "NekoPost", "th", ContentType.HENTAI)
|
||||||
internal class NekoPost(context: MangaLoaderContext) :
|
internal class NekoPost(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.NEKOPOST, "www.nekopost.co") {
|
MadaraParser(context, MangaParserSource.NEKOPOST, "www.superdoujin.org") {
|
||||||
override val postReq = true
|
override val postReq = true
|
||||||
override val datePattern = "d MMMM yyyy"
|
override val datePattern = "d MMMM yyyy"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
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.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||||
|
|
||||||
|
@Broken // Redirect to @WEBTOONHATTI
|
||||||
@MangaSourceParser("CLOVERMANGA", "CloverManga", "tr")
|
@MangaSourceParser("CLOVERMANGA", "CloverManga", "tr")
|
||||||
internal class CloverManga(context: MangaLoaderContext) :
|
internal class CloverManga(context: MangaLoaderContext) :
|
||||||
MadaraParser(context, MangaParserSource.CLOVERMANGA, "clover-manga.com", 20)
|
MadaraParser(context, MangaParserSource.CLOVERMANGA, "webtoonhatti.net", 20)
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.en
|
package org.koitharu.kotatsu.parsers.site.mangareader.en
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.parsers.Broken
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||||
|
|
||||||
|
@Broken
|
||||||
@MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en")
|
@MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en")
|
||||||
internal class ManhwaFreak(context: MangaLoaderContext) :
|
internal class ManhwaFreak(context: MangaLoaderContext) :
|
||||||
MangaReaderParser(context, MangaParserSource.MANHWA_FREAK, "manhwafreak.xyz", pageSize = 30, searchPageSize = 42)
|
MangaReaderParser(context, MangaParserSource.MANHWA_FREAK, "manhwafreak.xyz", pageSize = 30, searchPageSize = 42)
|
||||||
|
|||||||
@ -1,12 +1,14 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.en
|
package org.koitharu.kotatsu.parsers.site.mangareader.en
|
||||||
|
|
||||||
|
import org.koitharu.kotatsu.parsers.Broken
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||||
|
|
||||||
|
@Broken // Redirect to @FLIXSCANS
|
||||||
@MangaSourceParser("SNOWSCANS", "SnowScans", "en")
|
@MangaSourceParser("SNOWSCANS", "SnowScans", "en")
|
||||||
internal class SnowScans(context: MangaLoaderContext) :
|
internal class SnowScans(context: MangaLoaderContext) :
|
||||||
MangaReaderParser(context, MangaParserSource.SNOWSCANS, "snowscans.com", pageSize = 20, searchPageSize = 10) {
|
MangaReaderParser(context, MangaParserSource.SNOWSCANS, "flixscans.net", pageSize = 20, searchPageSize = 10) {
|
||||||
override val listUrl = "/series"
|
override val listUrl = "/series"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
package org.koitharu.kotatsu.parsers.site.mangareader.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.mangareader.MangaReaderParser
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
|
@MangaSourceParser("IKIRU", "Ikiru", "id")
|
||||||
|
internal class Ikiru(context: MangaLoaderContext) :
|
||||||
|
MangaReaderParser(context, MangaParserSource.IKIRU, "ikiru.me", pageSize = 20, searchPageSize = 10) {
|
||||||
|
override val sourceLocale: Locale = Locale.ENGLISH
|
||||||
|
}
|
||||||
@ -1,12 +1,10 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.mangareader.id
|
package org.koitharu.kotatsu.parsers.site.mangareader.th
|
||||||
|
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||||
|
|
||||||
@MangaSourceParser("SOMANGA", "SoManga", "id")
|
@MangaSourceParser("SOMANGA", "SoManga", "th")
|
||||||
internal class SoManga(context: MangaLoaderContext) :
|
internal class SoManga(context: MangaLoaderContext) :
|
||||||
MangaReaderParser(context, MangaParserSource.SOMANGA, "so-manga.com", pageSize = 5, searchPageSize = 25) {
|
MangaReaderParser(context, MangaParserSource.SOMANGA, "so-manga.com", pageSize = 5, searchPageSize = 25)
|
||||||
override val datePattern = "MMM d, yyyy"
|
|
||||||
}
|
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package org.koitharu.kotatsu.parsers.site.sinmh.zh
|
||||||
|
|
||||||
|
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.sinmh.SinmhParser
|
||||||
|
|
||||||
|
@MangaSourceParser("YKMH", "Ykmh", "zh")
|
||||||
|
internal class Ykmh(context: MangaLoaderContext) :
|
||||||
|
SinmhParser(context, MangaParserSource.YKMH, "www.ykmh.net")
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package org.koitharu.kotatsu.parsers.site.wpcomics.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.wpcomics.WpComicsParser
|
||||||
|
|
||||||
|
@MangaSourceParser("TOPTRUYENVIET", "TopTruyen.pro", "vi")
|
||||||
|
internal class TopTruyenViet(context: MangaLoaderContext) :
|
||||||
|
WpComicsParser(context, MangaParserSource.TOPTRUYENVIET, "www.toptruyenzz.pro", 36)
|
||||||
Loading…
Reference in New Issue