add source and fix

master
devi 2 years ago
parent 939b6b1e46
commit 2e138da3d5

@ -8,7 +8,6 @@ import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.Interceptor import okhttp3.Interceptor
import okhttp3.Response import okhttp3.Response
import okhttp3.internal.headersContentLength import okhttp3.internal.headersContentLength
import org.intellij.lang.annotations.Language
import org.jsoup.internal.StringUtil import org.jsoup.internal.StringUtil
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaLoaderContext

@ -0,0 +1,10 @@
package org.koitharu.kotatsu.parsers.site.keyoapp.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.keyoapp.KeyoappParser
@MangaSourceParser("SCANS4U", "4uScans", "ar")
internal class Scans4u(context: MangaLoaderContext) :
KeyoappParser(context, MangaParserSource.SCANS4U, "4uscans.com")

@ -1,15 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.ar package org.koitharu.kotatsu.parsers.site.madara.ar
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("WEBTOONEMPIRE", "WebtoonEmpire", "ar") @MangaSourceParser("WEBTOONEMPIRE", "WebtoonEmpire", "ar")
internal class WebtoonEmpire(context: MangaLoaderContext) : internal class WebtoonEmpire(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.WEBTOONEMPIRE, "webtoonsempireron.com", pageSize = 10) { MadaraParser(context, MangaParserSource.WEBTOONEMPIRE, "webtoonempire-ron.com", pageSize = 10) {
override val listUrl = "webtoon/" override val listUrl = "webtoon/"
override val datePattern = "d MMMM، yyyy" override val datePattern = "d MMMM، yyyy"
} }

@ -0,0 +1,14 @@
package org.koitharu.kotatsu.parsers.site.madara.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.madara.MadaraParser
import java.util.Locale
@MangaSourceParser("YONABAR", "YonaBar", "ar")
internal class YonaBar(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.YONABAR, "yonabar.xyz", 10) {
override val sourceLocale: Locale = Locale.ENGLISH
override val listUrl = "yaoi/"
}

