Add new source
This commit is contained in:
@@ -32,13 +32,13 @@ class MangaInUaParser(context: MangaLoaderContext) : PagedMangaParser(
|
||||
): List<Manga> {
|
||||
val url = when {
|
||||
!query.isNullOrEmpty() -> (
|
||||
"/index.php?do=search" +
|
||||
"&subaction=search" +
|
||||
"&search_start=$page" +
|
||||
"&full_search=1" +
|
||||
"&story=$query" +
|
||||
"&titleonly=3"
|
||||
).toAbsoluteUrl(domain)
|
||||
"/index.php?do=search" +
|
||||
"&subaction=search" +
|
||||
"&search_start=$page" +
|
||||
"&full_search=1" +
|
||||
"&story=$query" +
|
||||
"&titleonly=3"
|
||||
).toAbsoluteUrl(domain)
|
||||
|
||||
tags.isNullOrEmpty() -> "/mangas/page/$page".toAbsoluteUrl(domain)
|
||||
tags.size == 1 -> "${tags.first().key}/page/$page"
|
||||
|
||||
@@ -48,7 +48,7 @@ class NicovideoSeigaParser(context: MangaLoaderContext) :
|
||||
!query.isNullOrEmpty() -> return if (offset == 0) getSearchList(query, page) else emptyList()
|
||||
tags.isNullOrEmpty() -> "https://$domain/manga/list?page=$page&sort=${getSortKey(sortOrder)}"
|
||||
tags.size == 1 -> "https://$domain/manga/list?category=${tags.first().key}&page=$page" +
|
||||
"&sort=${getSortKey(sortOrder)}"
|
||||
"&sort=${getSortKey(sortOrder)}"
|
||||
|
||||
tags.size > 1 -> throw IllegalArgumentException("This source supports only 1 category")
|
||||
else -> "https://$domain/manga/list?page=$page&sort=${getSortKey(sortOrder)}"
|
||||
|
||||
@@ -50,14 +50,62 @@ internal abstract class MadaraParser(
|
||||
|
||||
|
||||
protected val ongoing: Array<String> = arrayOf(
|
||||
"مستمرة", "En curso", "En Curso","Ongoing", "OnGoing","On going",
|
||||
"Ativo", "En Cours", "En cours", "Đ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", "连载中",)
|
||||
"مستمرة",
|
||||
"En curso",
|
||||
"En Curso",
|
||||
"Ongoing",
|
||||
"OnGoing",
|
||||
"On going",
|
||||
"Ativo",
|
||||
"En Cours",
|
||||
"En cours",
|
||||
"En cours \uD83D\uDFE2",
|
||||
"Đ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",
|
||||
"连载中",
|
||||
)
|
||||
|
||||
protected val finished: Array<String> = arrayOf(
|
||||
"Completed", "Completo", "Complété", "Fini", "Terminé", "Tamamlandı", "Đã hoàn thành", "مكتملة", "Завершено",
|
||||
"Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结",)
|
||||
"Completed",
|
||||
"Completo",
|
||||
"Complété",
|
||||
"Fini",
|
||||
"Terminé",
|
||||
"Terminé ⚫",
|
||||
"Tamamlandı",
|
||||
"Đã hoàn thành",
|
||||
"مكتملة",
|
||||
"Завершено",
|
||||
"Finished",
|
||||
"Finalizado",
|
||||
"Completata",
|
||||
"One-Shot",
|
||||
"Bitti",
|
||||
"Tamat",
|
||||
"Completado",
|
||||
"Concluído",
|
||||
"Concluido",
|
||||
"已完结",
|
||||
)
|
||||
|
||||
|
||||
override suspend fun getListPage(
|
||||
@@ -102,16 +150,17 @@ internal abstract class MadaraParser(
|
||||
}.orEmpty(),
|
||||
author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(),
|
||||
state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText()?.trim()
|
||||
?.lowercase())
|
||||
{
|
||||
"مستمرة", "En curso", "En Curso","Ongoing", "OnGoing","On going",
|
||||
?.lowercase()) {
|
||||
"مستمرة", "En curso", "En Curso", "Ongoing", "OnGoing", "On going",
|
||||
"Ativo", "En Cours", "En cours", "Đ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", "连载中",
|
||||
-> MangaState.ONGOING
|
||||
|
||||
"Completed", "Completo", "Complété", "Fini", "Terminé", "Tamamlandı", "Đã hoàn thành", "مكتملة", "Завершено",
|
||||
"Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结",
|
||||
-> MangaState.FINISHED
|
||||
|
||||
else -> null
|
||||
},
|
||||
source = source,
|
||||
@@ -152,25 +201,29 @@ internal abstract class MadaraParser(
|
||||
|
||||
val testchekasync = doc.body().select("div.listing-chapters_wrap")
|
||||
|
||||
val chaptersDeferred = if(testchekasync.isNullOrEmpty())
|
||||
{
|
||||
val chaptersDeferred = if (testchekasync.isNullOrEmpty()) {
|
||||
async { loadChapters(manga.url) }
|
||||
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
async { getChapters(manga, doc) }
|
||||
}
|
||||
|
||||
val desc = doc.body().selectFirst("div.description-summary div.summary__content") ?:
|
||||
doc.body().selectFirst("div.summary_content div.post-content_item > h5 + div") ?:
|
||||
doc.body().selectFirst("div.summary_content div.manga-excerpt")
|
||||
val desc = doc.body().selectFirst("div.description-summary div.summary__content") ?: doc.body()
|
||||
.selectFirst("div.summary_content div.post-content_item > h5 + div") ?: doc.body()
|
||||
.selectFirst("div.post-content div.manga-summary") ?: doc.body()
|
||||
.selectFirst("div.post-content div.desc") ?: doc.body()
|
||||
.selectFirst("div.summary_content div.manga-excerpt")
|
||||
|
||||
|
||||
val stateselect =
|
||||
doc.body().select("div.post-content_item:contains(Status) > div.summary-content").last() ?: doc.body().select("div.post-content_item:contains(Statut) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(حالة العمل) > div.summary-content").last() ?: doc.body().select("div.post-content_item:contains(Estado) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(สถานะ) > div.summary-content").last() ?: doc.body().select("div.post-content_item:contains(Stato) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(Durum) > div.summary-content").last() ?: doc.body().select("div.post-content_item:contains(Statüsü) > div.summary-content").last()
|
||||
doc.body().select("div.post-content_item:contains(Status) > div.summary-content").last() ?: doc.body()
|
||||
.select("div.post-content_item:contains(Statut) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(حالة العمل) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(Estado) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(สถานะ) > div.summary-content").last() ?: doc.body()
|
||||
.select("div.post-content_item:contains(Stato) > div.summary-content").last()
|
||||
?: doc.body().select("div.post-content_item:contains(Durum) > div.summary-content").last() ?: doc.body()
|
||||
.select("div.post-content_item:contains(Statüsü) > div.summary-content").last()
|
||||
?: doc.body().select("div.summary-content").last()
|
||||
|
||||
val state =
|
||||
@@ -182,7 +235,7 @@ internal abstract class MadaraParser(
|
||||
}
|
||||
}
|
||||
|
||||
manga.copy(
|
||||
manga.copy(
|
||||
tags = doc.body().select("div.genres-content a").mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").removeSuffix("/").substringAfterLast('/'),
|
||||
@@ -190,10 +243,12 @@ internal abstract class MadaraParser(
|
||||
source = source,
|
||||
)
|
||||
},
|
||||
description = desc?.select("p")?.filterNot { it.ownText().startsWith("A brief description") }?.joinToString { it.text() },
|
||||
description = desc?.select("p")?.filterNot { it.ownText().startsWith("A brief description") }
|
||||
?.joinToString { it.text() },
|
||||
altTitle =
|
||||
doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text()?.trim() ?:
|
||||
doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content").firstOrNull()?.tableValue()?.text()?.trim(),
|
||||
doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text()
|
||||
?.trim() ?: doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content")
|
||||
.firstOrNull()?.tableValue()?.text()?.trim(),
|
||||
state = state,
|
||||
chapters = chaptersDeferred.await(),
|
||||
)
|
||||
@@ -281,6 +336,16 @@ internal abstract class MadaraParser(
|
||||
date.startsWith("il y a", ignoreCase = true) -> {
|
||||
parseRelativeDate(date)
|
||||
}
|
||||
// Handle translated short 'ago'
|
||||
date.endsWith(" h", ignoreCase = true) -> {
|
||||
parseRelativeDate(date)
|
||||
}
|
||||
date.endsWith(" d", ignoreCase = true) -> {
|
||||
parseRelativeDate(date)
|
||||
}
|
||||
date.endsWith(" mins", ignoreCase = true) -> {
|
||||
parseRelativeDate(date)
|
||||
}
|
||||
// Handle 'yesterday' and 'today', using midnight
|
||||
date.startsWith("year", ignoreCase = true) -> {
|
||||
Calendar.getInstance().apply {
|
||||
@@ -330,16 +395,17 @@ internal abstract class MadaraParser(
|
||||
"día",
|
||||
"dia",
|
||||
"day",
|
||||
"d",
|
||||
).anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis
|
||||
|
||||
WordSet("jam", "saat", "heure", "hora", "hour").anyWordIn(date) -> cal.apply {
|
||||
WordSet("jam", "saat", "heure", "hora", "hour", "h").anyWordIn(date) -> cal.apply {
|
||||
add(
|
||||
Calendar.HOUR,
|
||||
-number,
|
||||
)
|
||||
}.timeInMillis
|
||||
|
||||
WordSet("menit", "dakika", "min", "minute", "minuto").anyWordIn(date) -> cal.apply {
|
||||
WordSet("menit", "dakika", "min", "minute", "minuto", "mins").anyWordIn(date) -> cal.apply {
|
||||
add(
|
||||
Calendar.MINUTE,
|
||||
-number,
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("AZORANOV", "Azoranov", "ar")
|
||||
internal class Azoranov(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.AZORANOV, "azoranov.com", pageSize = 10,) {
|
||||
|
||||
override val tagPrefix = "novel-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("ar", "AR")
|
||||
}
|
||||
@@ -9,5 +9,5 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
@MangaSourceParser("MANGALEK", "MangaLek", "ar")
|
||||
internal class MangaLek(context: MangaLoaderContext) : MadaraParser(
|
||||
context, MangaSource.MANGALEK, "mangalek.com",
|
||||
pageSize = 10,
|
||||
pageSize = 20,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ANSHSCANS", "Ansh Scans", "en")
|
||||
internal class AnshScans(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ANSHSCANS, "anshscans.org", 10){
|
||||
|
||||
override val tagPrefix = "genre/"
|
||||
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("BABELWUXIA", "Babelwuxia", "en")
|
||||
internal class Babelwuxia(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.BABELWUXIA, "read.babelwuxia.com") {
|
||||
override val datePattern = "MMMM d, 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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("CM_READER", "Cm Reader", "en")
|
||||
internal class CmReader(context: MangaLoaderContext) : MadaraParser(context, MangaSource.CM_READER, "cmreader.info") {
|
||||
|
||||
override val datePattern = "MMMM d, 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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("COFFEE_MANGA", "Coffee Manga", "en")
|
||||
internal class CoffeeManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.COFFEE_MANGA, "coffeemanga.io") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("COLORED_MANGA", "Colored Manga", "en")
|
||||
internal class ColoredManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.COLORED_MANGA, "coloredmanga.com") {
|
||||
|
||||
override val tagPrefix = "manga-tag"
|
||||
override val datePattern = "dd-MMM"
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("DARK_SCANS", "DarkScans", "en")
|
||||
internal class DarkScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DARK_SCANS, "darkscans.com", 18) {
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HARIMANGA", "HariManga", "en")
|
||||
internal class HariManga(context: MangaLoaderContext) :
|
||||
MadaraParser( context, MangaSource.HARIMANGA, "harimanga.com", pageSize = 10,) {
|
||||
MadaraParser(context, MangaSource.HARIMANGA, "harimanga.com", pageSize = 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
|
||||
@@ -9,7 +9,5 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
@MangaSourceParser("HENTAI20", "Hentai20", "en")
|
||||
internal class Hentai20(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HENTAI20, "hentai20.io") {
|
||||
|
||||
override val tagPrefix = "manga-genre/"
|
||||
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
|
||||
@@ -7,4 +7,5 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGACV", "Manga Cv", "en")
|
||||
internal class MangaCv(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGACV, "mangacv.com", pageSize = 10,)
|
||||
internal class MangaCv(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGACV, "mangacv.com", pageSize = 10)
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAEFFECT", "MangaEffect", "en")
|
||||
internal class MangaEffect(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAEFFECT, "mangaeffect.com") {
|
||||
internal class MangaEffect(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAEFFECT, "mangaeffect.com") {
|
||||
override val datePattern = "dd.MM.yyyy"
|
||||
}
|
||||
|
||||
@@ -7,4 +7,5 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGA_KOMI", "MangaKomi", "en")
|
||||
internal class MangaKomi(context: MangaLoaderContext) : MadaraParser( context, MangaSource.MANGA_KOMI, "mangakomi.io", pageSize = 18,)
|
||||
internal class MangaKomi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGA_KOMI, "mangakomi.io", pageSize = 18)
|
||||
|
||||
@@ -8,7 +8,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGA_MANHUA", "Manga Manhua", "en")
|
||||
internal class MangaManhua(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGA_MANHUA, "mangamanhua.online", pageSize = 10)
|
||||
{
|
||||
MadaraParser(context, MangaSource.MANGA_MANHUA, "mangamanhua.online", pageSize = 10) {
|
||||
override val datePattern = "d MMMM، yyyy"
|
||||
}
|
||||
|
||||
@@ -7,4 +7,5 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAROCK", "MangaRock", "en")
|
||||
internal class MangaRock(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAROCK, "mangarockteam.com")
|
||||
internal class MangaRock(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAROCK, "mangarockteam.com")
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGAWEEBS", "MangaWeebs", "en")
|
||||
internal class MangaWeebs(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAWEEBS, "mangaweebs.in", pageSize = 20,) {
|
||||
MadaraParser(context, MangaSource.MANGAWEEBS, "mangaweebs.in", pageSize = 20) {
|
||||
|
||||
override val datePattern = "dd MMMM HH:mm"
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANGACLASH", "Mangaclash", "en")
|
||||
internal class Mangaclash(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGACLASH, "mangaclash.com", pageSize = 18,) {
|
||||
internal class Mangaclash(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGACLASH, "mangaclash.com", pageSize = 18) {
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
|
||||
@@ -7,4 +7,5 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANHWACLAN", "ManhwaClan", "en")
|
||||
internal class ManhwaClan(context: MangaLoaderContext) : MadaraParser( context, MangaSource.MANHWACLAN, "manhwaclan.com", pageSize = 10,)
|
||||
internal class ManhwaClan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANHWACLAN, "manhwaclan.com", pageSize = 10)
|
||||
|
||||
@@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MANHWAKOOL", "Manhwa Kool", "en")
|
||||
internal class ManhwaKool(context: MangaLoaderContext) : MadaraParser( context, MangaSource.MANHWAKOOL, "manhwakool.com", pageSize = 10,) {
|
||||
internal class ManhwaKool(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANHWAKOOL, "manhwakool.com", pageSize = 10) {
|
||||
|
||||
override val datePattern: String = "MMMM d, yyyy"
|
||||
}
|
||||
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("PARAGONSCANS", "Paragonscans", "en")
|
||||
internal class Paragonscans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PARAGONSCANS, "paragonscans.com", pageSize = 50) {
|
||||
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
@@ -7,4 +7,5 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("STKISSMANGA", "Stkissmanga", "en")
|
||||
internal class Stkissmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.STKISSMANGA, "1stkissmanga.me")
|
||||
internal class Stkissmanga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.STKISSMANGA, "1stkissmanga.me")
|
||||
|
||||
@@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("TOONILY", "Toonily", "en")
|
||||
internal class Toonily(context: MangaLoaderContext) : MadaraParser(context, MangaSource.TOONILY, "toonily.com", pageSize = 18,) {
|
||||
internal class Toonily(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.TOONILY, "toonily.com", pageSize = 18) {
|
||||
|
||||
override val tagPrefix = "webtoon-genre/"
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("TOPMANHUA", "Top Manhua", "en")
|
||||
internal class TopManhua(context: MangaLoaderContext) : MadaraParser(context, MangaSource.TOPMANHUA, "www.topmanhua.com") {
|
||||
internal class TopManhua(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.TOPMANHUA, "www.topmanhua.com") {
|
||||
|
||||
override val tagPrefix = "manhua-genre/"
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
|
||||
@@ -7,7 +7,6 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ZINMANGA", "ZINMANGA", "en")
|
||||
internal class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ZINMANGA, "zinmanga.com")
|
||||
{
|
||||
internal class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ZINMANGA, "zinmanga.com") {
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
|
||||
@@ -9,6 +9,5 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
internal class AiyuMangaScanlation(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.AIYUMANGASCANLATION, "aiyumangascanlation.com") {
|
||||
|
||||
override val tagPrefix = "manga-genre/"
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("APOLL_COMICS", "Apoll Comics", "es")
|
||||
internal class ApollComics(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.APOLL_COMICS, "apollcomics.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("COPYPASTESCAN", "Copypastescan", "es")
|
||||
internal class Copypastescan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.COPYPASTESCAN, "copypastescan.xyz", 10) {
|
||||
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("DAPROB", "Daprob", "es")
|
||||
internal class Daprob(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DAPROB, "daprob.com") {
|
||||
|
||||
override val datePattern = "d 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MUNDO_MANHWA", "Mundo Manhwa", "es")
|
||||
internal class MundoManhwa(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MUNDO_MANHWA, "mundomanhwa.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANGASORIGINES", "Mangas Origines", "fr")
|
||||
internal class MangasOrigines(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASORIGINES, "mangas-origines.xyz") {
|
||||
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("KOMIKSA", "Komiksay", "id")
|
||||
internal class Komiksay(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KOMIKSA, "komiksay.site") {
|
||||
|
||||
override val tagPrefix = "komik-genre/"
|
||||
override val datePattern = "MMMM d"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("WORLDMANHWAS", "Worldmanhwas", "id")
|
||||
internal class Worldmanhwas(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.WORLDMANHWAS, "worldmanhwas.bar", 10) {
|
||||
|
||||
override val tagPrefix = "komik-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
@MangaSourceParser("ARTHUR_SCAN", "Arthur Scan", "pt")
|
||||
internal class ArthurScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ARTHUR_SCAN, "arthurscan.xyz") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("ATLANTISSCAN", "Atlantisscan", "pt")
|
||||
internal class Atlantisscan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ATLANTISSCAN, "br.atlantisscan.com", pageSize = 10) {
|
||||
MadaraParser(context, MangaSource.ATLANTISSCAN, "br.atlantisscan.com", pageSize = 50) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
@MangaSourceParser("CERISE_SCANS", "Cerise Scans", "pt")
|
||||
internal class CeriseScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.CERISE_SCANS, "cerisescans.com") {
|
||||
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("NEOX_SCANS", "Neox scans", "pt")
|
||||
internal class Neoxscans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.NEOX_SCANS, "neoxscans.net", 18) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
internal class PrismaScansParser(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PRISMA_SCANS, "prismascans.net", 10) {
|
||||
|
||||
override val tagPrefix = "manga-genre/"
|
||||
override val datePattern = "MMM dd, yyyy"
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("PRISMA_HENTAI", "Prisma hentai", "pt")
|
||||
internal class Prismahentai(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PRISMA_HENTAI, "prismahentai.com", 18) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
}
|
||||
@@ -7,7 +7,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("BAKAMAN", "BakaMan", "th")
|
||||
internal class BakaMan(context: MangaLoaderContext) : MadaraParser( context, MangaSource.BAKAMAN, "bakaman.net", pageSize = 18,) {
|
||||
internal class BakaMan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.BAKAMAN, "bakaman.net", pageSize = 18) {
|
||||
|
||||
override val isNsfwSource = false
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANGAKEYFI", "Mangakeyfi", "tr")
|
||||
internal class Mangakeyfi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAKEYFI, "mangakeyfi.net", 20) {
|
||||
override val tagPrefix = "mangalar-genre/"
|
||||
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
override val sourceLocale: Locale = Locale("tr")
|
||||
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
|
||||
@MangaSourceParser("MANGASEHRI", "Mangasehri", "tr")
|
||||
internal class Mangasehri(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASEHRI, "mangasehri.com", 18) {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANGAWT", "Mangawt", "tr")
|
||||
internal class Mangawt(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAWT, "mangawt.com") {
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
override val sourceLocale: Locale = Locale("tr")
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("WEBTOONHATTI", "Webtoonhatti", "tr")
|
||||
internal class Webtoonhatti(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.WEBTOONHATTI, "webtoonhatti.com", 20) {
|
||||
override val tagPrefix = "webtoon-tur/"
|
||||
|
||||
override val datePattern = "d MMMM"
|
||||
override val sourceLocale: Locale = Locale("tr")
|
||||
|
||||
}
|
||||
@@ -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.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("WEBTOONTR", "Webtoontr", "tr")
|
||||
internal class Webtoontr(context: MangaLoaderContext) : MadaraParser(context, MangaSource.WEBTOONTR, "webtoon-tr.com", 16) {
|
||||
override val tagPrefix = "webtoon-kategori/"
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -14,7 +14,6 @@ import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
|
||||
|
||||
internal abstract class MangaReaderParser(
|
||||
context: MangaLoaderContext,
|
||||
source: MangaSource,
|
||||
@@ -61,38 +60,36 @@ internal abstract class MangaReaderParser(
|
||||
|
||||
val tagMap = getOrCreateTagMap()
|
||||
|
||||
val selecttag = if(tablemode != null)
|
||||
{
|
||||
val selecttag = if (tablemode != null) {
|
||||
tablemode.select(".seriestugenre > a")
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
docs.select(".wd-full .mgen > a")
|
||||
}
|
||||
|
||||
val tags = selecttag.mapNotNullToSet { tagMap[it.text()] }
|
||||
|
||||
|
||||
val stateselect = if(tablemode != null)
|
||||
{
|
||||
tablemode.selectFirst(".infotable td:contains(Status)") ?: tablemode.selectFirst(".infotable td:contains(Statut)")
|
||||
?: tablemode.selectFirst(".infotable td:contains(حالة العمل)") ?: tablemode.selectFirst(".infotable td:contains(Estado)")
|
||||
?: docs.selectFirst(".infotable td:contains(สถานะ)") ?: tablemode.selectFirst(".infotable td:contains(Stato )")
|
||||
?: tablemode.selectFirst(".infotable td:contains(Durum)") ?: tablemode.selectFirst(".infotable td:contains(Statüsü)")
|
||||
val stateselect = if (tablemode != null) {
|
||||
tablemode.selectFirst(".infotable td:contains(Status)")
|
||||
?: tablemode.selectFirst(".infotable td:contains(Statut)")
|
||||
?: tablemode.selectFirst(".infotable td:contains(حالة العمل)")
|
||||
?: tablemode.selectFirst(".infotable td:contains(Estado)")
|
||||
?: docs.selectFirst(".infotable td:contains(สถานะ)")
|
||||
?: tablemode.selectFirst(".infotable td:contains(Stato )")
|
||||
?: tablemode.selectFirst(".infotable td:contains(Durum)")
|
||||
?: tablemode.selectFirst(".infotable td:contains(Statüsü)")
|
||||
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
docs.selectFirst(".tsinfo div:contains(Status)") ?: docs.selectFirst(".tsinfo div:contains(Statut)")
|
||||
?: docs.selectFirst(".tsinfo div:contains(حالة العمل)") ?: docs.selectFirst(".tsinfo div:contains(Estado)")
|
||||
?: docs.selectFirst(".tsinfo div:contains(สถานะ)") ?: docs.selectFirst(".tsinfo div:contains(Stato )")
|
||||
?: docs.selectFirst(".tsinfo div:contains(Durum)") ?: docs.selectFirst(".tsinfo div:contains(Statüsü)")
|
||||
}
|
||||
|
||||
val state = if(tablemode != null)
|
||||
{
|
||||
val state = if (tablemode != null) {
|
||||
stateselect?.lastElementSibling()
|
||||
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
stateselect?.lastElementChild()
|
||||
}
|
||||
|
||||
@@ -104,28 +101,29 @@ internal abstract class MangaReaderParser(
|
||||
"Devam Ediyor", "Em Andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating",
|
||||
"Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "连载中",
|
||||
-> MangaState.ONGOING
|
||||
|
||||
"Completed", "Completo", "Complété", "Fini", "Terminé", "Tamamlandı", "Đã hoàn thành", "مكتملة", "Завершено",
|
||||
"Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结",
|
||||
-> MangaState.FINISHED
|
||||
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
val author = tablemode?.selectFirst(".infotable td:contains(Author)")?.lastElementSibling()?.text()?:
|
||||
docs.selectFirst(".tsinfo div:contains(Author)")?.lastElementChild()?.text() ?:
|
||||
docs.selectFirst(".tsinfo div:contains(Auteur)")?.lastElementChild()?.text() ?:
|
||||
docs.selectFirst(".tsinfo div:contains(Artist)")?.lastElementChild()?.text() ?:
|
||||
docs.selectFirst(".tsinfo div:contains(Durum)")?.lastElementChild()?.text()
|
||||
val author = tablemode?.selectFirst(".infotable td:contains(Author)")?.lastElementSibling()?.text()
|
||||
?: docs.selectFirst(".tsinfo div:contains(Author)")?.lastElementChild()?.text()
|
||||
?: docs.selectFirst(".tsinfo div:contains(Auteur)")?.lastElementChild()?.text()
|
||||
?: docs.selectFirst(".tsinfo div:contains(Artist)")?.lastElementChild()?.text()
|
||||
?: docs.selectFirst(".tsinfo div:contains(Durum)")?.lastElementChild()?.text()
|
||||
|
||||
val nsfw = docs.selectFirst(".restrictcontainer") != null
|
||||
|| docs.selectFirst(".info-right .alr") != null
|
||||
|| docs.selectFirst(".postbody .alr") != null
|
||||
|
||||
return manga.copy(
|
||||
description = tablemode?.selectFirst("div.entry-content")?.html() ?:
|
||||
docs.selectFirst("div.entry-content")?.html(),
|
||||
description = tablemode?.selectFirst("div.entry-content")?.html() ?: docs.selectFirst("div.entry-content")
|
||||
?.html(),
|
||||
state = mangaState,
|
||||
author = author,
|
||||
isNsfw = manga.isNsfw || nsfw,
|
||||
@@ -215,8 +213,7 @@ internal abstract class MangaReaderParser(
|
||||
val docs = webClient.httpGet(chapterUrl).parseHtml()
|
||||
|
||||
val test = docs.select("script:containsData(ts_reader)")
|
||||
if(test.isNullOrEmpty())
|
||||
{
|
||||
if (test.isNullOrEmpty()) {
|
||||
return docs.select("div#readerarea img").map { img ->
|
||||
val url = img.imageUrl()
|
||||
MangaPage(
|
||||
@@ -226,8 +223,7 @@ internal abstract class MangaReaderParser(
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}else
|
||||
{
|
||||
} else {
|
||||
val script = docs.selectFirstOrThrow("script:containsData(ts_reader)")
|
||||
val images = JSONObject(script.data().substringAfter('(').substringBeforeLast(')'))
|
||||
.getJSONArray("sources")
|
||||
@@ -250,8 +246,6 @@ internal abstract class MangaReaderParser(
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
override suspend fun getTags(): Set<MangaTag> {
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
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.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
@MangaSourceParser("GALAXYMANGA", "Galaxymanga", "ar")
|
||||
internal class Galaxymanga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.GALAXYMANGA, pageSize = 40, searchPageSize = 30) {
|
||||
|
||||
override val configKeyDomain: ConfigKey.Domain
|
||||
get() = ConfigKey.Domain("galaxymanga.org")
|
||||
|
||||
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR"))
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
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.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
@MangaSourceParser("MANGAATREND", "Mangaatrend", "ar")
|
||||
internal class Mangaatrend(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANGAATREND, pageSize = 40, searchPageSize = 20) {
|
||||
|
||||
override val configKeyDomain: ConfigKey.Domain
|
||||
get() = ConfigKey.Domain("mangaatrend.net")
|
||||
|
||||
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR"))
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
@MangaSourceParser("LUNAR_SCAN", "Lunar Scan", "en")
|
||||
internal class LunarScan(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.LUNAR_SCAN, pageSize = 20, searchPageSize = 20) {
|
||||
override val configKeyDomain: ConfigKey.Domain
|
||||
get() = ConfigKey.Domain("lunarscan.org")
|
||||
|
||||
override val listUrl = "/series"
|
||||
|
||||
override val isNsfwSource: Boolean = true
|
||||
|
||||
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH)
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
@MangaSourceParser("AYATOON", "Ayatoon", "tr")
|
||||
internal class Ayatoon(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.AYATOON, pageSize = 20, searchPageSize = 20) {
|
||||
override val configKeyDomain: ConfigKey.Domain
|
||||
get() = ConfigKey.Domain("ayatoon.com")
|
||||
|
||||
override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr"))
|
||||
}
|
||||
Reference in New Issue
Block a user