@@ -1,12 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.foolslide.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.foolslide.FoolSlideParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("READER_EVILFLOWERS", "Evil Flowers", "en")
|
||||
internal class ReaderEvilflowers(context: MangaLoaderContext) :
|
||||
FoolSlideParser(context, MangaParserSource.READER_EVILFLOWERS, "reader.evilflowers.com")
|
||||
@@ -9,4 +9,4 @@ import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
|
||||
@Broken // Not dead but changed template
|
||||
@MangaSourceParser("YUGEN_MANGAS_ES", "YugenMangas.lat", "es", ContentType.HENTAI)
|
||||
internal class YugenMangasEs(context: MangaLoaderContext) :
|
||||
HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "ikigaimangas.fraviral.com")
|
||||
HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "lectorikigai.erigu.com")
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.iken.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.iken.IkenParser
|
||||
|
||||
@MangaSourceParser("PHILIASCANS", "PhiliaScans", "en")
|
||||
internal class PhiliaScans(context: MangaLoaderContext) :
|
||||
IkenParser(context, MangaParserSource.PHILIASCANS, "vortextoon.com") {
|
||||
override val selectPages = "main section img"
|
||||
}
|
||||
@@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.iken.IkenParser
|
||||
|
||||
@MangaSourceParser("VORTEXSCANS", "VortexScans", "en")
|
||||
internal class VortexScans(context: MangaLoaderContext) :
|
||||
IkenParser(context, MangaParserSource.VORTEXSCANS, "vortexscans.org") {
|
||||
IkenParser(context, MangaParserSource.VORTEXSCANS, "vortextoon.com") {
|
||||
override val selectPages = "main section img"
|
||||
}
|
||||
|
||||
@@ -241,15 +241,32 @@ internal abstract class KeyoappParser(
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||
return doc.select(selectPage).map { img ->
|
||||
val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found")
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
val cdnUrl = doc.selectFirstOrThrow("script:containsData(primaryUrl)").data().substringAfter("https://cdn.")
|
||||
.substringBefore("\${uid}")
|
||||
|
||||
if (cdnUrl.isNotEmpty()) {
|
||||
return doc.select(selectPage).map { img ->
|
||||
val uid = img.attr("uid") ?: img.parseFailed("Image src not found")
|
||||
val url = "https://cdn.$cdnUrl$uid"
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
return doc.select(selectPage).map { img ->
|
||||
val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found")
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected fun parseChapterDate(dateFormat: DateFormat, date: String?): Long {
|
||||
|
||||
@@ -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("LUASCANS", "luaComic.net", "en")
|
||||
internal class LuaScans(context: MangaLoaderContext) :
|
||||
KeyoappParser(context, MangaParserSource.LUASCANS, "luacomic.net")
|
||||
@@ -2,32 +2,9 @@ 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.MangaChapter
|
||||
import org.koitharu.kotatsu.parsers.model.MangaPage
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
|
||||
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.toAbsoluteUrl
|
||||
|
||||
@MangaSourceParser("MAGUSMANGA", "MagusToon", "en")
|
||||
internal class MagusToon(context: MangaLoaderContext) :
|
||||
KeyoappParser(context, MangaParserSource.MAGUSMANGA, "magustoon.com") {
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||
return doc.select(selectPage).map { img ->
|
||||
val id = img.attr("uid") ?: img.parseFailed("Image id not found")
|
||||
val url = "https://cdn.$domain/x/$id"
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
KeyoappParser(context, MangaParserSource.MAGUSMANGA, "magustoon.com")
|
||||
|
||||
@@ -588,6 +588,7 @@ internal abstract class MadaraParser(
|
||||
altTitle = alt,
|
||||
state = state,
|
||||
chapters = chaptersDeferred.await(),
|
||||
isNsfw = doc.selectFirst(".adult-confirm") != null,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
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("ANISASCANS", "AnisaScans", "en")
|
||||
internal class AnisaScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ANISASCANS, "anisascans.in", 36) {
|
||||
override val datePattern = "dd MMM, yyyy"
|
||||
}
|
||||
@@ -8,4 +8,4 @@ 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)
|
||||
MadaraParser(context, MangaParserSource.MANGAHALL, "mangageek.org", 24)
|
||||
|
||||
@@ -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("READER_EVILFLOWERS", "EvilFlowers", "en")
|
||||
internal class ReaderEvilflowers(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.READER_EVILFLOWERS, "evilflowers.com", pageSize = 10) {
|
||||
override val listUrl = "project/"
|
||||
}
|
||||
@@ -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("BEGATRANSLATION", "BegaTranslation", "es")
|
||||
internal class BegaTranslation(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.BEGATRANSLATION, "begatranslation.com") {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
override val listUrl = "series/"
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
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 listUrl = "doujin/"
|
||||
override val tagPrefix = "doujin-genero/"
|
||||
override val selectPage = "img:not(.aligncenter)"
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MHSCANS", "MhScans", "es")
|
||||
internal class MhScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.MHSCANS, "mhscans.manhuaonline.org") {
|
||||
MadaraParser(context, MangaParserSource.MHSCANS, "mh.cookni.net") {
|
||||
override val datePattern = "d 'de' MMMMM 'de' yyyy"
|
||||
override val listUrl = "series/"
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
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.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("ALLIED_FANSUB", "AlliedFansub", "tr", ContentType.HENTAI)
|
||||
internal class AlliedFansub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.ALLIED_FANSUB, "alliedfansub.net", 20) {
|
||||
|
||||
@@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("PINKTEACOMIC", "PinkTeaComic", "vi")
|
||||
internal class PinkTeaComic(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaParserSource.PINKTEACOMIC, "pinkteacomic.com") {
|
||||
MadaraParser(context, MangaParserSource.PINKTEACOMIC, "pinkteacomics.com") {
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ 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) {
|
||||
MadaraParser(context, MangaParserSource.TRUYENVN, "truyenvn.mobi", 20) {
|
||||
override val listUrl = "truyen-tranh/"
|
||||
override val tagPrefix = "the-loai/"
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
|
||||
@@ -5,8 +5,8 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("LUASCANS", "luaComic.net", "en")
|
||||
internal class LuaScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.LUASCANS, "luacomic.net", pageSize = 20, searchPageSize = 10) {
|
||||
@MangaSourceParser("MYSHOJO", "MyShojo", "en")
|
||||
internal class MyShojo(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.MYSHOJO, "myshojo.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
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.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@Broken
|
||||
@MangaSourceParser("VOIDSCANS_CO", "VoidScans", "en")
|
||||
internal class VoidScansCo(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.VOIDSCANS_CO, "voidscans.co", pageSize = 30, searchPageSize = 42)
|
||||
|
||||
@@ -8,6 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("LIANSCANS", "LianScans", "id", ContentType.HENTAI)
|
||||
internal class Lianscans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.LIANSCANS, "www.lianscans.my.id", pageSize = 10, searchPageSize = 10) {
|
||||
MangaReaderParser(context, MangaParserSource.LIANSCANS, "www.lianscans.com", pageSize = 10, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.util.*
|
||||
|
||||
@MangaSourceParser("MANGATALE", "MangaTale", "id")
|
||||
internal class MangaTaleParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.MANGATALE, "mangatale.co", pageSize = 20, searchPageSize = 10) {
|
||||
MangaReaderParser(context, MangaParserSource.MANGATALE, "mangatale.id", pageSize = 20, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import java.util.*
|
||||
|
||||
@MangaSourceParser("MANHWALIST", "ManhwaList.com", "id")
|
||||
@MangaSourceParser("MANHWALIST", "ManhwaList.in", "id")
|
||||
internal class ManhwalistParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaParserSource.MANHWALIST, "manhwalist.com", pageSize = 24, searchPageSize = 10) {
|
||||
MangaReaderParser(context, MangaParserSource.MANHWALIST, "manhwalist.in", pageSize = 24, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.*
|
||||
class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YUGENMANGAS, 28) {
|
||||
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL)
|
||||
override val configKeyDomain = ConfigKey.Domain("yugenweb.com")
|
||||
override val configKeyDomain = ConfigKey.Domain("yugenmangasbr.voblog.xyz")
|
||||
|
||||
override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
|
||||
super.onCreateConfig(keys)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.zeistmanga.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.zeistmanga.ZeistMangaParser
|
||||
|
||||
@MangaSourceParser("XSANOMANGA", "XsanoManga", "ar")
|
||||
internal class XsanoManga(context: MangaLoaderContext) :
|
||||
ZeistMangaParser(context, MangaParserSource.XSANOMANGA, "www.xsano-manga.com")
|
||||
@@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser
|
||||
|
||||
@MangaSourceParser("ICHIROMANGA", "IchiroManga", "id")
|
||||
internal class IchiroManga(context: MangaLoaderContext) :
|
||||
ZeistMangaParser(context, MangaParserSource.ICHIROMANGA, "www.ichiromanga.my.id")
|
||||
ZeistMangaParser(context, MangaParserSource.ICHIROMANGA, "ichiromanga.my.id")
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.zeistmanga.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.zeistmanga.ZeistMangaParser
|
||||
|
||||
@MangaSourceParser("ULASCOMIC", "UlasComic", "id")
|
||||
internal class UlasComic(context: MangaLoaderContext) :
|
||||
ZeistMangaParser(context, MangaParserSource.ULASCOMIC, "www.ulascomic.xyz")
|
||||
Reference in New Issue
Block a user