diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt index 9d63f27d..c1a5cd8f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt @@ -202,7 +202,7 @@ internal class BentomangaParser(context: MangaLoaderContext) : PagedMangaParser( private fun parseChapters(root: Element): List { return root.requireElementById("chapters_content") .select(".component-chapter").map { div -> - val a = div.selectFirstOrThrow("a") + val a = div.selectFirstOrThrow("a:not([style*='display:none'])") val href = a.attrAsRelativeUrl("href") val title = div.selectFirstOrThrow(".chapter_volume").text() val name = div.selectFirst(".chapter_title")?.textOrNull() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index f3eaf703..48c1ad30 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -51,11 +51,14 @@ internal abstract class MadaraParser( override val sortOrders: Set = EnumSet.of( SortOrder.UPDATED, SortOrder.POPULARITY, + SortOrder.NEWEST, + SortOrder.ALPHABETICAL, ) protected open val tagPrefix = "manga-genre/" protected open val isNsfwSource = false protected open val datePattern = "MMMM dd, yyyy" + protected open val stylepage = "?style=list" protected open val postreq = false @@ -87,6 +90,7 @@ internal abstract class MadaraParser( "En cours", "En cours \uD83D\uDFE2", "En cours de publication", + "Activo", "Đang tiến hành", "Em lançamento", "em lançamento", @@ -95,6 +99,7 @@ internal abstract class MadaraParser( "Publishing", "Devam Ediyor", "Em Andamento", + "Em andamento", "In Corso", "Güncel", "Berjalan", @@ -149,11 +154,19 @@ internal abstract class MadaraParser( val tag = tags.oneOrThrowIfMany() val payload = createRequestTemplate() payload["page"] = page.toString() - payload["vars[meta_key]"] = when (sortOrder) { - SortOrder.POPULARITY -> "_wp_manga_views" - SortOrder.UPDATED -> "_latest_update" - else -> "_wp_manga_views" + when (sortOrder) { + SortOrder.POPULARITY -> payload["vars[meta_key]"] = "_wp_manga_views" + SortOrder.UPDATED -> payload["vars[meta_key]"] = "_latest_update" + SortOrder.NEWEST -> payload["vars[meta_key]"] = "" + SortOrder.ALPHABETICAL -> { + payload["vars[orderby]"] = "post_title" + payload["vars[order]"] = "ASC" + } + + else -> payload["vars[meta_key]"] = "_latest_update" + } + payload["vars[wp-manga-genre]"] = tag?.key.orEmpty() payload["vars[s]"] = query?.urlEncoded().orEmpty() val doc = webClient.httpPost( @@ -183,9 +196,9 @@ internal abstract class MadaraParser( 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", "Ativo", "En Cours", "En cours", + "مستمرة", "En curso", "En Curso", "Ongoing", "OnGoing", "On going", "Ativo", "En Cours", "En cours", "Activo", "En cours \uD83D\uDFE2", "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", + "Онгоінг", "Publishing", "Devam Ediyor", "Em Andamento", "Em andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", "Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", "Devam ediyor", -> MangaState.ONGOING @@ -228,6 +241,12 @@ internal abstract class MadaraParser( } } + protected open val selectdesc = + "div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.post-content div.manga-summary, div.post-content div.desc, div.c-page__content div.summary__content" + protected open val selectgenre = "div.genres-content a" + protected open val selectdate = "span.chapter-release-date i" + protected open val selectchapter = "li.wp-manga-chapter" + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() @@ -240,23 +259,27 @@ internal abstract class MadaraParser( 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.post-content div.manga-summary") ?: doc.body() - .selectFirst("div.post-content div.desc") ?: doc.body() - .selectFirst("div.summary_content div.manga-excerpt") - + val desc = doc.select(selectdesc).let { + if (it.select("p").text().isNotEmpty()) { + it.select("p").joinToString(separator = "\n\n") { p -> + p.text().replace("
", "\n") + } + } else { + it.text() + } + } 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.summary-content").last() + .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(状态) > div.summary-content").last() ?: doc.body() + .select("div.summary-content").last() val state = stateselect?.let { @@ -267,20 +290,21 @@ internal abstract class MadaraParser( } } + val alt = + 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() + manga.copy( - tags = doc.body().select("div.genres-content a").mapNotNullToSet { a -> + tags = doc.body().select(selectgenre).mapNotNullToSet { a -> MangaTag( key = a.attr("href").removeSuffix("/").substringAfterLast('/'), title = a.text().toTitleCase(), source = source, ) }, - 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(), + description = desc, + altTitle = alt, state = state, chapters = chaptersDeferred.await(), ) @@ -289,10 +313,10 @@ internal abstract class MadaraParser( protected open suspend fun getChapters(manga: Manga, doc: Document): List { val root2 = doc.body().selectFirstOrThrow("div.content-area") val dateFormat = SimpleDateFormat(datePattern, sourceLocale) - return root2.select("li.wp-manga-chapter").mapChapters(reversed = true) { i, li -> + return root2.select(selectchapter).mapChapters(reversed = true) { i, li -> val a = li.selectFirst("a") val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") - val link = href + "?style=list" + val link = href + stylepage MangaChapter( id = generateUid(href), name = a.ownText(), @@ -300,7 +324,7 @@ internal abstract class MadaraParser( url = link, uploadDate = parseChapterDate( dateFormat, - li.selectFirst("span.chapter-release-date i")?.text(), + li.selectFirst(selectdate)?.text(), ), source = source, scanlator = null, @@ -323,19 +347,19 @@ internal abstract class MadaraParser( } val dateFormat = SimpleDateFormat(datePattern, sourceLocale) - return doc.select("li.wp-manga-chapter").mapChapters(reversed = true) { i, li -> + return doc.select(selectchapter).mapChapters(reversed = true) { i, li -> val a = li.selectFirst("a") val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") - val link = href + "?style=list" + val link = href + stylepage MangaChapter( id = generateUid(href), url = link, - name = a.text(), + name = a.ownText(), number = i + 1, branch = null, uploadDate = parseChapterDate( dateFormat, - li.selectFirst("span.chapter-release-date i")?.text(), + li.selectFirst(selectdate)?.text(), ), scanlator = null, source = source, @@ -370,6 +394,10 @@ internal abstract class MadaraParser( date.endsWith(" atrás", ignoreCase = true) -> { parseRelativeDate(date) } + // other translated 'ago' in Portuguese. + date.startsWith("há ", ignoreCase = true) -> { + parseRelativeDate(date) + } // Handle translated 'ago' in Turkish. date.endsWith(" önce", ignoreCase = true) -> { parseRelativeDate(date) @@ -390,10 +418,31 @@ internal abstract class MadaraParser( date.endsWith(" d", ignoreCase = true) -> { parseRelativeDate(date) } + //If there is no ago but just a motion of time + date.endsWith(" días", ignoreCase = true) -> { + parseRelativeDate(date) + } + + date.endsWith(" día", ignoreCase = true) -> { + parseRelativeDate(date) + } + + date.endsWith(" horas", ignoreCase = true) -> { + parseRelativeDate(date) + } + + date.endsWith(" hora", ignoreCase = true) -> { + parseRelativeDate(date) + } - date.endsWith(" mins", ignoreCase = true) -> { + date.endsWith(" minutos", ignoreCase = true) -> { parseRelativeDate(date) } + + date.endsWith(" minuto", ignoreCase = true) -> { + parseRelativeDate(date) + } + // Handle 'yesterday' and 'today', using midnight date.startsWith("year", ignoreCase = true) -> { Calendar.getInstance().apply { @@ -446,7 +495,7 @@ internal abstract class MadaraParser( "d", ).anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis - WordSet("jam", "saat", "heure", "hora", "hour", "h").anyWordIn(date) -> cal.apply { + WordSet("jam", "saat", "heure", "hora", "horas", "hour", "h").anyWordIn(date) -> cal.apply { add( Calendar.HOUR, -number, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt new file mode 100644 index 00000000..7ae47cbd --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt @@ -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 + +@MangaSourceParser("ARABTOONS", "Arab Toons", "ar") +internal class ArabToons(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ARABTOONS, "arabtoons.net") { + + override val isNsfwSource = true + override val datePattern = "dd-MM-yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt new file mode 100644 index 00000000..38004330 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt @@ -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("ASQORG", "3Asq", "ar") +internal class Asq(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ASQORG, "3asq.org") { + + override val datePattern = "d MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Azoranov.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Azoranov.kt index 911cdcee..0aa36716 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Azoranov.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Azoranov.kt @@ -5,7 +5,6 @@ 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) : @@ -13,5 +12,4 @@ internal class Azoranov(context: MangaLoaderContext) : override val tagPrefix = "novel-genre/" override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("ar", "AR") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt index 13138bab..7495e43c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt @@ -5,7 +5,6 @@ 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("GATEMANGA", "Gate Manga", "ar") internal class GateManga(context: MangaLoaderContext) : @@ -13,5 +12,4 @@ internal class GateManga(context: MangaLoaderContext) : override val postreq = true override val datePattern = "d MMMM، yyyy" - override val sourceLocale: Locale = Locale("ar", "AR") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLek.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLek.kt index 9687732b..3df25c03 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLek.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLek.kt @@ -7,7 +7,5 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALEK", "MangaLek", "ar") -internal class MangaLek(context: MangaLoaderContext) : MadaraParser( - context, MangaSource.MANGALEK, "mangalek.com", - pageSize = 20, -) +internal class MangaLek(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGALEK, "mangalek.com", pageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt new file mode 100644 index 00000000..5825a973 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt @@ -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("MANGALIONZ", "Manga Lionz", "ar") +internal class MangaLionz(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGALIONZ, "mangalionz.com", pageSize = 10) { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt new file mode 100644 index 00000000..5de98012 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt @@ -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("MANGASTARZ", "Manga Starz", "ar") +internal class MangaStarz(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGASTARZ, "mangastarz.com", pageSize = 10) { + + override val datePattern = "d MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt new file mode 100644 index 00000000..24caac6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt @@ -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 + +@MangaSourceParser("MANGASPARK", "Mangaspark", "ar") +internal class Mangaspark(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGASPARK, "mangaspark.com", pageSize = 10) { + + override val postreq = true + override val datePattern = "d MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt new file mode 100644 index 00000000..e6d3f458 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt @@ -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("MANHATIC", "Manhatic", "ar") +internal class Manhatic(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANHATIC, "manhatic.com") { + + override val isNsfwSource = true + override val datePattern = "MMMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt new file mode 100644 index 00000000..005dff8a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt @@ -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 + +@MangaSourceParser("NIJITRANSLATIONS", "Niji Translations", "ar") +internal class NijiTranslations(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.NIJITRANSLATIONS, "niji-translations.com") { + + override val postreq = true + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt new file mode 100644 index 00000000..4bac41cb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt @@ -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("NOVELSTOWN", "Novelstown", "ar") +internal class Novelstown(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.NOVELSTOWN, "novelstown.cyou") { + + override val datePattern = "d MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt index 4f78264c..9f1a7043 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt @@ -5,12 +5,10 @@ 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("WEBTOONEMPIRE", "Webtoon Empire", "ar") internal class WebtoonEmpire(context: MangaLoaderContext) : MadaraParser(context, MangaSource.WEBTOONEMPIRE, "webtoonempire.org", pageSize = 10) { override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale("ar", "AR") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt new file mode 100644 index 00000000..af3a93e6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt @@ -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 + +@MangaSourceParser("IMMORTALUPDATES", "Immortal Updates", "en") +internal class ImmortalUpdates(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.IMMORTALUPDATES, "immortalupdates.com") { + + override val datePattern = "MMMM d, yyyy" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt new file mode 100644 index 00000000..d989b8d2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt @@ -0,0 +1,172 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.host +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.mapNotNullToSet +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.removeSuffix +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.toTitleCase +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.text.SimpleDateFormat +import java.util.EnumSet + +@MangaSourceParser("ISEKAISCAN", "Isekai Scan", "en") +internal class IsekaiScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ISEKAISCAN, "isekaiscan.top", 16) { + + override val tagPrefix = "mangas/" + override val datePattern = "MMMM d, HH:mm" + + override val sortOrders: Set = EnumSet.of( + SortOrder.POPULARITY, + SortOrder.UPDATED, + ) + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + + append("/?search=") + append(query.urlEncoded()) + append("&page=") + append(pages.toString()) + append("&post_type=wp-manga") + } + + !tags.isNullOrEmpty() -> { + append("/mangas/") + for (tag in tags) { + append(tag.key) + } + + append("?orderby=2&page=") + append(pages.toString()) + + } + + else -> { + + if (sortOrder == SortOrder.POPULARITY) { + append("/popular-manga") + } + if (sortOrder == SortOrder.UPDATED) { + append("/latest-manga") + } + append("?page=") + append(pages.toString()) + } + } + } + val doc = webClient.httpGet(url).parseHtml() + return doc.select("div.row.c-tabs-item__content").ifEmpty { + doc.select("div.page-item-detail.manga") + }.map { div -> + val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img")?.src().orEmpty(), + title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix('/').substringAfterLast('/'), + title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(), + source = source, + ) + }.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", "Ativo", "En Cours", "En cours", "Activo", + "En cours \uD83D\uDFE2", "En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", + "Онгоінг", "Publishing", "Devam Ediyor", "Em Andamento", "Em andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", + "Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", + "Devam ediyor", + -> MangaState.ONGOING + + "Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành", "مكتملة", + "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结", "Bitmiş", + -> MangaState.FINISHED + + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } + + override suspend fun loadChapters(mangaUrl: String, document: Document): List { + + + val mangaId = document.select("div[id^=manga-chapters-holder]").attr("data-id") + + val doc = webClient.httpGet("https://$domain/ajax-list-chapter?mangaID=$mangaId").parseHtml() + + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + + return doc.select(selectchapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylepage + MangaChapter( + id = generateUid(href), + url = link, + name = a.ownText(), + number = i + 1, + branch = null, + uploadDate = parseChapterDate( + dateFormat, + li.selectFirst(selectdate)?.text(), + ), + scanlator = null, + source = source, + ) + } + } + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val urlarray = doc.select("p#arraydata").text().split(",").toTypedArray() + return urlarray.map { url -> + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt new file mode 100644 index 00000000..98b49741 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt @@ -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 + +@MangaSourceParser("ITSYOURIGHTMANHUA", "Itsyourightmanhua", "en") +internal class Itsyourightmanhua(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ITSYOURIGHTMANHUA, "itsyourightmanhua.com", 10) { + + override val datePattern = "MMMM d, yyyy" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt new file mode 100644 index 00000000..4798b7f2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt @@ -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 + +@MangaSourceParser("KSGROUPSCANS", "Ks Group Scans", "en") +internal class KsGroupScans(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KSGROUPSCANS, "ksgroupscans.com") { + + override val datePattern = "MMMM d, yyyy" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt new file mode 100644 index 00000000..503ef637 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt @@ -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 + +@MangaSourceParser("KUNMANGA", "Kun Manga", "en") +internal class KunManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KUNMANGA, "kunmanga.com", 10) { + + override val datePattern = "MMMM d, yyyy" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LadyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LadyManga.kt new file mode 100644 index 00000000..f05b4f9b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LadyManga.kt @@ -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("LADYMANGA", "Lady Manga", "en") +internal class LadyManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LADYMANGA, "ladymanga.com") { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt new file mode 100644 index 00000000..733be282 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt @@ -0,0 +1,16 @@ +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("LILYMANGA", "LilyManga", "en") +internal class LilyManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LILYMANGA, "lilymanga.net") { + + override val isNsfwSource = true + override val tagPrefix = "ys-genre/" + override val datePattern = "yyyy-MM-dd" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt new file mode 100644 index 00000000..30e5325b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt @@ -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 + +@MangaSourceParser("LOLICONMOBI", "LoliconMobi", "en") +internal class LoliconMobi(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LOLICONMOBI, "lolicon.mobi") { + + override val postreq = true + override val isNsfwSource = true + override val tagPrefix = "lolicon-genre/" + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt new file mode 100644 index 00000000..169f0ad3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt @@ -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("LUXMANGA", "LuxManga", "en") +internal class LuxManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LUXMANGA, "luxmanga.net") { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt new file mode 100644 index 00000000..6a880368 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt @@ -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("MANGAACTION", "Manga Action", "en") +internal class MangaAction(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAACTION, "mangaaction.com") { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaGalaxy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaGalaxy.kt new file mode 100644 index 00000000..36ea0c74 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaGalaxy.kt @@ -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("MANGAGALAXY", "Manga Galaxy", "en") +internal class MangaGalaxy(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAGALAXY, "mangagalaxy.me", 16) { + + override val datePattern = "MM/dd/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangastic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangastic.kt new file mode 100644 index 00000000..9a1a92be --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangastic.kt @@ -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("MANGASTIC", "Mangastic", "en") +internal class Mangastic(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGASTIC, "mangastic.cc", 20) { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt new file mode 100644 index 00000000..59563493 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt @@ -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("TOONCHILL", "Toon Chill", "en") +internal class ToonChill(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TOONCHILL, "toonchill.com", 32) { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt index d7b025ae..89c63d9c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt @@ -4,12 +4,10 @@ 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") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt index 379a7dfc..510a0742 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt @@ -4,12 +4,10 @@ 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") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt index 553d4d3a..7c82ae59 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt @@ -4,12 +4,10 @@ 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") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DokkoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DokkoManga.kt index 194f9b0a..35dd647b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DokkoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DokkoManga.kt @@ -4,12 +4,10 @@ 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("DOKKOMANGA", "Dokko Manga", "es") internal class DokkoManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.DOKKOMANGA, "dokkomanga.com", 10) { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("es") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt index 7a7898cf..d5b63a9e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt @@ -4,12 +4,10 @@ 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("EMPERORSCAN", "Emperor Scan", "es") internal class EmperorScan(context: MangaLoaderContext) : MadaraParser(context, MangaSource.EMPERORSCAN, "dokkomanga.com") { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("es") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Eromiau.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Eromiau.kt index 52f9cab4..c7d7d829 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Eromiau.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Eromiau.kt @@ -4,7 +4,6 @@ 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("EROMIAU", "Eromiau", "es") internal class Eromiau(context: MangaLoaderContext) : @@ -12,5 +11,4 @@ internal class Eromiau(context: MangaLoaderContext) : override val isNsfwSource = true override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("es") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt index bc4785ee..9cef5ab4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt @@ -4,12 +4,10 @@ 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("HERENSCAN", "Heren Scan", "es") internal class HerenScan(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HERENSCAN, "herenscan.com") { override val datePattern = "d 'de' MMMMM 'de' yyyy" - override val sourceLocale: Locale = Locale("es") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt new file mode 100644 index 00000000..fcda93d4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt @@ -0,0 +1,14 @@ +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 + + +@MangaSourceParser("INFRAFANDUB", "infrafandub", "es") +internal class Infrafandub(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.INFRAFANDUB, "infrafandub.xyz", 10) { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt new file mode 100644 index 00000000..b750b6d5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAMUNDODRAMA", "Manga Mundo Drama", "es") +internal class MangaMundoDrama(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAMUNDODRAMA, "inmortalscan.com") { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangapt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangapt.kt new file mode 100644 index 00000000..6bc3066e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangapt.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAPT", "Mangapt", "es") +internal class Mangapt(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAPT, "mangapt.com") { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt index efee4a55..b1d81107 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt @@ -4,12 +4,10 @@ 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") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt new file mode 100644 index 00000000..e605d5ac --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("NOBLESSETRANSLATIONS", "Noblesse Translations", "es") +internal class NoblesseTranslations(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.NOBLESSETRANSLATIONS, "www.noblessetranslations.com") { + + override val datePattern = "d MMMM, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt new file mode 100644 index 00000000..13d84d76 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RAGNAROKSCAN", "Ragnarok Scan", "es") +internal class RagnarokScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RAGNAROKSCAN, "ragnarokscan.com") { + + override val stylepage = "" + override val tagPrefix = "genero/" + override val datePattern = "MMMM d, yyyy" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt new file mode 100644 index 00000000..2d717d54 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RAGNAROKSCANLATION", "Ragnarok Scanlation", "es") +internal class RagnarokScanlation(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RAGNAROKSCANLATION, "ragnarokscanlation.com") { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt new file mode 100644 index 00000000..32e4f604 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SAMURAISCAN", "Samurai Scan", "es") +internal class SamuraiScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.SAMURAISCAN, "samuraiscan.com", 10) { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt new file mode 100644 index 00000000..e8313bb8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SCAMBERTRASLATOR", "Scambertraslator", "es") +internal class Scambertraslator(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.SCAMBERTRASLATOR, "scambertraslator.com") { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TecnoScann.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TecnoScann.kt new file mode 100644 index 00000000..0890c5bd --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TecnoScann.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("TECNOSCANN", "TecnoScann", "es") +internal class TecnoScann(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TECNOSCANN, "tecnoscann.com", 24) { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt new file mode 100644 index 00000000..dd0d8c4c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt @@ -0,0 +1,137 @@ +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.Manga +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.host +import org.koitharu.kotatsu.parsers.util.mapNotNullToSet +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.removeSuffix +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.toTitleCase +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.util.EnumSet + +@MangaSourceParser("VERMANHWA", "Vermanhwa", "es") +internal class Vermanhwa(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.VERMANHWA, "vermanhwa.es", 10) { + + override val isNsfwSource = true + override val datePattern = "MMMM d, yyyy" + + override val sortOrders: Set = EnumSet.of( + SortOrder.NEWEST, + SortOrder.ALPHABETICAL, + SortOrder.RATING, + SortOrder.POPULARITY, + SortOrder.UPDATED, + + + ) + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + append("/page/") + append(pages.toString()) + append("/?s=") + append(query.urlEncoded()) + append("&post_type=wp-manga") + } + + !tags.isNullOrEmpty() -> { + append("/manga-genre/") + for (tag in tags) { + append(tag.key) + } + append("/page/") + append(pages.toString()) + } + + else -> { + + append("/manga/") + append("/page/") + append(pages.toString()) + append("?m_orderby=") + if (sortOrder == SortOrder.NEWEST) { + append("new-manga") + } + if (sortOrder == SortOrder.ALPHABETICAL) { + append("alphabet") + } + if (sortOrder == SortOrder.RATING) { + append("rating") + } + if (sortOrder == SortOrder.POPULARITY) { + append("views") + } + if (sortOrder == SortOrder.UPDATED) { + append("latest") + } + + } + } + } + val doc = webClient.httpGet(url).parseHtml() + return doc.select("div.row.c-tabs-item__content").ifEmpty { + doc.select("div.page-item-detail.manga") + }.map { div -> + val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img")?.src().orEmpty(), + title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix('/').substringAfterLast('/'), + title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(), + source = source, + ) + }.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", "Ativo", "En Cours", "En cours", "Activo", + "En cours \uD83D\uDFE2", "En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", + "Онгоінг", "Publishing", "Devam Ediyor", "Em Andamento", "Em andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", + "Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", + "Devam ediyor", + -> MangaState.ONGOING + + "Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành", "مكتملة", + "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结", "Bitmiş", + -> MangaState.FINISHED + + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt index ac2c34a6..72d91ba8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt @@ -11,5 +11,4 @@ internal class AstralManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ASTRALMANGA, "astral-manga.fr", pageSize = 12) { override val datePattern = "dd/MM/yyyy" - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt index 2ef10012..2e99d276 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt @@ -4,13 +4,10 @@ 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("FRSCAN", "FrScan", "fr") internal class FrScan(context: MangaLoaderContext) : MadaraParser(context, MangaSource.FRSCAN, "fr-scan.com") { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale.FRENCH - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt index ca79a96c..3555e68e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt @@ -1,20 +1,9 @@ package org.koitharu.kotatsu.parsers.site.madara.fr -import kotlinx.coroutines.async -import kotlinx.coroutines.coroutineScope import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.mapNotNullToSet -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl -import org.koitharu.kotatsu.parsers.util.toTitleCase -import java.util.Locale @MangaSourceParser("HENTAISCANTRADVF", "Hentai-Scantrad", "fr") internal class HentaiScantradVf(context: MangaLoaderContext) : @@ -22,42 +11,4 @@ internal class HentaiScantradVf(context: MangaLoaderContext) : override val isNsfwSource = true override val datePattern = "d MMMM, yyyy" - override val sourceLocale: Locale = Locale.FRENCH - - override suspend fun getDetails(manga: Manga): Manga = coroutineScope { - val fullUrl = manga.url.toAbsoluteUrl(domain) - val doc = webClient.httpGet(fullUrl).parseHtml() - - val chaptersDeferred = async { loadChapters(manga.url, doc) } - - val stateselect = doc.body().select("div.summary-content").last() - val state = - stateselect?.let { - when (it.text()) { - in ongoing -> MangaState.ONGOING - in finished -> MangaState.FINISHED - else -> null - } - } - - val desc = doc.body().selectFirst("div.description-summary div.summary__content")?.text() - ?: doc.body() .selectFirst("div.datas_synopsis")?.text() - - manga.copy( - tags = doc.body().select("div.genres-content a").mapNotNullToSet { a -> - MangaTag( - key = a.attr("href").removeSuffix("/").substringAfterLast('/'), - title = a.text().toTitleCase(), - source = source, - ) - }, - description = desc, - 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(), - state = state, - chapters = chaptersDeferred.await(), - ) - } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt index 30a00639..6b7e666e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt @@ -6,16 +6,12 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.insertCookies -import java.util.Locale - @MangaSourceParser("HHENTAIFR", "HhentaiFr", "fr") internal class HhentaiFr(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HHENTAIFR, "hhentai.fr") { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale.FRENCH - override val isNsfwSource = true init { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/KaratcamScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/KaratcamScans.kt new file mode 100644 index 00000000..07a4f56e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/KaratcamScans.kt @@ -0,0 +1,14 @@ +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 + +@MangaSourceParser("KARATCAMSCANS", "Karatcam Scans", "fr") +internal class KaratcamScans(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KARATCAMSCANS, "karatcam-scans.fr") { + + override val tagPrefix = "webtoon-genre/" + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt new file mode 100644 index 00000000..1a704546 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt @@ -0,0 +1,14 @@ +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 + +@MangaSourceParser("MANGAHUB", "Manga Hub", "fr") +internal class MangaHub(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAHUB, "mangahub.fr") { + + override val isNsfwSource = true + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt index 68797b88..a1dd612c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt @@ -4,13 +4,10 @@ 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("MANGA_SCANTRAD", "Manga Scantrad", "fr") internal class MangaScantrad(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGA_SCANTRAD, "manga-scantrad.io") { override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale.FRENCH - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantradUnofficial.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantradUnofficial.kt new file mode 100644 index 00000000..40100502 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantradUnofficial.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGASCANTRADUNOFFICIAL", "Manga Scantrad ( Unofficial )", "fr") +internal class MangaScantradUnofficial(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGASCANTRADUNOFFICIAL, "www.mangascantrad.fr", 10) { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt index 2e67e871..47a24b71 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt @@ -4,12 +4,10 @@ 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.fr") { override val datePattern = "dd/MM/yyyy" - override val sourceLocale: Locale = Locale.FRENCH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt index 06ecbc40..b0ae1b67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt @@ -4,14 +4,10 @@ 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("MANGASORIGINESUNOFFICIAL", "Mangas Origines ( unofficial )", "fr") internal class MangasOriginesUnofficial(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGASORIGINESUNOFFICIAL, "mangas-origines.xyz") { - override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale.FRENCH - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt index 5b21186b..6494a7c0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt @@ -4,12 +4,10 @@ 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("PANTHEONSCAN", "Pantheon Scan", "fr") internal class PantheonScan(context: MangaLoaderContext) : MadaraParser(context, MangaSource.PANTHEONSCAN, "pantheon-scan.com") { override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale.FRENCH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt new file mode 100644 index 00000000..cdb56675 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RAIJINSCANS", "Raijin Scans", "fr") +internal class RaijinScans(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RAIJINSCANS, "raijinscans.fr") { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt index e76bc9b2..2d3c56d7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt @@ -4,7 +4,6 @@ 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("SCANHENTAIMENU", "Scan Hentai Menu", "fr") internal class ScanHentaiMenu(context: MangaLoaderContext) : @@ -12,5 +11,4 @@ internal class ScanHentaiMenu(context: MangaLoaderContext) : override val isNsfwSource = true override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale.FRENCH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt index 0c11ed32..95dda2ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt @@ -10,6 +10,5 @@ internal class ScantradVf(context: MangaLoaderContext) : MadaraParser(context, MangaSource.SCANTRADVF, "scantrad-vf.co") { override val datePattern = "d MMMM yyyy" - override val tagPrefix = "genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt new file mode 100644 index 00000000..358e3cfe --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt @@ -0,0 +1,63 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.jsoup.nodes.Document +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.removeSuffix +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import java.text.SimpleDateFormat + +@MangaSourceParser("TOONFR", "Toon Fr", "fr") +internal class ToonFr(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TOONFR, "toonfr.com") { + + override val isNsfwSource = true + override val tagPrefix = "webtoon-genre/" + override val datePattern = "MMM d" + + override suspend fun loadChapters(mangaUrl: String, document: Document): List { + val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/" + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val doc = webClient.httpPost(url, emptyMap()).parseHtml() + + return doc.select("li.wp-manga-chapter").mapChapters(reversed = true) { i, li -> + val a = li.selectFirstOrThrow("a") + val href = a.attrAsRelativeUrl("href") + "?style=list" + + // correct parse date missing a "." + val date_org = li.selectFirst("span.chapter-release-date i")?.text() ?: "janv 1, 2000" + val date_corect_parse = date_org + .replace("Jan", "janv.") + .replace("Févr", "févr.") + .replace("Avr", "avr.") + .replace("Juil", "juil.") + .replace("Sept", "sept.") + .replace("Nov", "nov.") + .replace("Oct", "oct.") + .replace("Déc", "déc.") + MangaChapter( + id = generateUid(href), + url = href, + name = a.text(), + number = i + 1, + branch = null, + uploadDate = parseChapterDate( + dateFormat, + date_corect_parse, + ), + scanlator = null, + source = source, + ) + } + } +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt new file mode 100644 index 00000000..25b691f2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt @@ -0,0 +1,15 @@ +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 + +@MangaSourceParser("KLIKMANGA", "Klik Manga", "id") +internal class KlikManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KLIKMANGA, "klikmanga.id", 36) { + + override val isNsfwSource = true + override val tagPrefix = "genre/" + override val datePattern = "MMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt new file mode 100644 index 00000000..c5ab302f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt @@ -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("MGKOMIK", "Mgkomik", "id") +internal class Mgkomik(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MGKOMIK, "mgkomik.com", 20) { + + override val tagPrefix = "genres/" + override val datePattern = "dd MMM yy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt new file mode 100644 index 00000000..85db3a9c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt @@ -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("POJOKMANGA", "PojokManga", "id") +internal class PojokManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.POJOKMANGA, "pojokmanga.net") { + + override val tagPrefix = "komik-genre/" + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt new file mode 100644 index 00000000..14077ad5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt @@ -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("SHINIGAMI", "Shinigami", "id") +internal class Shinigami(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.SHINIGAMI, "shinigami.id", 10) { + + override val tagPrefix = "genre/" + override val datePattern = "MMMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt new file mode 100644 index 00000000..f25e98cc --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.ko + +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("RAWDEX", "Raw Dex", "ko") +internal class RawDex(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RAWDEX, "rawdex.net", 40) { + + override val isNsfwSource = true + override val datePattern = "MMMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt index a61e359e..9b1f4e0e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt @@ -4,14 +4,10 @@ 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") - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atlantisscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atlantisscan.kt index 3bc6594e..821085ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atlantisscan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atlantisscan.kt @@ -5,11 +5,9 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource 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 = 50) { override val datePattern = "dd/MM/yyyy" - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt index 0d6fb1e4..2173608a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt @@ -5,7 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - @MangaSourceParser("CABAREDOWATAME", "Dessert Scan", "pt") internal class Cabaredowatame(context: MangaLoaderContext) : MadaraParser(context, MangaSource.CABAREDOWATAME, "cabaredowatame.site", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt index bcd5623d..abfd92cf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt @@ -5,7 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - @MangaSourceParser("CAFECOMYAOI", "Cafecom Yaoi", "pt") internal class CafecomYaoi(context: MangaLoaderContext) : MadaraParser(context, MangaSource.CAFECOMYAOI, "cafecomyaoi.com.br") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt index 61ec391d..fdf881b8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt @@ -4,13 +4,10 @@ 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") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FinalScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FinalScans.kt index c96525da..b53cd6c2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FinalScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FinalScans.kt @@ -4,14 +4,11 @@ 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("FINALSCANS", "Final Scans", "pt") internal class FinalScans(context: MangaLoaderContext) : MadaraParser(context, MangaSource.FINALSCANS, "finalscans.com") { override val datePattern: String = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("pt", "PT") override val isNsfwSource = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt index 53c29bcc..58cab6c5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt @@ -4,13 +4,10 @@ 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("FOXWHITE", "Fox White", "pt") internal class FoxWhite(context: MangaLoaderContext) : MadaraParser(context, MangaSource.FOXWHITE, "foxwhite.com.br") { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("pt", "PT") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Gekkou.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Gekkou.kt index 7b0864dd..f5f238e9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Gekkou.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Gekkou.kt @@ -4,8 +4,6 @@ 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("GEKKOU", "Gekkou", "pt") internal class Gekkou(context: MangaLoaderContext) : @@ -13,5 +11,4 @@ internal class Gekkou(context: MangaLoaderContext) : override val tagPrefix = "genero/" override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" - override val sourceLocale: Locale = Locale("pt", "PT") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt index 0eaa95ea..22f1746b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt @@ -5,7 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - @MangaSourceParser("GOOFFANSUB", "Goof Fansub", "pt") internal class GoofFansub(context: MangaLoaderContext) : MadaraParser(context, MangaSource.GOOFFANSUB, "gooffansub.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HentaiGekkou.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HentaiGekkou.kt index 81da2eab..ded14ce0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HentaiGekkou.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HentaiGekkou.kt @@ -4,8 +4,6 @@ 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("HENTAIGEKKOU", "Hentai Gekkou", "pt") internal class HentaiGekkou(context: MangaLoaderContext) : @@ -13,6 +11,5 @@ internal class HentaiGekkou(context: MangaLoaderContext) : override val tagPrefix = "genero/" override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" - override val sourceLocale: Locale = Locale("pt", "PT") override val isNsfwSource = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt index f5a52886..f5eadda1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt @@ -10,8 +10,6 @@ internal class Hentaiteca(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HENTAITECA, "hentaiteca.net", pageSize = 10) { override val datePattern = "MM/dd/yyyy" - override val tagPrefix = "genero/" - override val isNsfwSource = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt index b1db364a..1eecb350 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt @@ -5,15 +5,11 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - @MangaSourceParser("HIPERCOOL", "Hipercool", "pt") internal class Hipercool(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HIPERCOOL, "hipercool.xyz", pageSize = 20) { override val datePattern = "MMMM d, yyyy" - override val tagPrefix = "manga-tag/" - override val isNsfwSource = true - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt new file mode 100644 index 00000000..a0aed68e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt @@ -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("ILLUSIONSCAN", "Illusion Scan", "pt") +internal class IllusionScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ILLUSIONSCAN, "illusionscan.com") { + + override val isNsfwSource = true + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt new file mode 100644 index 00000000..e0bb6a67 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt @@ -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("IMPERIOSCANS", "Imperio Scans", "pt") +internal class ImperioScans(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.IMPERIOSCANS, "imperioscans.com.br") { + + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt new file mode 100644 index 00000000..8fe97e05 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt @@ -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("LEITORKAMISAMA", "Leitor Kamisama", "pt") +internal class LeitorKamisama(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LEITORKAMISAMA, "leitor.kamisama.com.br", 10) { + + override val tagPrefix = "manga-tag/" + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt new file mode 100644 index 00000000..ddfcc3a6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt @@ -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 + +@MangaSourceParser("LERYAOI", "LerYaoi", "pt") +internal class LerYaoi(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LERYAOI, "leryaoi.com", 10) { + + override val isNsfwSource = true + override val tagPrefix = "genero/" + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt new file mode 100644 index 00000000..d10a078e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt @@ -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("MOMONOHANASCAN", "Momonohana Scan", "pt") +internal class MomonohanaScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MOMONOHANASCAN, "momonohanascan.com", 10) { + + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt new file mode 100644 index 00000000..191e4c5c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt @@ -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("MOONLOVERSSCAN", "Moon Lovers Scan", "pt") +internal class MoonLoversScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MOONLOVERSSCAN, "moonloversscan.com.br", 10) { + + override val isNsfwSource = true + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt new file mode 100644 index 00000000..18c8c818 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt @@ -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("MOONWITCHINLOVESCAN", "Moon Witchin Love Scan", "pt") +internal class Moonwitchinlovescan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MOONWITCHINLOVESCAN, "moonwitchinlovescan.com", 10) { + + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt index b02ba378..60adabbc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt @@ -4,13 +4,10 @@ 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("NOCSUMMER", "Nocturne Summer", "pt") internal class Nocsummer(context: MangaLoaderContext) : MadaraParser(context, MangaSource.NOCSUMMER, "nocsummer.com.br", 18) { override val datePattern = "dd 'de' MMMMM 'de' yyyy" - override val sourceLocale: Locale = Locale("pt", "PT") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt new file mode 100644 index 00000000..f7927a82 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt @@ -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("NOINDEXSCAN", "Noindex Scan", "pt") +internal class NoindexScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.NOINDEXSCAN, "noindexscan.com") { + + override val isNsfwSource = true + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PeachScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PeachScan.kt new file mode 100644 index 00000000..7f17afae --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PeachScan.kt @@ -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("PEACHSCAN", "Peach Scan", "pt") +internal class PeachScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.PEACHSCAN, "www.peachscan.com", 10) { + + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt new file mode 100644 index 00000000..fc1056a4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt @@ -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 + +@MangaSourceParser("PIRULITOROSA", "Pirulitorosa", "pt") +internal class Pirulitorosa(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.PIRULITOROSA, "pirulitorosa.site") { + + override val postreq = true + override val isNsfwSource = true + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt new file mode 100644 index 00000000..e672d479 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt @@ -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 + +@MangaSourceParser("PORTALYAOI", "PortalYaoi", "pt") +internal class PortalYaoi(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.PORTALYAOI, "portalyaoi.com", 10) { + + override val isNsfwSource = true + override val tagPrefix = "genero/" + override val datePattern: String = "dd/MM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt index 78c4118d..1d2c7c02 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt @@ -4,12 +4,10 @@ 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") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt new file mode 100644 index 00000000..c7672d40 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt @@ -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("PROJETOSCANLATOR", "Projeto Scanlator", "pt") +internal class ProjetoScanlator(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.PROJETOSCANLATOR, "projetoscanlator.com", 10) { + + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt new file mode 100644 index 00000000..b64ecf86 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt @@ -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 + +@MangaSourceParser("PSUNICORN", "Psunicorn", "pt") +internal class Psunicorn(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.PSUNICORN, "psunicorn.com") { + + + override val isNsfwSource = true + override val datePattern: String = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt new file mode 100644 index 00000000..1a1371c5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt @@ -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("RAINBOWFAIRYSCAN", "Rainbow Fairy Scan", "pt") +internal class RainbowFairyScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RAINBOWFAIRYSCAN, "rainbowfairyscan.com", 10) { + + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RandomScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RandomScans.kt new file mode 100644 index 00000000..77d3c6d3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RandomScans.kt @@ -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("RANDOMSCANS", "Random Scans", "pt") +internal class RandomScans(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RANDOMSCANS, "randomscans.com") { + + override val datePattern: String = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt new file mode 100644 index 00000000..2b9bc1b4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt @@ -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("ROGMANGAS", "Rog Mangas", "pt") +internal class RogMangas(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ROGMANGAS, "rogmangas.com", 51) { + + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt new file mode 100644 index 00000000..5f529a65 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt @@ -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 + +@MangaSourceParser("TANKOUHENTAI", "Tankou Hentai", "pt") +internal class TankouHentai(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TANKOUHENTAI, "tankouhentai.com", pageSize = 16) { + + override val isNsfwSource = true + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TheSugarScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TheSugarScan.kt new file mode 100644 index 00000000..dee88923 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TheSugarScan.kt @@ -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 + +@MangaSourceParser("THESUGARSCAN", "The Sugar Scan", "pt") +internal class TheSugarScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.THESUGARSCAN, "thesugarscan.com", pageSize = 15) { + + override val isNsfwSource = true + override val datePattern: String = "dd/MM/yyyy" + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt new file mode 100644 index 00000000..8eb16041 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt @@ -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 + +@MangaSourceParser("VALKYRIESCAN", "Valkyrie Scan", "pt") +internal class ValkyrieScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.VALKYRIESCAN, "valkyriescan.com", pageSize = 10) { + + override val isNsfwSource = true + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt new file mode 100644 index 00000000..0838283d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt @@ -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("WINTERSCAN", "Winter Scan", "pt") +internal class WinterScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.WINTERSCAN, "winterscan.com", pageSize = 20) { + + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt new file mode 100644 index 00000000..7ecec2c1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt @@ -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("WONDERLANDSCAN", "Wonderland Scan", "pt") +internal class WonderlandScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.WONDERLANDSCAN, "wonderlandscan.com") { + + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Yaoitoshokan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Yaoitoshokan.kt new file mode 100644 index 00000000..b6063528 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Yaoitoshokan.kt @@ -0,0 +1,16 @@ +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("YAOITOSHOKAN", "Yaoitoshokan", "pt") +internal class Yaoitoshokan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.YAOITOSHOKAN, "www.yaoitoshokan.net", 18) { + + override val isNsfwSource = true + override val tagPrefix = "genero/" + override val datePattern: String = "d MMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt new file mode 100644 index 00000000..080bb9db --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt @@ -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 + +@MangaSourceParser("YCSCAN", "Ycscan", "pt") +internal class Ycscan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.YCSCAN, "ycscan.com", 20) { + + override val isNsfwSource = true + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YugenMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YugenMangas.kt new file mode 100644 index 00000000..6957162c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YugenMangas.kt @@ -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("YUGENMANGAS", "Yugen Mangas", "pt") +internal class YugenMangas(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.YUGENMANGAS, "yugenmangas.com.br", 10) { + + override val datePattern: String = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt new file mode 100644 index 00000000..e1364cab --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt @@ -0,0 +1,16 @@ +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("YURILIVE", "Yuri Live", "pt") +internal class YuriLive(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.YURILIVE, "yuri.live") { + + override val isNsfwSource = true + override val tagPrefix = "manga-genero/" + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ZeroScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ZeroScan.kt new file mode 100644 index 00000000..44719dc8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ZeroScan.kt @@ -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 + +@MangaSourceParser("ZEROSCAN", "Zero Scan", "pt") +internal class ZeroScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ZEROSCAN, "zeroscan.com.br") { + + override val postreq = true + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt new file mode 100644 index 00000000..d798966f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.ru + + +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("MANGAONELOVE", "MangaoneLove", "ru") +internal class MangaoneLove(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAONELOVE, "mangaonelove.site", 10) { + + override val datePattern = "dd.MM.yyyy" + override val postreq = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaUptocats.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaUptocats.kt new file mode 100644 index 00000000..090408d9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaUptocats.kt @@ -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 + +@MangaSourceParser("MANGAUPTOCATS", "Manga Uptocats", "th") +internal class MangaUptocats(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAUPTOCATS, "manga-uptocats.com") { + + + override val datePattern: String = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt new file mode 100644 index 00000000..18b5da50 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt @@ -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 + +@MangaSourceParser("MANGADEEMAK", "Mangadeemak", "th") +internal class Mangadeemak(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGADEEMAK, "mangadeemak.com", 12) { + + + override val datePattern: String = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt new file mode 100644 index 00000000..d534c9fe --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt @@ -0,0 +1,39 @@ +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.exception.ParseException +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.toRelativeUrl + +@MangaSourceParser("RHPLUSMANGA", "Rh2 Plus Manga", "th") +internal class RhPlusManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RHPLUSMANGA, "www.rh2plusmanga.com") { + + override val datePattern: String = "d MMMM yyyy" + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val root = doc.body().selectFirst("div.main-col-inner")?.selectFirst("div.reading-content") + ?: throw ParseException("Root not found", fullUrl) + return root.select("img").map { img -> + val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt index 262b993c..01885816 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt @@ -5,7 +5,6 @@ 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("ANIKIGA", "Anikiga", "tr") @@ -14,6 +13,5 @@ internal class Anikiga(context: MangaLoaderContext) : override val tagPrefix = "manga-tur/" override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale("tr") override val postreq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt index 5fd765eb..70a33f89 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt @@ -5,7 +5,6 @@ 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("ANISA_MANGA", "Anisa Manga", "tr") @@ -13,5 +12,4 @@ internal class AnisaManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ANISA_MANGA, "anisamanga.com") { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("tr") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt index bef1fafa..52f8be1c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt @@ -5,7 +5,6 @@ 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("ARAZNOVEL", "Araz Novel", "tr") @@ -13,6 +12,5 @@ internal class ArazNovel(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ARAZNOVEL, "araznovel.com", 10) { override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale("tr") override val postreq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Cizgiromanarsivi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Cizgiromanarsivi.kt new file mode 100644 index 00000000..116d9bc4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Cizgiromanarsivi.kt @@ -0,0 +1,19 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("CIZGIROMANARSIVI", "Cizgiromanarsivi", "tr") +internal class Cizgiromanarsivi(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.CIZGIROMANARSIVI, "cizgiromanarsivi.com", 24) { + + override val stylepage = "" + override val tagPrefix = "kategori/" + override val datePattern = "dd.MM.yyyy" + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt index 1ab136f9..d2a324a3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt @@ -5,7 +5,6 @@ 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("DIAMONDFANSUB", "Diamond Fansub", "tr") @@ -13,6 +12,5 @@ internal class DiamondFansub(context: MangaLoaderContext) : MadaraParser(context, MangaSource.DIAMONDFANSUB, "diamondfansub.com", 10) { override val datePattern = "d MMMM" - override val sourceLocale: Locale = Locale("tr") override val tagPrefix = "seri-turu/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt index 2082e3f4..62023b89 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt @@ -4,12 +4,10 @@ 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("GLORYMANGA", "Glory Manga", "tr") internal class GloryManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.GLORYMANGA, "glorymanga.com", 18) { override val datePattern = "dd/MM/yyyy" - override val sourceLocale: Locale = Locale("tr") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt index 5c7b2e1f..03965e82 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt @@ -4,12 +4,10 @@ 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("GUNCEL_MANGA", "Guncel Manga", "tr") internal class GuncelManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.GUNCEL_MANGA, "guncelmanga.net") { override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale("tr") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt index f18dba30..5f3257d0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("HAYALISTIC", "Hayalistic", "vi") +@MangaSourceParser("HAYALISTIC", "Hayalistic", "tr") internal class Hayalistic(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HAYALISTIC, "hayalistic.com", 24) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt new file mode 100644 index 00000000..85daacc6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("JIANGZAITOON", "Jiangzaitoon", "tr") +internal class Jiangzaitoon(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.JIANGZAITOON, "jiangzaitoon.co") { + + override val postreq = true + override val isNsfwSource = true + override val datePattern = "dd MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaDiyari.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaDiyari.kt new file mode 100644 index 00000000..0ecc188b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaDiyari.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("MANGADIYARI", "MangaDiyari", "tr") +internal class MangaDiyari(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGADIYARI, "manga-diyari.com", 10) { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangabilgini.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangabilgini.kt new file mode 100644 index 00000000..c9979369 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangabilgini.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("MANGABILGINI", "Mangabilgini", "tr") +internal class Mangabilgini(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGABILGINI, "mangabilgini.com", 44) { + + override val selectdesc = "div.ozet__icerik" + override val postreq = true + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt index 9f05e419..44a7aa43 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt @@ -4,7 +4,6 @@ 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) : @@ -12,6 +11,5 @@ internal class Mangakeyfi(context: MangaLoaderContext) : override val tagPrefix = "mangalar-genre/" override val datePattern = "d MMMM yyyy" - override val sourceLocale: Locale = Locale("tr") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt index a4c6ad5c..1937319f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt @@ -5,11 +5,9 @@ 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") + override val datePattern = "MMMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt index bedb11f2..db380e96 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt @@ -4,13 +4,10 @@ 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("MANWE", "Manwe", "tr") internal class Manwe(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANWE, "manwe.pro", 20) { override val datePattern = "MMMM d, yyyy" - override val sourceLocale: Locale = Locale("tr") - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt new file mode 100644 index 00000000..5ed57bdc --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("ROMANTIKMANGA", "Romantik Manga", "tr") +internal class RomantikManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ROMANTIKMANGA, "romantikmanga.com", 20) { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt new file mode 100644 index 00000000..3b09f98d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("RUYAMANGA", "Ruya Manga", "tr") +internal class RuyaManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RUYAMANGA, "www.ruyamanga.com", 18) { + + override val tagPrefix = "manga-kategori/" + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt new file mode 100644 index 00000000..e44b35af --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("TIMENAIGHT", "Timenaight", "tr") +internal class Timenaight(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TIMENAIGHT, "timenaight.com") { + + override val postreq = true + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt new file mode 100644 index 00000000..2cc92101 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("TONIZUTOON", "Tonizutoon", "tr") +internal class Tonizutoon(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TONIZUTOON, "tonizutoon.com") { + + override val isNsfwSource = true + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt new file mode 100644 index 00000000..f2fbe9c2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("TORTUGACEVIRI", "Tortuga Ceviri", "tr") +internal class TortugaCeviri(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TORTUGACEVIRI, "tortuga-ceviri.com") { + + override val datePattern = "MMMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt index 7ba8ad38..fd88dd3f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt @@ -4,7 +4,6 @@ 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) : @@ -12,6 +11,4 @@ internal class Webtoonhatti(context: MangaLoaderContext) : override val tagPrefix = "webtoon-tur/" override val datePattern = "d MMMM" - override val sourceLocale: Locale = Locale("tr") - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt index 37d6a5cc..12d0f6d6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt @@ -9,6 +9,7 @@ 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" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt new file mode 100644 index 00000000..8f9de79c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.zh + +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("BAKAMH", "Bakamh", "zh") +internal class Bakamh(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.BAKAMH, "bakamh.com") { + + override val datePattern = "YYYY 年 M 月 d 日" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index 7db92c1e..6da99baf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -115,14 +115,15 @@ internal abstract class MangaReaderParser( val mangaState = state?.let { when (it.text()) { - "مستمرة", "En curso", "Ongoing", "On going", - "Ativo", "En Cours", "OnGoing", "Đang tiến hành", "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", "En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", + "Онгоінг", "Publishing", "Devam Ediyor", "Em Andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", + "Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", + "Devam ediyor", -> MangaState.ONGOING - "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", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành", "مكتملة", + "Завершено", "Finished", "Finalizado", "Completata", "One-Shot", "Bitti", "Tamat", "Completado", "Concluído", "Concluido", "已完结", "Bitmiş", -> MangaState.FINISHED else -> null @@ -141,8 +142,7 @@ internal abstract class MangaReaderParser( || docs.selectFirst(".postbody .alr") != null return manga.copy( - description = tablemode?.selectFirst("div.entry-content")?.html() ?: docs.selectFirst("div.entry-content") - ?.html(), + description = docs.selectFirst("div.entry-content")?.text(), state = mangaState, author = author, isNsfw = manga.isNsfw || nsfw, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LegionScansEn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LegionScansEn.kt new file mode 100644 index 00000000..7e40f260 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LegionScansEn.kt @@ -0,0 +1,15 @@ +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 + + +@MangaSourceParser("LEGIONSCANS_EN", "Legion Scans EN", "en") +internal class LegionScansEn(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.LEGIONSCANS_EN, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("legionscans.com") +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt new file mode 100644 index 00000000..40fc0c93 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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 + +@MangaSourceParser("LEGIONSCANS", "Legion Scans", "es") +internal class LegionScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.LEGIONSCANS, pageSize = 20, searchPageSize = 20) { + + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("legionscans.com") + +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt new file mode 100644 index 00000000..371054ff --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt @@ -0,0 +1,18 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.fr + +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("VFSCAN", "Vf Scan", "fr") +internal class VfScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.VFSCAN, pageSize = 18, searchPageSize = 18) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("www.vfscan.com") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.FRENCH) +}