@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.util.*
@MangaSourceParser("FIRESCANS", "FireScans", "en") @MangaSourceParser("FIRESCANS", "FireScans", "en")
internal class FireScans(context: MangaLoaderContext) : internal class FireScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.FIRESCANS, "firecomics.org", 10) { MadaraParser(context, MangaParserSource.FIRESCANS, "firescans.xyz", 10) {
override fun parseMangaList(doc: Document): List<Manga> { override fun parseMangaList(doc: Document): List<Manga> {
return doc.select("div.row.c-tabs-item__content").ifEmpty { return doc.select("div.row.c-tabs-item__content").ifEmpty {

@ -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("ARTESSUPREMAS", "ArtesSupremas", "es")
internal class ArtesSupremas(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.ARTESSUPREMAS, "artessupremas.com") {
override val datePattern = "dd/MM/yyyy"
}

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("ATIKROST", "Atikrost", "tr") @MangaSourceParser("ATIKROST", "Atikrost", "tr")
internal class Atikrost(context: MangaLoaderContext) : internal class Atikrost(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.ATIKROST, "www.atikrost.com", 10) { MadaraParser(context, MangaParserSource.ATIKROST, "www.mangaoku.org", 10) {
override val datePattern = "d MMMM yyyy" override val datePattern = "d MMMM yyyy"
} }

@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
//This source requires an account. //This source requires an account.
@MangaSourceParser("GRIMELEK", "Grimelek", "tr") @MangaSourceParser("GRIMELEK", "Grimelek", "tr")
internal class Grimelek(context: MangaLoaderContext) : internal class Grimelek(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.GRIMELEK, "grimelek.me", 20) { MadaraParser(context, MangaParserSource.GRIMELEK, "grimelek.pro", 20) {
override val datePattern = "d MMMM yyyy" override val datePattern = "d MMMM yyyy"
override val listUrl = "seri/" override val listUrl = "seri/"
} }

@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("LUNASCANS", "LunaScans", "tr", ContentType.HENTAI) @MangaSourceParser("LUNASCANS", "LunaScans", "tr", ContentType.HENTAI)
internal class LunaScans(context: MangaLoaderContext) : internal class LunaScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.LUNASCANS, "lunascans.fun") { MadaraParser(context, MangaParserSource.LUNASCANS, "lunascans.org") {
override val postReq = true override val postReq = true
override val datePattern = "dd MMMM yyyy" override val datePattern = "dd MMMM yyyy"
} }

@ -223,18 +223,18 @@ internal abstract class MangaReaderParser(
"En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", "Онгоінг", "Publishing", "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", "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", "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", "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", "مكتملة", "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído",
"Concluido", "已完结", "Bitmiş", "Concluido", "已完结", "Bitmiş",
-> MangaState.FINISHED -> MangaState.FINISHED
"Canceled", "Cancelled", "Cancelado", "cancellato", "Cancelados", "Dropped", "Discontinued", "abandonné", "Abandonné", "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", "Hiatus", "On Hold", "Pausado", "En espera", "En pause", "En Pause", "En attente",
-> MangaState.PAUSED -> MangaState.PAUSED
else -> null else -> null
} }

@ -5,6 +5,6 @@ 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("NOONSCAN", "NoonScan", "ar") @MangaSourceParser("NOONSCAN", "NoonScan.com", "ar")
internal class NoonScan(context: MangaLoaderContext) : internal class NoonScan(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.NOONSCAN, "noonscan.com", pageSize = 20, searchPageSize = 10) MangaReaderParser(context, MangaParserSource.NOONSCAN, "noonscan.com", pageSize = 20, searchPageSize = 10)

@ -10,7 +10,7 @@ import java.text.SimpleDateFormat
@MangaSourceParser("NORMOYUN", "MaxLevelTeam", "ar") @MangaSourceParser("NORMOYUN", "MaxLevelTeam", "ar")
internal class Normoyun(context: MangaLoaderContext) : internal class Normoyun(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.NORMOYUN, "tatwt.com", pageSize = 42, searchPageSize = 39) { MangaReaderParser(context, MangaParserSource.NORMOYUN, "healteer.com", pageSize = 42, searchPageSize = 39) {
override val datePattern = "MMMM dd, yyyy" override val datePattern = "MMMM dd, yyyy"
override val selectMangaList = ".listupd .bs .bsx" override val selectMangaList = ".listupd .bs .bsx"

@ -5,12 +5,12 @@ 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("LUMINOUSSCANS", "LuminousScans", "en") @MangaSourceParser("LUMINOUSSCANS", "RadiantScans", "en")
internal class LuminousScans(context: MangaLoaderContext) : internal class LuminousScans(context: MangaLoaderContext) :
MangaReaderParser( MangaReaderParser(
context, context,
MangaParserSource.LUMINOUSSCANS, MangaParserSource.LUMINOUSSCANS,
"luminous-scans.com", "radiantscans.com",
pageSize = 20, pageSize = 20,
searchPageSize = 10, searchPageSize = 10,
) { ) {

@ -5,7 +5,7 @@ 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("MANJANOON_EN", "NoonScan", "en") @MangaSourceParser("MANJANOON_EN", "NoonScan.net", "en")
internal class Manjanoon(context: MangaLoaderContext) : internal class Manjanoon(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANJANOON_EN, "noonscan.net", pageSize = 20, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.MANJANOON_EN, "noonscan.net", pageSize = 20, searchPageSize = 10) {
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.mangareader.es package org.koitharu.kotatsu.parsers.site.mangareader.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.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@Broken
@MangaSourceParser("INARIPIKAV", "InariPikav", "es") @MangaSourceParser("INARIPIKAV", "InariPikav", "es")
internal class InariPikav(context: MangaLoaderContext) : internal class InariPikav(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.INARIPIKAV, "inaripikav.org", pageSize = 10, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.INARIPIKAV, "inaripikav.org", pageSize = 10, searchPageSize = 10) {

@ -7,4 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("SUSHISCANFR", "SushiScan.fr", "fr") @MangaSourceParser("SUSHISCANFR", "SushiScan.fr", "fr")
internal class SushiScanFR(context: MangaLoaderContext) : internal class SushiScanFR(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.SUSHISCANFR, "sushiscan.fr", pageSize = 36, searchPageSize = 10) MangaReaderParser(context, MangaParserSource.SUSHISCANFR, "sushiscan.fr", pageSize = 36, searchPageSize = 10) {
override val listUrl = "/catalogue"
override val isTagsExclusionSupported = false
}

@ -8,6 +8,12 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("DOUJINDESURIP", "DoujinDesu.click", "id", ContentType.HENTAI) @MangaSourceParser("DOUJINDESURIP", "DoujinDesu.click", "id", ContentType.HENTAI)
internal class DoujinDesuRip(context: MangaLoaderContext) : internal class DoujinDesuRip(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.DOUJINDESURIP, "doujindesu.click", pageSize = 20, searchPageSize = 10) { MangaReaderParser(
context,
MangaParserSource.DOUJINDESURIP,
"doujindesu.click",
pageSize = 20,
searchPageSize = 10,
) {
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -8,6 +8,12 @@ import java.util.*
@MangaSourceParser("MANGAYARO", "MangaYaro", "id") @MangaSourceParser("MANGAYARO", "MangaYaro", "id")
internal class Mangayaro(context: MangaLoaderContext) : internal class Mangayaro(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANGAYARO, "mangayaro.id", pageSize = 20, searchPageSize = 20) { MangaReaderParser(
context,
MangaParserSource.MANGAYARO,
"www.nowheartruth.com",
pageSize = 20,
searchPageSize = 20,
) {
override val sourceLocale: Locale = Locale.ENGLISH override val sourceLocale: Locale = Locale.ENGLISH
} }

@ -8,7 +8,13 @@ import java.util.*
@MangaSourceParser("MONZEEKOMIK", "MonzeeKomik", "id") @MangaSourceParser("MONZEEKOMIK", "MonzeeKomik", "id")
internal class MonzeeKomik(context: MangaLoaderContext) : internal class MonzeeKomik(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MONZEEKOMIK, "www.monzeekomik.my.id", pageSize = 30, searchPageSize = 10) { MangaReaderParser(
context,
MangaParserSource.MONZEEKOMIK,
"www.monzeekomik.my.id",
pageSize = 30,
searchPageSize = 10,
) {
override val sourceLocale: Locale = Locale.ENGLISH override val sourceLocale: Locale = Locale.ENGLISH
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -0,0 +1,14 @@
package org.koitharu.kotatsu.parsers.site.mangareader.th
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("REAPERTRANS", "ReaperTrans", "th")
internal class ReaperTrans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.REAPERTRANS, "reapertrans.com", pageSize = 30, searchPageSize = 14) {
override val isTagsExclusionSupported = false
override val sourceLocale: Locale = Locale.ENGLISH
}

@ -186,17 +186,17 @@ internal abstract class NepnepParser(
altTitle = null, altTitle = null,
state = when (doc.selectFirstOrThrow(".list-group-item:contains(Status:) a").text()) { state = when (doc.selectFirstOrThrow(".list-group-item:contains(Status:) a").text()) {
"Ongoing (Scan)", "Ongoing (Publish)", "Ongoing (Scan)", "Ongoing (Publish)",
-> MangaState.ONGOING -> MangaState.ONGOING
"Complete (Scan)", "Complete (Publish)", "Complete (Scan)", "Complete (Publish)",
-> MangaState.FINISHED -> MangaState.FINISHED
"Cancelled (Scan)", "Cancelled (Publish)", "Cancelled (Scan)", "Cancelled (Publish)",
"Discontinued (Scan)", "Discontinued (Publish)", "Discontinued (Scan)", "Discontinued (Publish)",
-> MangaState.ABANDONED -> MangaState.ABANDONED
"Hiatus (Scan)", "Hiatus (Publish)", "Hiatus (Scan)", "Hiatus (Publish)",
-> MangaState.PAUSED -> MangaState.PAUSED
else -> null else -> null
}, },

@ -1,7 +1,6 @@
package org.koitharu.kotatsu.parsers.site.vi package org.koitharu.kotatsu.parsers.site.vi
import androidx.collection.ArrayMap import androidx.collection.ArrayMap
import okhttp3.Headers
import org.json.JSONArray import org.json.JSONArray
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
@ -25,9 +24,12 @@ class BlogTruyenParser(context: MangaLoaderContext) :
override val availableSortOrders: Set<SortOrder> override val availableSortOrders: Set<SortOrder>
get() = EnumSet.of(SortOrder.UPDATED) get() = EnumSet.of(SortOrder.UPDATED)
override fun getRequestHeaders(): Headers = Headers.Builder() override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP)
.add("User-Agent", UserAgents.CHROME_DESKTOP)
.build() override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
super.onCreateConfig(keys)
keys.add(userAgentKey)
}
override val isMultipleTagsSupported = false override val isMultipleTagsSupported = false

@ -1,7 +1,6 @@
package org.koitharu.kotatsu.parsers.site.vi package org.koitharu.kotatsu.parsers.site.vi
import androidx.collection.ArrayMap import androidx.collection.ArrayMap
import okhttp3.Headers
import org.json.JSONArray import org.json.JSONArray
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
@ -25,9 +24,12 @@ class BlogTruyenVNParser(context: MangaLoaderContext) :
override val availableSortOrders: Set<SortOrder> override val availableSortOrders: Set<SortOrder>
get() = EnumSet.of(SortOrder.UPDATED) get() = EnumSet.of(SortOrder.UPDATED)
override fun getRequestHeaders(): Headers = Headers.Builder() override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP)
.add("User-Agent", UserAgents.CHROME_DESKTOP)
.build() override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
super.onCreateConfig(keys)
keys.add(userAgentKey)
}
override val isMultipleTagsSupported = false override val isMultipleTagsSupported = false

@ -288,7 +288,7 @@ internal abstract class WpComicsParser(
return when { return when {
d.endsWith(" ago") || d.endsWith(" ago") ||
d.endsWith(" trước") d.endsWith(" trước")
-> parseRelativeDate(date) -> parseRelativeDate(date)
d.startsWith("year") -> Calendar.getInstance().apply { d.startsWith("year") -> Calendar.getInstance().apply {
add(Calendar.DAY_OF_MONTH, -1) add(Calendar.DAY_OF_MONTH, -1)

@ -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("NGAMENKOMIK", "NgamenKomik", "id")
internal class NgamenKomik(context: MangaLoaderContext) :
ZeistMangaParser(context, MangaParserSource.NGAMENKOMIK, "ngamenkomik05.blogspot.com")
Loading…
Cancel
Save