From 1163541ac56932477d3ace08f38fe41a1a81ae3c Mon Sep 17 00:00:00 2001 From: devi Date: Fri, 30 Aug 2024 18:32:19 +0200 Subject: [PATCH] Update sources and add sources Fix MagusManga close #1021 --- .../kotatsu/parsers/site/all/MangaPark.kt | 3 +- .../kotatsu/parsers/site/en/VyManga.kt | 214 ++++++++++++++++++ .../parsers/site/keyoapp/KeyoappParser.kt | 4 +- .../parsers/site/keyoapp/en/MagusToon.kt | 33 +++ .../parsers/site/madara/en/MangaHall.kt | 2 +- .../parsers/site/madara/es/EmperorScan.kt | 2 +- .../parsers/site/madara/es/MantrazScan.kt | 3 +- .../kotatsu/parsers/site/madara/es/MhScans.kt | 2 +- .../site/madara/es/NoblesseTranslations.kt | 4 +- .../parsers/site/madara/pt/HuntersScan.kt | 2 +- .../parsers/site/madara/tr/MajorScans.kt | 2 +- .../parsers/site/mangareader/ar/Manjanoon.kt | 2 +- .../site/mangareader/ar/ThunderScans.kt | 8 +- .../parsers/site/mangareader/en/KaiScans.kt | 4 +- .../site/mangareader/en/LuaComicCom.kt | 2 +- .../parsers/site/mangareader/en/MagusManga.kt | 12 - .../parsers/site/mangareader/en/Nightscans.kt | 2 +- .../parsers/site/mangareader/fr/VfScan.kt | 2 +- .../parsers/site/mangareader/id/Comicaso.kt | 2 +- .../parsers/site/mangareader/pt/DemonSect.kt | 2 +- .../parsers/site/mangareader/th/MangaKimi.kt | 12 + .../parsers/site/mangareader/tr/NoxScans.kt | 12 + .../kotatsu/parsers/site/pt/YugenMangas.kt | 2 +- 23 files changed, 299 insertions(+), 34 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/MagusToon.kt delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaKimi.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt index 158b4418..eeb9480f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt @@ -16,7 +16,8 @@ import java.util.* internal class MangaPark(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGAPARK, pageSize = 36) { - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) + override val availableSortOrders: Set = + EnumSet.of(SortOrder.POPULARITY, SortOrder.UPDATED, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING) override val availableStates: Set = EnumSet.allOf(MangaState::class.java) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt new file mode 100644 index 00000000..82e3d797 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt @@ -0,0 +1,214 @@ +package org.koitharu.kotatsu.parsers.site.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.PagedMangaParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.util.* +import java.text.DateFormat +import java.text.SimpleDateFormat +import java.util.* + +@MangaSourceParser("VYMANGA", "VyManga", "en") +class VyManga(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.VYMANGA, pageSize = 36) { + + override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("vymanga.net") + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + + override val isMultipleTagsSupported = false + + override val availableSortOrders: Set = EnumSet.of( + SortOrder.POPULARITY, + SortOrder.POPULARITY_ASC, + SortOrder.RATING, + SortOrder.RATING_ASC, + SortOrder.NEWEST, + SortOrder.NEWEST_ASC, + SortOrder.UPDATED, + SortOrder.UPDATED_ASC, + ) + + override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + + val url = buildString { + append("https://") + append(domain) + when (filter) { + is MangaListFilter.Search -> { + append("/search?search_po=0&q=") + append(filter.query.urlEncoded()) + append("&author_po=0&author=&completed=2&sort=updated_at&sort_type=desc&page=") + append(page) + } + + is MangaListFilter.Advanced -> { + + if (filter.tags.isEmpty()) { + + append("/search?search_po=0&q=&author_po=0&author=&completed=") + filter.states.oneOrThrowIfMany()?.let { + append( + when (it) { + MangaState.ONGOING -> "0" + MangaState.FINISHED -> "1" + else -> "2" + }, + ) + } + + } else { + + append("/genre/") + filter.tags.oneOrThrowIfMany()?.let { + append(it.key) + } + + append("?status=") + filter.states.oneOrThrowIfMany()?.let { + append( + when (it) { + MangaState.ONGOING -> "0" + MangaState.FINISHED -> "1" + else -> "" + }, + ) + } + } + + append("&sort=") + when (filter.sortOrder) { + SortOrder.POPULARITY -> append("viewed&sort_type=desc") + SortOrder.POPULARITY_ASC -> append("viewed&sort_type=asc") + SortOrder.RATING -> append("scored&sort_type=desc") + SortOrder.RATING_ASC -> append("scored&sort_type=asc") + SortOrder.NEWEST -> append("created_at&sort_type=desc") + SortOrder.NEWEST_ASC -> append("created_at&sort_type=asc") + SortOrder.UPDATED -> append("updated_at&sort_type=desc") + SortOrder.UPDATED_ASC -> append("updated_at&sort_type=asc") + else -> append("Updated") + } + + append("&page=") + append(page) + } + + null -> { + append("/search?search_po=0&q=&author_po=0&author=&completed=2&sort=updated_at&sort_type=desc&page=") + append(page) + } + } + } + val doc = webClient.httpGet(url).parseHtml() + return doc.select(".comic-item").map { div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(domain), + coverUrl = div.selectFirst(".comic-image img")?.src().orEmpty(), + title = div.selectFirst(".comic-title")?.text().orEmpty(), + altTitle = null, + rating = RATING_UNKNOWN, + tags = emptySet(), + author = null, + state = null, + source = source, + isNsfw = isNsfwSource, + ) + } + } + + override suspend fun getAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain/").parseHtml() + return doc.select("div.dropdown-menu.custom-menu ul li a[href*=genre]").mapNotNullToSet { + MangaTag( + key = it.attr("href").substringAfterLast('/'), + title = it.text(), + source = source, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga { + val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val simpleDateFormat = SimpleDateFormat("MMM dd, yyy", sourceLocale) + return manga.copy( + tags = doc.select("div.col-md-7 p a[href*=genre]").mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").substringAfterLast('/'), + title = a.text(), + source = source, + ) + }, + description = doc.selectFirst("div.summary p.content")?.text().orEmpty(), + state = when (doc.selectLast("div.col-md-7 p:contains(Status) span")?.text()?.lowercase()) { + "ongoing" -> MangaState.ONGOING + "completed" -> MangaState.FINISHED + else -> null + }, + rating = doc.selectFirst("div.col-md-7 p:contains(Rating)")?.text()?.substringAfterLast(':') + ?.substringBefore('/')?.toFloat() ?: RATING_UNKNOWN, + chapters = doc.select("div.list div.list-group a").mapChapters(reversed = true) { i, a -> + val url = a.attrAsRelativeUrl("href") + MangaChapter( + id = generateUid(url), + name = a.selectFirst("span")?.text() ?: "Chapter ${i + 1}", + number = i + 1f, + volume = 0, + url = url, + scanlator = null, + uploadDate = parseChapterDate( + simpleDateFormat, + a.selectFirst("p")?.text(), + ), + branch = null, + source = source, + ) + }, + ) + } + + private fun parseChapterDate(dateFormat: DateFormat, date: String?): Long { + val d = date?.lowercase() ?: return 0 + return when { + d.endsWith(" ago") -> parseRelativeDate(date) + else -> dateFormat.tryParse(date) + } + } + + private fun parseRelativeDate(date: String): Long { + val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0 + val cal = Calendar.getInstance() + return when { + WordSet("second").anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis + WordSet("minute", "minutes").anyWordIn(date) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis + WordSet("hour", "hours").anyWordIn(date) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis + WordSet("day", "days").anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis + WordSet("week", "weeks").anyWordIn(date) -> cal.apply { add(Calendar.WEEK_OF_YEAR, -number) }.timeInMillis + WordSet("month", "months").anyWordIn(date) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis + WordSet("year").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis + else -> 0 + } + } + + override suspend fun getPages(chapter: MangaChapter): List { + val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml() + return doc.select("img.d-block").map { img -> + val url = img.src() ?: 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/keyoapp/KeyoappParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt index a82fdf34..f64a2d58 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt @@ -203,9 +203,9 @@ internal abstract class KeyoappParser( source = source, ) }, - description = doc.selectFirstOrThrow(selectDesc).html(), + description = doc.selectFirst(selectDesc)?.html().orEmpty(), state = when ( - doc.selectFirstOrThrow(selectState).text().lowercase() + doc.selectFirst(selectState)?.text()?.lowercase().orEmpty() ) { in ongoing -> MangaState.ONGOING in finished -> MangaState.FINISHED diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/MagusToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/MagusToon.kt new file mode 100644 index 00000000..111d5e32 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/MagusToon.kt @@ -0,0 +1,33 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl + +@MangaSourceParser("MAGUSMANGA", "MagusToon", "en") +internal class MagusToon(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.MAGUSMANGA, "magustoon.com") { + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + return doc.select(selectPage).map { img -> + val id = img.attr("uid") ?: img.parseFailed("Image id not found") + val url = "https://cdn.$domain/x/$id" + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt index efa578ae..cd1e4f64 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt @@ -8,4 +8,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI) internal class MangaHall(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.org", 24) + MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.net", 24) 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 8a7dc8c7..0c1a3955 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 @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("EMPERORSCAN", "EmperorScan", "es") internal class EmperorScan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.EMPERORSCAN, "emperormanga.com") + MadaraParser(context, MangaParserSource.EMPERORSCAN, "emperormanga.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt index 93d945a0..0c45aeaa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt @@ -5,9 +5,10 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +// redirect to @PANCONCOLA @MangaSourceParser("MANTRAZSCAN", "MantrazScan", "es") internal class MantrazScan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANTRAZSCAN, "mantrazscan.com") { + MadaraParser(context, MangaParserSource.MANTRAZSCAN, "panconcola.com") { override val datePattern = "dd/MM/yyyy" override val tagPrefix = "generos-de-manga/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt index dd22ebd8..afd2ae03 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MHSCANS", "MhScans", "es") internal class MhScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MHSCANS, "mh.twobluescans.com") { + MadaraParser(context, MangaParserSource.MHSCANS, "mhscans.manhuaonline.org") { override val datePattern = "d 'de' MMMMM 'de' yyyy" override val listUrl = "series/" } 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 index b6c5a775..3faa696f 100644 --- 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 @@ -1,12 +1,10 @@ package org.koitharu.kotatsu.parsers.site.madara.es -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken @MangaSourceParser("NOBLESSETRANSLATIONS", "NoblesseTranslations", "es") internal class NoblesseTranslations(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "www.noblessev1.com") + MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "www.swordalada.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt index fe7121ce..eacbd03b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt @@ -9,7 +9,7 @@ import java.util.EnumSet @MangaSourceParser("HUNTERSSCAN", "HuntersScan", "pt") internal class HuntersScan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.HUNTERSSCAN, "huntersscan.net", pageSize = 50) { + MadaraParser(context, MangaParserSource.HUNTERSSCAN, "hunterscomics.com", pageSize = 50) { override val withoutAjax = true override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt index a5f445c3..0c924346 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MAJORSCANS", "MajorScans", "tr") internal class MajorScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MAJORSCANS, "www.majorscans.com", pageSize = 18) { + MadaraParser(context, MangaParserSource.MAJORSCANS, "www.mangatilkisi.com", pageSize = 18) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt index 549285f4..ce1c6d07 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt @@ -10,7 +10,7 @@ import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("MANJANOON", "Manjanoon", "ar") internal class Manjanoon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANJANOON, "noonscan.net", pageSize = 21, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANJANOON, "manjanoon.xyz", pageSize = 21, searchPageSize = 10) { override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt index d47e5dc4..2d1857a5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt @@ -7,7 +7,13 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("THUNDERSCANS", "ThunderScans", "ar") internal class ThunderScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.THUNDERSCANS, + "ar-thunderepic.com", + pageSize = 32, + searchPageSize = 10, + ) { override val isTagsExclusionSupported = false override val selectChapter = ".eplister > ul > li" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt index 87b4972c..b06861af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt @@ -5,9 +5,9 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -// Redirect to luacomic.com +// Redirect to @LUACOMIC_COM @MangaSourceParser("KAISCANS", "KaiScans", "en") internal class KaiScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KAISCANS, "luacomic.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KAISCANS, "ponvi.online", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaComicCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaComicCom.kt index 808f8efc..c199deb6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaComicCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaComicCom.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("LUACOMIC_COM", "luaComic.com", "en") internal class LuaComicCom(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.LUACOMIC_COM, "luacomic.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.LUACOMIC_COM, "ponvi.online", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt deleted file mode 100644 index 4a0daa61..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt +++ /dev/null @@ -1,12 +0,0 @@ -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.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser - -@MangaSourceParser("MAGUSMANGA", "Recipeslik", "en") -internal class MagusManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MAGUSMANGA, "oocini.biz", pageSize = 20, searchPageSize = 10) { - override val listUrl = "/series" -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt index eae66a89..c0cccdf7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NIGHTSCANS", "NightScans", "en") internal class Nightscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.NIGHTSCANS, "night-scans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.NIGHTSCANS, "nightsup.net", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val selectMangaListImg = "img.ts-post-image, picture img" override val isTagsExclusionSupported = false 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 index 6dd9acf8..2ec39257 100644 --- 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 @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("VFSCAN", "VfScan", "fr") internal class VfScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.VFSCAN, "www.vfscan.cc", pageSize = 18, searchPageSize = 18) { + MangaReaderParser(context, MangaParserSource.VFSCAN, "www.vfscan.net", pageSize = 18, searchPageSize = 18) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt index b3cd889b..3d628980 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @Broken @MangaSourceParser("COMICASO", "Comicaso", "id") internal class Comicaso(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.org", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.id", pageSize = 20, searchPageSize = 10) { override val encodedSrc = true override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DemonSect.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DemonSect.kt index 6e2cf328..3217da7a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DemonSect.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DemonSect.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DEMONSECT", "DemonSect", "pt") internal class DemonSect(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.DEMONSECT, "dsectcomics.org", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.DEMONSECT, "seitacelestial.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/comics" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaKimi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaKimi.kt new file mode 100644 index 00000000..d82e0a95 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaKimi.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.th + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MANGAKIMI", "MangaKimi", "th") +internal class MangaKimi(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGAKIMI, "www.mangakimi.com", pageSize = 40, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt new file mode 100644 index 00000000..85b34e62 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt @@ -0,0 +1,12 @@ +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.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("NOXSCANS", "NoxScans", "tr") +internal class NoxScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.NOXSCANS, "noxscans.com", pageSize = 30, searchPageSize = 20) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt index f314a167..d3b38012 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt @@ -16,7 +16,7 @@ import java.util.* class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YUGENMANGAS, 28) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL) - override val configKeyDomain = ConfigKey.Domain("yugenapp.lat") + override val configKeyDomain = ConfigKey.Domain("yugenweb.com") override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys)