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