From 6b1fb905847920aa5b85478281d9808b159f4efc Mon Sep 17 00:00:00 2001 From: devi Date: Fri, 13 Dec 2024 23:57:09 +0100 Subject: [PATCH] Update source [AnimeH] Broken source close #1301 [SussyScan] fix close #1298 close #1287 close #1282 close #1273 close #1267 close #1268 close #1260 close #1234 [Manhwa18] fix src close #1297 close #1290 close #1288 [KomikCast] close #1284 close #1283 close #1272 close #1270 close #1265 [Birdtoon] close #1276 [Komiktap] close #1275 [SadScans] close #1274 [Flamecomics] reverse chapter fix close #1266 [Kiryuu] fix url close #1258 [MangaTime] Broken close #1228 [Dexhentai] fix close #1226 --- .github/summary.yaml | 2 +- .../parsers/site/all/HitomiLaParser.kt | 135 +++++---- .../parsers/site/all/LineWebtoonsParser.kt | 2 +- .../site/all/NineNineNineHentaiParser.kt | 2 + .../kotatsu/parsers/site/en/BeeToon.kt | 2 +- .../kotatsu/parsers/site/en/ComicExtra.kt | 2 +- .../kotatsu/parsers/site/en/FlameComics.kt | 2 +- .../kotatsu/parsers/site/en/Manhwa18Parser.kt | 4 +- .../kotatsu/parsers/site/en/MyComicList.kt | 277 +++++++++--------- .../parsers/site/fuzzydoodle/en/ResetScans.kt | 22 -- .../site/galleryadults/all/DoujinDesuUk.kt | 2 - .../parsers/site/heancms/pt/ModeScanlator.kt | 2 + .../parsers/site/heancmsalt/es/MangaEsp.kt | 2 +- .../parsers/site/iken/en/PhiliaScans.kt | 2 +- .../parsers/site/keyoapp/en/AgsComics.kt | 10 + .../parsers/site/keyoapp/en/LuaScans.kt | 4 +- .../parsers/site/liliana/ja/MangaKoma01.kt | 2 +- .../parsers/site/madara/ar/WebtoonEmpire.kt | 2 +- .../parsers/site/madara/en/AsuraScansGg.kt | 2 +- .../kotatsu/parsers/site/madara/en/CoComic.kt | 2 - .../parsers/site/madara/en/ColoredManga.kt | 2 +- .../parsers/site/madara/en/HiperDex.kt | 2 + .../parsers/site/madara/en/InstaManhwa.kt | 2 +- .../kotatsu/parsers/site/madara/en/Kiara18.kt | 3 +- .../en/{MangaTxTo.kt => LikeMangaIn.kt} | 10 +- .../parsers/site/madara/en/MangaRyu.kt | 2 + .../parsers/site/madara/en/ManhwaToon.kt | 11 + .../parsers/site/madara/en/ResetScans.kt | 11 + .../parsers/site/madara/en/SiteManga.kt | 12 + .../parsers/site/madara/en/ZinMangaMS.kt | 2 + .../parsers/site/madara/es/ArtesSupremas.kt | 2 + .../parsers/site/madara/es/HouseOfOtakus.kt | 2 + .../site/madara/es/KnightnoScanlation.kt | 2 +- .../site/madara/es/LegendScanlations.kt | 2 + .../parsers/site/madara/es/Mangaxico.kt | 2 +- .../kotatsu/parsers/site/madara/es/Manhwas.kt | 11 + .../parsers/site/madara/es/MantrazScan.kt | 3 +- .../kotatsu/parsers/site/madara/es/Mmdaos.kt | 10 + .../site/madara/es/NoblesseTranslations.kt | 2 +- .../parsers/site/madara/es/Panconcola.kt | 2 + .../parsers/site/madara/es/RagnarokScan.kt | 2 + .../site/madara/es/TraduccionesAmistosas.kt | 2 +- .../kotatsu/parsers/site/madara/es/Zevep.kt | 10 + .../parsers/site/madara/fr/RaijinScans.kt | 2 +- .../parsers/site/madara/id/BirdToon.kt | 2 +- .../kotatsu/parsers/site/madara/id/Hwago.kt | 4 +- .../parsers/site/madara/id/KlikManga.kt | 2 +- .../kotatsu/parsers/site/madara/id/Mgkomik.kt | 4 +- .../parsers/site/madara/id/Shinigami.kt | 2 +- .../parsers/site/madara/id/WorldManhwas.kt | 2 + .../kotatsu/parsers/site/madara/id/XManhwa.kt | 2 +- .../parsers/site/madara/id/Yubikiri.kt | 2 + .../parsers/site/madara/ja/MangaFenxi.kt | 2 + .../parsers/site/madara/ja/RawManga.kt | 2 + .../kotatsu/parsers/site/madara/ja/RawXz.kt | 2 +- .../parsers/site/madara/pt/ArcticScan.kt | 2 +- .../parsers/site/madara/pt/ArgosComics.kt | 6 +- .../parsers/site/madara/pt/FenixProject.kt | 2 +- .../site/madara/pt/LimitedTimePoject.kt | 2 +- .../parsers/site/madara/pt/LinkStartScan.kt | 2 + .../parsers/site/madara/pt/MangaNanquim.kt | 2 + .../parsers/site/madara/pt/MangaOnline.kt | 12 + .../parsers/site/madara/pt/SsReading.kt | 12 + .../parsers/site/madara/pt/SussyScan.kt | 2 +- .../kotatsu/parsers/site/madara/pt/XsScan.kt | 12 + .../kotatsu/parsers/site/madara/th/Cat300.kt | 2 +- .../parsers/site/madara/tr/DomalFansb.kt | 2 +- .../parsers/site/madara/tr/GloryManga.kt | 2 +- .../parsers/site/madara/tr/Grimelek.kt | 2 +- .../parsers/site/madara/tr/MangaGezgini.kt | 2 +- .../parsers/site/madara/tr/MangaRuhu.kt | 2 + .../parsers/site/madara/tr/MangaWtNet.kt | 2 +- .../parsers/site/madara/tr/MerlinScans.kt | 13 - .../parsers/site/madara/tr/OpiaToon.kt | 2 +- .../parsers/site/madara/tr/Webtoonhatti.kt | 2 +- .../kotatsu/parsers/site/madara/tr/YaoiBar.kt | 12 + .../parsers/site/madara/tr/YaoiMangaOku.kt | 2 +- .../site/madara/tr/YetiskinRuyaManga.kt | 12 + .../parsers/site/madara/vi/PinkTeaComic.kt | 2 + .../parsers/site/madara/vi/RuaHapChanhDay.kt | 12 + .../parsers/site/mangareader/ar/MangaNoon.kt | 2 + .../parsers/site/mangareader/ar/NoonScan.kt | 2 + .../parsers/site/mangareader/ar/Normoyun.kt | 2 +- .../parsers/site/mangareader/ar/ScarManga.kt | 2 + .../parsers/site/mangareader/ar/UmiManga.kt | 2 - .../site/mangareader/en/AnigliScans.kt | 2 + .../site/mangareader/en/AscalonScans.kt | 2 + .../parsers/site/mangareader/en/BirdManga.kt | 2 + .../site/mangareader/en/CypherScans.kt | 2 +- .../parsers/site/mangareader/en/DexHentai.kt | 4 +- .../parsers/site/mangareader/en/ErosScans.kt | 2 +- .../parsers/site/mangareader/en/MangaTxCc.kt | 13 + .../site/mangareader/en/ManhwaFreak.kt | 2 +- .../site/mangareader/en/ReadersPoint.kt | 2 + .../parsers/site/mangareader/en/Zahard.kt | 2 + .../parsers/site/mangareader/es/InariManga.kt | 2 +- .../parsers/site/mangareader/es/InariPikav.kt | 2 +- .../site/mangareader/fr/PornhwaScans.kt | 2 + .../site/mangareader/id/CosmicScans.kt | 2 +- .../parsers/site/mangareader/id/DoujinKu.kt | 2 +- .../site/mangareader/id/IzanamiScans.kt | 10 + .../site/mangareader/id/KiryuuParser.kt | 2 +- .../site/mangareader/id/KomikLokalParser.kt | 2 +- .../parsers/site/mangareader/id/KomikSay.kt | 2 + .../site/mangareader/id/KomikTapParser.kt | 68 +++++ .../parsers/site/mangareader/id/Komikcast.kt | 2 +- .../site/mangareader/id/KomiklokalCfd.kt | 2 +- .../site/mangareader/id/ManhwaIndoParser.kt | 2 +- .../parsers/site/mangareader/id/ManhwaLand.kt | 2 +- .../site/mangareader/id/ManhwadesuParser.kt | 2 +- .../site/mangareader/id/SekaikomikParser.kt | 2 +- .../{en/AgsComics.kt => id/SiiKomik.kt} | 12 +- .../parsers/site/mangareader/id/SirenKomik.kt | 1 + .../site/mangareader/tr/MangaKazani.kt | 12 + .../parsers/site/mangareader/tr/Mangacim.kt | 2 + .../site/mangareader/tr/MerlinScans.kt | 16 + .../parsers/site/mangareader/tr/NoxScans.kt | 2 + .../parsers/site/mangareader/tr/RobinManga.kt | 8 +- .../mangareader/tr/TempestfansubParser.kt | 2 + .../site/mangaworld/MangaWorldParser.kt | 58 ++-- .../kotatsu/parsers/site/mmrcms/ar/Onma.kt | 2 + .../parsers/site/onemanga/fr/KaijuNo8.kt | 2 + .../kotatsu/parsers/site/sinmh/zh/Gufengmh.kt | 2 +- .../kotatsu/parsers/site/tr/SadScans.kt | 2 +- .../kotatsu/parsers/site/vi/DuaLeoTruyen.kt | 27 +- .../kotatsu/parsers/site/vi/HentaiVNParser.kt | 2 + .../kotatsu/parsers/site/vi/TruyenGG.kt | 1 - .../parsers/site/wpcomics/vi/DocTruyen3Q.kt | 8 +- .../parsers/site/wpcomics/vi/TopTruyen.kt | 4 +- .../parsers/site/zeistmanga/id/Kishisan.kt | 2 + .../parsers/site/zeistmanga/id/Lepoytl.kt | 10 + .../parsers/site/zeistmanga/id/Mikoroku.kt | 2 + .../parsers/site/zeistmanga/id/OkyyKomik.kt | 10 + .../site/zeistmanga/pt/DuoScanlators.kt | 10 + .../site/zeistmanga/pt/GuildaTierDraw.kt | 2 + .../parsers/site/zmanga/id/YuraManga.kt | 2 +- 136 files changed, 730 insertions(+), 362 deletions(-) delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/en/ResetScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/AgsComics.kt rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/{MangaTxTo.kt => LikeMangaIn.kt} (50%) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaToon.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SiteManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Manhwas.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mmdaos.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Zevep.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaOnline.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SsReading.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/XsScan.kt delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiBar.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YetiskinRuyaManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/RuaHapChanhDay.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaTxCc.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/IzanamiScans.kt rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/{en/AgsComics.kt => id/SiiKomik.kt} (59%) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKazani.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Lepoytl.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/OkyyKomik.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/DuoScanlators.kt diff --git a/.github/summary.yaml b/.github/summary.yaml index d52f241f..52c4993e 100644 --- a/.github/summary.yaml +++ b/.github/summary.yaml @@ -1 +1 @@ -total: 1154 \ No newline at end of file +total: 1172 \ No newline at end of file diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt index 9568916b..6d5b4193 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt @@ -40,7 +40,10 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context override val availableSortOrders: Set = EnumSet.of( SortOrder.NEWEST, - SortOrder.POPULARITY, + SortOrder.POPULARITY_TODAY, + SortOrder.POPULARITY_WEEK, + SortOrder.POPULARITY_MONTH, + SortOrder.POPULARITY_YEAR, ) private val localeMap: Map = mapOf( @@ -121,9 +124,10 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List = when { filter.query.isNullOrEmpty() -> { + if (filter.tags.isEmpty()) { when (order) { - SortOrder.POPULARITY -> { + SortOrder.POPULARITY_TODAY -> { getGalleryIDsFromNozomi( "popular", "today", @@ -132,6 +136,33 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context ) } + SortOrder.POPULARITY_WEEK -> { + getGalleryIDsFromNozomi( + "popular", + "week", + filter.locale.getSiteLang(), + offset.nextOffsetRange(), + ) + } + + SortOrder.POPULARITY_MONTH -> { + getGalleryIDsFromNozomi( + "popular", + "month", + filter.locale.getSiteLang(), + offset.nextOffsetRange(), + ) + } + + SortOrder.POPULARITY_YEAR -> { + getGalleryIDsFromNozomi( + "popular", + "year", + filter.locale.getSiteLang(), + offset.nextOffsetRange(), + ) + } + else -> { getGalleryIDsFromNozomi(null, "index", filter.locale.getSiteLang(), offset.nextOffsetRange()) } @@ -141,7 +172,7 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context cachedSearchIds = hitomiSearch( filter.tags.joinToString(" ") { it.key }, - order == SortOrder.POPULARITY, + order, filter.locale.getSiteLang(), ).toList() } @@ -151,7 +182,7 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context else -> { if (offset == 0) { - cachedSearchIds = hitomiSearch(filter.query, order == SortOrder.POPULARITY).toList() + cachedSearchIds = hitomiSearch(filter.query, order).toList() } cachedSearchIds.subList(offset, min(offset + 25, cachedSearchIds.size)) } @@ -164,7 +195,7 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context private suspend fun hitomiSearch( query: String, - sortByPopularity: Boolean = false, + sortByPopularity: SortOrder = SortOrder.UPDATED, language: String = "all", ): Set = coroutineScope { @@ -205,7 +236,11 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context } val results = when { - sortByPopularity -> getGalleryIDsFromNozomi(null, "popular", language) + sortByPopularity == SortOrder.UPDATED -> getGalleryIDsFromNozomi(null, "index", language) + sortByPopularity == SortOrder.POPULARITY_TODAY -> getGalleryIDsFromNozomi("popular", "today", language) + sortByPopularity == SortOrder.POPULARITY_WEEK -> getGalleryIDsFromNozomi("popular", "week", language) + sortByPopularity == SortOrder.POPULARITY_MONTH -> getGalleryIDsFromNozomi("popular", "month", language) + sortByPopularity == SortOrder.POPULARITY_YEAR -> getGalleryIDsFromNozomi("popular", "year", language) positiveTerms.isEmpty() -> getGalleryIDsFromNozomi(null, "index", language) else -> emptySet() }.toMutableSet() @@ -481,14 +516,14 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context title = doc.selectFirstOrThrow("h1").text(), url = id.toString(), coverUrl = - "https:" + - doc.selectFirstOrThrow("picture > source") - .attr("data-srcset") - .substringBefore(" "), + "https:" + + doc.selectFirstOrThrow("picture > source") + .attr("data-srcset") + .substringBefore(" "), publicUrl = - doc.selectFirstOrThrow("h1 > a") - .attrAsRelativeUrl("href") - .toAbsoluteUrl(domain), + doc.selectFirstOrThrow("h1 > a") + .attrAsRelativeUrl("href") + .toAbsoluteUrl(domain), author = null, tags = emptySet(), isNsfw = true, @@ -511,37 +546,37 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context return manga.copy( title = json.getString("title"), largeCoverUrl = - json.getJSONArray("files").getJSONObject(0).let { - val hash = it.getString("hash") - val commonId = commonImageId() - val imageId = imageIdFromHash(hash) - val subDomain = 'a' + subdomainOffset(imageId) - - "https://${getDomain("${subDomain}a")}/webp/$commonId$imageId/$hash.webp" - }, + json.getJSONArray("files").getJSONObject(0).let { + val hash = it.getString("hash") + val commonId = commonImageId() + val imageId = imageIdFromHash(hash) + val subDomain = 'a' + subdomainOffset(imageId) + + "https://${getDomain("${subDomain}a")}/webp/$commonId$imageId/$hash.webp" + }, author = - json.optJSONArray("artists") - ?.mapJSON { it.getString("artist").toCamelCase() } - ?.joinToString(), + json.optJSONArray("artists") + ?.mapJSON { it.getString("artist").toCamelCase() } + ?.joinToString(), publicUrl = json.getString("galleryurl").toAbsoluteUrl(domain), tags = - buildSet { - json.optJSONArray("characters") - ?.mapToTags("character") - ?.let(::addAll) - json.optJSONArray("tags") - ?.mapToTags("tag") - ?.let(::addAll) - json.optJSONArray("artists") - ?.mapToTags("artist") - ?.let(::addAll) - json.optJSONArray("parodys") - ?.mapToTags("parody") - ?.let(::addAll) - json.optJSONArray("groups") - ?.mapToTags("group") - ?.let(::addAll) - }, + buildSet { + json.optJSONArray("characters") + ?.mapToTags("character") + ?.let(::addAll) + json.optJSONArray("tags") + ?.mapToTags("tag") + ?.let(::addAll) + json.optJSONArray("artists") + ?.mapToTags("artist") + ?.let(::addAll) + json.optJSONArray("parodys") + ?.mapToTags("parody") + ?.let(::addAll) + json.optJSONArray("groups") + ?.mapToTags("group") + ?.let(::addAll) + }, chapters = listOf( MangaChapter( id = generateUid(manga.url), @@ -565,15 +600,15 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context mapJSON { MangaTag( title = - it.getString(key).toCamelCase().let { title -> - if (it.getStringOrNull("female")?.toIntOrNull() == 1) { - "$title ♀" - } else if (it.getStringOrNull("male")?.toIntOrNull() == 1) { - "$title ♂" - } else { - title - } - }, + it.getString(key).toCamelCase().let { title -> + if (it.getStringOrNull("female")?.toIntOrNull() == 1) { + "$title ♀" + } else if (it.getStringOrNull("male")?.toIntOrNull() == 1) { + "$title ♂" + } else { + title + } + }, key = it.getString("url").tagUrlToTag(), source = source, ).let(tags::add) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt index f915f6ad..492dc44b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt @@ -238,7 +238,7 @@ internal abstract class LineWebtoonsParser( override suspend fun resolveLink(resolver: LinkResolver, link: HttpUrl): Manga? { val titleNo = link.queryParameter("title_no") ?: return null - return resolver.resolveManga(this, url = titleNo.toString()) + return resolver.resolveManga(this, url = titleNo) } private fun parseTag(jo: JSONObject): MangaTag { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt index 24c18ef7..f923aebd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt @@ -5,6 +5,7 @@ import okhttp3.Interceptor import okhttp3.Response import org.json.JSONArray import org.json.JSONObject +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -19,6 +20,7 @@ import org.koitharu.kotatsu.parsers.util.suspendlazy.suspendLazy import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("NINENINENINEHENTAI", "AnimeH", type = ContentType.HENTAI) internal class NineNineNineHentaiParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.NINENINENINEHENTAI, PAGE_SIZE), Interceptor { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt index 9006a1b4..0924068c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt @@ -15,7 +15,7 @@ internal class BeeToon(context: MangaLoaderContext) : override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY) - override val configKeyDomain = ConfigKey.Domain("manhwafull.net") + override val configKeyDomain = ConfigKey.Domain("bidmanga.com") override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt index 97a47274..553cf663 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("COMICEXTRA", "ComicExtra", "en", ContentType.COMICS) internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.COMICEXTRA, 25) { - override val configKeyDomain = ConfigKey.Domain("comixextra.com") + override val configKeyDomain = ConfigKey.Domain("azcomix.me") override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlameComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlameComics.kt index 1dc95fa7..3cb8fd6a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlameComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlameComics.kt @@ -191,7 +191,7 @@ internal class FlameComics(context: MangaLoaderContext) : branch = jo.getStringOrNull("language"), source = source, ) - }, + }.reversed(), ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt index 1b17cc79..9f8c0fc8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt @@ -211,9 +211,7 @@ internal class Manhwa18Parser(context: MangaLoaderContext) : val chapterUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(chapterUrl).parseHtml() return doc.requireElementById("chapter-content").select("img").mapNotNull { - val url = it.attrAsRelativeUrlOrNull("data-src") - ?: it.attrAsRelativeUrlOrNull("src") - ?: return@mapNotNull null + val url = it.src() ?: return@mapNotNull null MangaPage( id = generateUid(url), url = url, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MyComicList.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MyComicList.kt index 39bc1398..467b2997 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MyComicList.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MyComicList.kt @@ -1,153 +1,152 @@ package org.koitharu.kotatsu.parsers.site.en -import androidx.collection.arraySetOf 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.network.UserAgents import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* -import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("MYCOMICLIST", "MyComicList", "en", ContentType.COMICS) internal class MyComicList(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MYCOMICLIST, 24) { - override val configKeyDomain = ConfigKey.Domain("mycomiclist.org") - - override fun onCreateConfig(keys: MutableCollection>) { - super.onCreateConfig(keys) - keys.add(userAgentKey) - } - - override val availableSortOrders: Set = EnumSet.of( - SortOrder.UPDATED, - SortOrder.POPULARITY, - SortOrder.NEWEST, - SortOrder.ALPHABETICAL - ) - - override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isSearchSupported = true, - ) - - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = fetchAvailableTags(), - availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) - ) - - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { - val url = buildString { - append("https://") - append(domain) - when { - !filter.query.isNullOrEmpty() -> { - append("/comic-search?key=") - append(filter.query.urlEncoded()) - } - filter.tags.isNotEmpty() -> { - append("/") - append(filter.tags.first().key) - append("-comic") - } - else -> when (order) { - SortOrder.UPDATED -> append("/hot-comic") - SortOrder.POPULARITY -> append("/popular-comic") - SortOrder.NEWEST -> append("/new-comic") - else -> append("/ongoing-comic") - } - } - if (page > 1) { - append("?page=") - append(page) - } - } - - val doc = webClient.httpGet(url).parseHtml() - return doc.select("div.manga-box").map { div -> - val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") - val img = div.selectFirst("img.lazyload") - Manga( - id = generateUid(href), - url = href, - publicUrl = href.toAbsoluteUrl(domain), - title = div.selectFirst("h3 a")?.text().orEmpty(), - altTitle = null, - author = null, - tags = emptySet(), - rating = RATING_UNKNOWN, - isNsfw = isNsfwSource, - coverUrl = img?.attr("data-src").orEmpty(), - state = null, - source = source, - ) - } - } - - override suspend fun getDetails(manga: Manga): Manga { - val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() - return manga.copy( - tags = doc.select("td:contains(Genres:) + td a").mapToSet { a -> - MangaTag( - key = a.attr("href").substringAfterLast('/').substringBefore("-comic"), - title = a.text().toTitleCase(sourceLocale), - source = source - ) - }, - author = doc.selectFirst("td:contains(Author:) + td")?.textOrNull(), - state = when(doc.selectFirst("td:contains(Status:) + td a")?.text()?.lowercase()) { - "ongoing" -> MangaState.ONGOING - "completed" -> MangaState.FINISHED - else -> null - }, - description = doc.selectFirst("div.manga-desc p.pdesc")?.html(), - chapters = doc.select("ul.basic-list li").mapChapters(reversed = true) { i, li -> - val a = li.selectFirst("a.ch-name") ?: return@mapChapters null - val href = a.attrAsRelativeUrl("href") - val name = a.text() - - MangaChapter( - id = generateUid(href), - name = name, - number = name.substringAfter('#').toFloatOrNull() ?: (i + 1f), - url = href, - scanlator = null, - uploadDate = 0L, - branch = null, - source = source, - volume = 0, - ) - } - ) - } - - override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.toAbsoluteUrl(domain) + "/all" - val doc = webClient.httpGet(fullUrl).parseHtml() - - return doc.select("img.chapter_img.lazyload").mapNotNull { img -> - val imageUrl = img.attrOrNull("data-src") ?: return@mapNotNull null - MangaPage( - id = generateUid(imageUrl), - url = imageUrl, - preview = null, - source = source - ) - } - } - - private suspend fun fetchAvailableTags(): Set { - val doc = webClient.httpGet("https://$domain").parseHtml() - return doc.select("div.cr-anime-box.genre-box a.genre-name").mapToSet { a -> - val href = a.attr("href") - val key = href.substringAfterLast('/').substringBefore("-comic") - MangaTag( - key = key, - title = a.text().toTitleCase(sourceLocale), - source = source - ) - } - } + override val configKeyDomain = ConfigKey.Domain("mycomiclist.org") + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + + override val availableSortOrders: Set = EnumSet.of( + SortOrder.UPDATED, + SortOrder.POPULARITY, + SortOrder.NEWEST, + SortOrder.ALPHABETICAL, + ) + + override val filterCapabilities: MangaListFilterCapabilities + get() = MangaListFilterCapabilities( + isSearchSupported = true, + ) + + override suspend fun getFilterOptions() = MangaListFilterOptions( + availableTags = fetchAvailableTags(), + availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), + ) + + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { + val url = buildString { + append("https://") + append(domain) + when { + !filter.query.isNullOrEmpty() -> { + append("/comic-search?key=") + append(filter.query.urlEncoded()) + } + + filter.tags.isNotEmpty() -> { + append("/") + append(filter.tags.first().key) + append("-comic") + } + + else -> when (order) { + SortOrder.UPDATED -> append("/hot-comic") + SortOrder.POPULARITY -> append("/popular-comic") + SortOrder.NEWEST -> append("/new-comic") + else -> append("/ongoing-comic") + } + } + if (page > 1) { + append("?page=") + append(page) + } + } + + val doc = webClient.httpGet(url).parseHtml() + return doc.select("div.manga-box").map { div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + val img = div.selectFirst("img.lazyload") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(domain), + title = div.selectFirst("h3 a")?.text().orEmpty(), + altTitle = null, + author = null, + tags = emptySet(), + rating = RATING_UNKNOWN, + isNsfw = isNsfwSource, + coverUrl = img?.attr("data-src").orEmpty(), + state = null, + source = source, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga { + val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + return manga.copy( + tags = doc.select("td:contains(Genres:) + td a").mapToSet { a -> + MangaTag( + key = a.attr("href").substringAfterLast('/').substringBefore("-comic"), + title = a.text().toTitleCase(sourceLocale), + source = source, + ) + }, + author = doc.selectFirst("td:contains(Author:) + td")?.textOrNull(), + state = when (doc.selectFirst("td:contains(Status:) + td a")?.text()?.lowercase()) { + "ongoing" -> MangaState.ONGOING + "completed" -> MangaState.FINISHED + else -> null + }, + description = doc.selectFirst("div.manga-desc p.pdesc")?.html(), + chapters = doc.select("ul.basic-list li").mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a.ch-name") ?: return@mapChapters null + val href = a.attrAsRelativeUrl("href") + val name = a.text() + + MangaChapter( + id = generateUid(href), + name = name, + number = name.substringAfter('#').toFloatOrNull() ?: (i + 1f), + url = href, + scanlator = null, + uploadDate = 0L, + branch = null, + source = source, + volume = 0, + ) + }, + ) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + "/all" + val doc = webClient.httpGet(fullUrl).parseHtml() + + return doc.select("img.chapter_img.lazyload").mapNotNull { img -> + val imageUrl = img.attrOrNull("data-src") ?: return@mapNotNull null + MangaPage( + id = generateUid(imageUrl), + url = imageUrl, + preview = null, + source = source, + ) + } + } + + private suspend fun fetchAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain").parseHtml() + return doc.select("div.cr-anime-box.genre-box a.genre-name").mapToSet { a -> + val href = a.attr("href") + val key = href.substringAfterLast('/').substringBefore("-comic") + MangaTag( + key = key, + title = a.text().toTitleCase(sourceLocale), + source = source, + ) + } + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/en/ResetScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/en/ResetScans.kt deleted file mode 100644 index cc09982a..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/en/ResetScans.kt +++ /dev/null @@ -1,22 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.fuzzydoodle.en - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaParserSource -import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.* - -@MangaSourceParser("RESETSCANS", "ResetScans", "en") -internal class ResetScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.RESETSCANS, domain = "rspro.xyz", pageSize = 18) { - - override suspend fun getFilterOptions() = super.getFilterOptions().copy( - availableContentTypes = EnumSet.of( - ContentType.MANGA, - ContentType.MANHWA, - ContentType.MANHUA, - ), - ) -} - diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt index f7c72072..c2b6d43e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt @@ -1,7 +1,6 @@ package org.koitharu.kotatsu.parsers.site.galleryadults.all import org.jsoup.nodes.Document -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* @@ -9,7 +8,6 @@ import org.koitharu.kotatsu.parsers.site.galleryadults.GalleryAdultsParser import org.koitharu.kotatsu.parsers.util.* import java.util.* -@Broken @MangaSourceParser("DOUJINDESUUK", "DoujinDesu.uk", type = ContentType.HENTAI) internal class DoujinDesuUk(context: MangaLoaderContext) : GalleryAdultsParser(context, MangaParserSource.DOUJINDESUUK, "doujindesu.uk", 25) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt index 9186d5d4..b4b5dbc8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.heancms.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.heancms.HeanCms +@Broken @MangaSourceParser("MODESCANLATOR", "ModeScanlator", "pt") internal class ModeScanlator(context: MangaLoaderContext) : HeanCms(context, MangaParserSource.MODESCANLATOR, "site.modescanlator.net") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt index a4c0b5af..184a4284 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.heancmsalt.HeanCmsAlt -@Broken +@Broken // Not dead but changed template @MangaSourceParser("MANGAESP", "MangaEsp", "es") internal class MangaEsp(context: MangaLoaderContext) : HeanCmsAlt(context, MangaParserSource.MANGAESP, "mangaesp.net", 15) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/en/PhiliaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/en/PhiliaScans.kt index dd02a9f3..d517d513 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/en/PhiliaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/en/PhiliaScans.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.iken.IkenParser @MangaSourceParser("PHILIASCANS", "PhiliaScans", "en") internal class PhiliaScans(context: MangaLoaderContext) : - IkenParser(context, MangaParserSource.PHILIASCANS, "philiascans.com") { + IkenParser(context, MangaParserSource.PHILIASCANS, "philiascans.org") { override val selectPages = "main section img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/AgsComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/AgsComics.kt new file mode 100644 index 00000000..a63dfe78 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/AgsComics.kt @@ -0,0 +1,10 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("AGSCOMICS", "AgsComics", "en") +internal class AgsComics(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.AGSCOMICS, "agrcomics.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LuaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LuaScans.kt index 750f59f8..791298d8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LuaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LuaScans.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.keyoapp.en +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.keyoapp.KeyoappParser +@Broken @MangaSourceParser("LUASCANS", "luaComic.net", "en") internal class LuaScans(context: MangaLoaderContext) : - KeyoappParser(context, MangaParserSource.LUASCANS, "luacomic.net") + KeyoappParser(context, MangaParserSource.LUASCANS, "luacomic.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/liliana/ja/MangaKoma01.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/liliana/ja/MangaKoma01.kt index a203ce12..e6e5f0a0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/liliana/ja/MangaKoma01.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/liliana/ja/MangaKoma01.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.liliana.LilianaParser @MangaSourceParser("MANGAKOMA01", "MangaKoma01", "ja") internal class MangaKoma01(context: MangaLoaderContext) : - LilianaParser(context, MangaParserSource.MANGAKOMA01, "mangakoma01.net") + LilianaParser(context, MangaParserSource.MANGAKOMA01, "mangakoma01.com") 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 3aa7be5b..68195b56 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 @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBTOONEMPIRE", "WebtoonEmpire", "ar") internal class WebtoonEmpire(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.WEBTOONEMPIRE, "webtoonempire-ron.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.WEBTOONEMPIRE, "webtoonempire-bl.com", pageSize = 10) { override val listUrl = "webtoon/" override val datePattern = "d MMMM، yyyy" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt index a8b1906d..5a5d342b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ASURASCANSGG", "AsuraScansGg", "en") internal class AsuraScansGg(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.ASURASCANSGG, "asurascansgg.com") + MadaraParser(context, MangaParserSource.ASURASCANSGG, "asurascans.us") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt index bb591013..07dd077c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt @@ -1,13 +1,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken @MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI) internal class CoComic(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co") 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 index f3d38e8a..bf80d11a 100644 --- 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 @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken // Not dead, changed template +@Broken @MangaSourceParser("COLORED_MANGA", "ColoredManga", "en") internal class ColoredManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.COLORED_MANGA, "coloredmanga.net") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt index 5edbb49c..e5b4117f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("HIPERDEX", "HiperToon", "en", ContentType.HENTAI) internal class HiperDex(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.HIPERDEX, "hipertoon.com", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt index 00a42595..023639f9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt @@ -10,7 +10,7 @@ import java.util.* @Broken // Redirect to @XMANHWA @MangaSourceParser("INSTAMANHWA", "InstaManhwa", "en", ContentType.HENTAI) internal class InstaManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.INSTAMANHWA, "www.xmanhwa.me", 15) { + MadaraParser(context, MangaParserSource.INSTAMANHWA, "www.manhwaden.com", 15) { override val sourceLocale: Locale = Locale.ENGLISH override val selectPage = "img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Kiara18.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Kiara18.kt index 7b080532..7ee71d64 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Kiara18.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Kiara18.kt @@ -1,12 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -// need to login and pay for read +@Broken @MangaSourceParser("KIARA18", "Kiara18", "en", ContentType.HENTAI) internal class Kiara18(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.KIARA18, "18.kiara.cool") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxTo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LikeMangaIn.kt similarity index 50% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxTo.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LikeMangaIn.kt index 7e1e6a6a..35a11eb8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxTo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LikeMangaIn.kt @@ -1,14 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en -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("MANGATX_TO", "MangaTx.to", "en") -internal class MangaTxTo(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGATX_TO, "mangatx.to", 10) { - override val tagPrefix = "manhua-genre/" +@MangaSourceParser("LIKEMANGAIN", "LikeManga.in", "en") +internal class LikeMangaIn(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LIKEMANGAIN, "likemanga.in", 36) { + override val datePattern = "d MMMM, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt index dae89dc8..e64d599d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGARYU", "MangaRyu", "en", ContentType.HENTAI) internal class MangaRyu(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGARYU, "mangaryu.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaToon.kt new file mode 100644 index 00000000..2546c0e2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaToon.kt @@ -0,0 +1,11 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANHWATOON", "ManhwaToon", "en", ContentType.HENTAI) +internal class ManhwaToon(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANHWATOON, "www.manhwatoon.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt new file mode 100644 index 00000000..e1631c1f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt @@ -0,0 +1,11 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RESETSCANS", "ReadManhua", "en") +internal class ResetScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.RESETSCANS, "reset-scans.co", 20) + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SiteManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SiteManga.kt new file mode 100644 index 00000000..b7333bc9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SiteManga.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SITEMANGA", "SiteManga", "en") +internal class SiteManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.SITEMANGA, "sitemanga.com") { + override val datePattern = "MM/dd/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt index b743cbb0..0c463753 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +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("ZINMANGA_MS", "ZinManga.ms", "en") internal class ZinMangaMS(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.ZINMANGA_MS, "zinmanga.ms") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ArtesSupremas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ArtesSupremas.kt index b31f16c1..8f79b28f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ArtesSupremas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ArtesSupremas.kt @@ -1,10 +1,12 @@ 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("ARTESSUPREMAS", "ArtesSupremas", "es") internal class ArtesSupremas(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.ARTESSUPREMAS, "artessupremas.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseOfOtakus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseOfOtakus.kt index 767332fd..fe43cc49 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseOfOtakus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseOfOtakus.kt @@ -1,10 +1,12 @@ 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("HOUSEOFOTAKUS", "HouseOfOtakus", "es") internal class HouseOfOtakus(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.HOUSEOFOTAKUS, "houseofotakus.xyz") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt index 876564ee..7752e0b2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KNIGHTNOSCANLATION", "TwoBlueScans", "es") internal class KnightnoScanlation(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "lectorkns.eyudud.net") { + MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "kns.cookni.net") { override val listUrl = "sr/" override val tagPrefix = "generos/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LegendScanlations.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LegendScanlations.kt index 69a99c39..6c720c42 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LegendScanlations.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LegendScanlations.kt @@ -1,10 +1,12 @@ 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("LEGENDSCANLATIONS", "LegendScanlations", "es") internal class LegendScanlations(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LEGENDSCANLATIONS, "legendscanlations.com", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt index 6f5c21b1..728d532c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt @@ -8,4 +8,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAXICO", "MangaXico", "es", ContentType.HENTAI) internal class Mangaxico(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGAXICO, "mangaxico.com", 24) + MadaraParser(context, MangaParserSource.MANGAXICO, "mangagojo18.com", 24) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Manhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Manhwas.kt new file mode 100644 index 00000000..292d0306 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Manhwas.kt @@ -0,0 +1,11 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANHWAS_ES", "Manhwas.es", "es", ContentType.HENTAI) +internal class Manhwas(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANHWAS_ES, "manhwas.es", 30) 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 adca1326..f2f66bb1 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 @@ -1,11 +1,12 @@ 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 -// redirect to @PANCONCOLA +@Broken @MangaSourceParser("MANTRAZSCAN", "MantrazScan", "es") internal class MantrazScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANTRAZSCAN, "artessupremas.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mmdaos.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mmdaos.kt new file mode 100644 index 00000000..8f62ce24 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mmdaos.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MMDAOS", "Mmdaos", "es") +internal class Mmdaos(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MMDAOS, "mmdaos.com") 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 3faa696f..4c7f8051 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 @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NOBLESSETRANSLATIONS", "NoblesseTranslations", "es") internal class NoblesseTranslations(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "www.swordalada.org") + MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "swordalada.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt index 74801cc8..0b44ab8c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt @@ -1,10 +1,12 @@ 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("PANCONCOLA", "Panconcola", "es") internal class Panconcola(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.PANCONCOLA, "artessupremas.com") { 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 index 90f04a3f..618da135 100644 --- 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 @@ -1,10 +1,12 @@ 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("RAGNAROKSCAN", "RagnarokScan", "es") internal class RagnarokScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.RAGNAROKSCAN, "ragnarokscan.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesAmistosas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesAmistosas.kt index 9e65294a..aff37d9a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesAmistosas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesAmistosas.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TRADUCCIONESAMISTOSAS", "TraduccionesAmistosas", "es") internal class TraduccionesAmistosas(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.TRADUCCIONESAMISTOSAS, "traduccionesamistosas.eyudud.net", 10) { + MadaraParser(context, MangaParserSource.TRADUCCIONESAMISTOSAS, "traduccionesamistosas.cookni.net", 10) { override val datePattern = "d 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Zevep.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Zevep.kt new file mode 100644 index 00000000..534f93b8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Zevep.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZEVEP", "Zevep", "es") +internal class Zevep(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZEVEP, "zevep.com", 16) 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 index 1e12d442..d0cc50c8 100644 --- 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 @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RAIJINSCANS", "RaijinScans", "fr") internal class RaijinScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.RAIJINSCANS, "raijinscans.fr") { + MadaraParser(context, MangaParserSource.RAIJINSCANS, "raijinscans.net") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt index 406f4cc5..2601ffc6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt @@ -9,7 +9,7 @@ import java.util.* @MangaSourceParser("BIRDTOON", "BirdToon", "id", ContentType.HENTAI) internal class BirdToon(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.BIRDTOON, "birdtoon.net", 10) { + MadaraParser(context, MangaParserSource.BIRDTOON, "birdtoon.org", 10) { override val sourceLocale: Locale = Locale.ENGLISH override val tagPrefix = "komik-genre/" override val listUrl = "komik/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt index 9d96a77a..70efed98 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.madara.id +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("HWAGO", "Hwago", "id") internal class Hwago(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.HWAGO, "hwago.org") { + MadaraParser(context, MangaParserSource.HWAGO, "hwago01.xyz") { override val datePattern = "d MMMM yyyy" } 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 index de1081f8..aa52bef3 100644 --- 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 @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KLIKMANGA", "KlikManga", "id", ContentType.HENTAI) internal class KlikManga(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.KLIKMANGA, "klikmanga.id", 36) { + MadaraParser(context, MangaParserSource.KLIKMANGA, "klikmanga.com", 36) { 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 index 3f6184d3..aea6bd6b 100644 --- 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 @@ -11,13 +11,13 @@ import kotlin.random.Random @MangaSourceParser("MGKOMIK", "MgKomik", "id") internal class Mgkomik(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MGKOMIK, "mgkomik.id", 20) { + MadaraParser(context, MangaParserSource.MGKOMIK, "mgkomik.org", 20) { override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) keys.add(userAgentKey) } - + override val tagPrefix = "genres/" override val listUrl = "komik/" override val datePattern = "dd MMM yy" 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 index 769ac990..9d2c4ff8 100644 --- 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 @@ -8,7 +8,7 @@ import java.util.* @MangaSourceParser("SHINIGAMI", "Shinigami", "id") internal class Shinigami(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami06.com", 10) { + MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami07.com", 10) { override val tagPrefix = "genre/" override val listUrl = "series/" 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 index ebf9af46..e8624c04 100644 --- 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 @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.id +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("WORLDMANHWAS", "WorldManhwas", "id", ContentType.HENTAI) internal class WorldManhwas(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.WORLDMANHWAS, "worldmanhwas.zone", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt index 3d18ba7f..b07c5592 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt @@ -9,7 +9,7 @@ import java.util.Locale @MangaSourceParser("XMANHWA", "XManhwa", "id", ContentType.HENTAI) internal class XManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.XMANHWA, "www.xmanhwa.me", 10) { + MadaraParser(context, MangaParserSource.XMANHWA, "www.manhwaden.com", 10) { override val sourceLocale: Locale = Locale.ENGLISH override val selectPage = "img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt index 6becb892..7f6a200d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.id +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("YUBIKIRI", "Yubikiri", "id") internal class Yubikiri(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.YUBIKIRI, "yubikiri.my.id", 18) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt index 681e7f15..b59c81dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.parsers.site.madara.ja import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.Manga @@ -19,6 +20,7 @@ import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.toTitleCase import java.util.Locale +@Broken @MangaSourceParser("MANGAFENXI", "MangaFenxi", "ja") internal class MangaFenxi(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGAFENXI, "mangafenxi.net", 40) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt index 6b6e5059..e413541c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ja +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("RAWMANGA", "RawManga", "ja") internal class RawManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.RAWMANGA, "rawmanga.su", 24) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt index 47b97083..3fab6ed1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RAWXZ", "RawXz", "ja") internal class RawXz(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.RAWXZ, "rawxz.si") { + MadaraParser(context, MangaParserSource.RAWXZ, "rawxz.ac") { override val listUrl = "jp-manga/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArcticScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArcticScan.kt index ce71a1ac..ccef29a2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArcticScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArcticScan.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ARCTICSCAN", "ArcticScan", "pt") internal class ArcticScan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.ARCTICSCAN, "alonescanlator.com.br") { + MadaraParser(context, MangaParserSource.ARCTICSCAN, "arcticscan.top") { override val datePattern: String = "yyyy-MM-dd" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt index 4112cfb9..cd28e942 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt @@ -1,14 +1,10 @@ package org.koitharu.kotatsu.parsers.site.madara.pt -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("ARGOSCOMICS", "ArgosComics", "pt") internal class ArgosComics(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.ARGOSCOMICS, "argoscomics.com.br") { - override val datePattern: String = "d 'de' MMMM 'de' yyyy" -} + MadaraParser(context, MangaParserSource.ARGOSCOMICS, "argoscomic.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt index 6be81132..a2738ac3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FENIXPROJECT", "FenixProject", "pt") internal class FenixProject(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.FENIXPROJECT, "fenixproject.xyz", 10) { + MadaraParser(context, MangaParserSource.FENIXPROJECT, "fenixproject.site", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimitedTimePoject.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimitedTimePoject.kt index e04f858b..8e094fe7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimitedTimePoject.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimitedTimePoject.kt @@ -10,5 +10,5 @@ internal class LimitedTimePoject(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LIMITEDTIMEPOJECT, "limitedtimeproject.com", 10) { override val listUrl = "manhwa/" override val tagPrefix = "manhwa-genero/" - override val datePattern = "dd 'de' MMMMM 'de' yyyy" + override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt index 1356b291..d17ad20f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +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("LINKSTARTSCAN", "LinkStartScan", "pt") internal class LinkStartScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LINKSTARTSCAN, "www.linkstartscan.xyz") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt index 79ac806a..74d08138 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +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("MANGANANQUIM", "MangaNanquim", "pt") internal class MangaNanquim(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGANANQUIM, "mangananquim.site", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaOnline.kt new file mode 100644 index 00000000..e4ecb1f7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaOnline.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAONLINE_BLOG", "MangaOnline", "pt") +internal class MangaOnline(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAONLINE_BLOG, "mangaonline.blog", 16) { + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SsReading.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SsReading.kt new file mode 100644 index 00000000..e2070522 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SsReading.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SSREADING", "SsReading", "pt") +internal class SsReading(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.SSREADING, "ssreading.com.br") { + override val datePattern: String = "dd 'de' MMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt index df735e7b..9c08570c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SUSSYSCAN", "SussyScan", "pt") internal class SussyScan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.SUSSYSCAN, "oldi.sussytoons.com") + MadaraParser(context, MangaParserSource.SUSSYSCAN, "oldi.sussytoons.site") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/XsScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/XsScan.kt new file mode 100644 index 00000000..a8ffefe6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/XsScan.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("XSSCAN", "XsScan", "pt") +internal class XsScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.XSSCAN, "xsscan.xyz") { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt index 392e7978..e8b5ac97 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("CAT_300", "Cat300", "th", ContentType.HENTAI) -internal class Cat300(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.CAT_300, "cat300.net") { +internal class Cat300(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.CAT_300, "cat-300.com") { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt index 61e66bfe..9b510800 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DOMALFANSB", "DomalFansub", "tr") internal class DomalFansb(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.DOMALFANSB, "domalfansub.com.tr") { + MadaraParser(context, MangaParserSource.DOMALFANSB, "domalfansb.online") { override val datePattern = "d MMMM yyyy" override val tagPrefix = "manga-turleri/" } 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 48ddb592..00c8b829 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 @@ -9,6 +9,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @Broken // Redirect to @MANGAGEZGINI @MangaSourceParser("GLORYMANGA", "GloryManga", "tr") internal class GloryManga(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.GLORYMANGA, "mangagezgini.dev", 18) { + MadaraParser(context, MangaParserSource.GLORYMANGA, "mangagezgini.co", 18) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt index 0eff6080..8093a2e7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser //This source requires an account. @MangaSourceParser("GRIMELEK", "Grimelek", "tr") internal class Grimelek(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.GRIMELEK, "grimelek.dev", 20) { + MadaraParser(context, MangaParserSource.GRIMELEK, "grimelek.one", 20) { override val datePattern = "d MMMM yyyy" override val listUrl = "seri/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaGezgini.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaGezgini.kt index 156c6538..4fb122ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaGezgini.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaGezgini.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAGEZGINI", "MangaGezgini", "tr") internal class MangaGezgini(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGAGEZGINI, "mangagezgini.dev", pageSize = 20) { + MadaraParser(context, MangaParserSource.MANGAGEZGINI, "mangagezgini.co", pageSize = 20) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaRuhu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaRuhu.kt index 97e5c2c0..860c26fd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaRuhu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaRuhu.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.tr +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("MANGARUHU", "MangaRuhu", "tr") internal class MangaRuhu(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGARUHU, "mangaruhu.com", 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt index d6cdb672..6a77010b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAWT_NET", "MangaWt.net", "tr") internal class MangaWtNet(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGAWT_NET, "mangawt.net") + MadaraParser(context, MangaParserSource.MANGAWT_NET, "mangawt.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt deleted file mode 100644 index 78ad60d8..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt +++ /dev/null @@ -1,13 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.madara.tr - -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 - -//Images blocked by ReCAPTCHA -@Broken // https://github.com/KotatsuApp/kotatsu-parsers/issues/1250 -@MangaSourceParser("MERLINSCANS", "MerlinScans", "tr") -internal class MerlinScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MERLINSCANS, "merlinscans.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt index c909f756..9fcd3b5f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt @@ -8,6 +8,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser //This source requires an account. @MangaSourceParser("OPIATOON", "OpiaToon", "tr") internal class OpiaToon(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.OPIATOON, "opiatoon.biz", 20) { + MadaraParser(context, MangaParserSource.OPIATOON, "opiatoon.pro", 20) { override val datePattern = "d MMMM" } 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 497d3e28..e2477e96 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 @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBTOONHATTI", "WebtoonHatti", "tr") internal class Webtoonhatti(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.WEBTOONHATTI, "webtoonhatti.net", 20) { + MadaraParser(context, MangaParserSource.WEBTOONHATTI, "webtoonhatti.dev", 20) { override val listUrl = "webtoon/" override val tagPrefix = "webtoon-tur/" override val datePattern = "d MMMM" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiBar.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiBar.kt new file mode 100644 index 00000000..96d09123 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiBar.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YAOIBAR", "YaoiBar", "tr") +internal class YaoiBar(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YAOIBAR, "yaoibar.gay", 16) { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt index 2f4d559d..93a2540d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt @@ -8,6 +8,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YAOIMANGAOKU", "YaoiMangaOku", "tr", ContentType.HENTAI) internal class YaoiMangaOku(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.YAOIMANGAOKU, "yaoimangaoku.com", 16) { + MadaraParser(context, MangaParserSource.YAOIMANGAOKU, "yaoimangaoku.net", 16) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YetiskinRuyaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YetiskinRuyaManga.kt new file mode 100644 index 00000000..b691e4c6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YetiskinRuyaManga.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YETISKINRUYAMANGA", "YaoiMangaOku", "tr") +internal class YetiskinRuyaManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YETISKINRUYAMANGA, "www.yetiskinruyamanga.com", 16) { + override val datePattern = "dD/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt index 96fd9a08..56d606a6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.vi +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("PINKTEACOMIC", "PinkTeaComic", "vi") internal class PinkTeaComic(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.PINKTEACOMIC, "pinkteacomics.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/RuaHapChanhDay.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/RuaHapChanhDay.kt new file mode 100644 index 00000000..0010f7f3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/RuaHapChanhDay.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.vi + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RUAHAPCHANHDAY", "RuaHapChanhDay", "vi") +internal class RuaHapChanhDay(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.RUAHAPCHANHDAY, "ruahapchanhday.com", 30) { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaNoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaNoon.kt index d2f52c59..689b2bdf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaNoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaNoon.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANGANOON", "MangaNoon", "ar") internal class MangaNoon(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANGANOON, "vrnoin.site", pageSize = 24, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt index c6b5ace6..5007ac39 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar +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.mangareader.MangaReaderParser +@Broken @MangaSourceParser("NOONSCAN", "NoonScan.com", "ar") internal class NoonScan(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.NOONSCAN, "noonscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt index 8cd94dce..890876af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -@MangaSourceParser("NORMOYUN", "MaxLevelTeam", "ar") +@MangaSourceParser("NORMOYUN", "MangaSwat", "ar") internal class Normoyun(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.NORMOYUN, "swatscans.com", pageSize = 42, searchPageSize = 39) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt index c7fa3a16..dff36b6c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("SCARMANGA", "ScarManga", "ar") internal class ScarManga(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.SCARMANGA, "scarmanga.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt index f5e780eb..2873f0ed 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt @@ -1,13 +1,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@Broken @MangaSourceParser("UMIMANGA", "UmiManga", "ar") internal class UmiManga(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.UMIMANGA, "www.umimanga.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt index 52166447..0cf864ef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("ANIGLISCANS", "AnigliScans", "en") internal class AnigliScans(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.ANIGLISCANS, "anigliscans.xyz", pageSize = 47, searchPageSize = 47) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt index 27fe4e22..00821364 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("ASCALONSCANS", "AscalonScans", "en") internal class AscalonScans(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.ASCALONSCANS, "ascalonscans.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt index 27acdb55..e52435ad 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("BIRDMANGA", "BirdManga", "en") internal class BirdManga(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.BIRDMANGA, "birdmanga.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt index b4af12ca..62ea472b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("CYPHERSCANS", "CypherScans", "en") internal class CypherScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.CYPHERSCANS, "cyphscans.xyz", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.CYPHERSCANS, "cypheroscans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DexHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DexHentai.kt index 23eba63f..1004f7ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DexHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DexHentai.kt @@ -8,4 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DEXHENTAI", "DexHentai", "en", ContentType.HENTAI) internal class DexHentai(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.DEXHENTAI, "dexhentai.com", 40, 36) + MangaReaderParser(context, MangaParserSource.DEXHENTAI, "dexhentai.com", 40, 36) { + override val listUrl = "/title" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt index f4bcf335..bdc99d82 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("EROSSCANS", "ErosScans", "en") internal class ErosScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.EROSSCANS, "tercoscans.xyz", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.EROSSCANS, "erosxscans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaTxCc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaTxCc.kt new file mode 100644 index 00000000..97e63da1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaTxCc.kt @@ -0,0 +1,13 @@ +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("MANGATX_CC", "MangaTx.cc", "en") +internal class MangaTxCc(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGATX_CC, "mangatx.cc", 30, 21) { + override val datePattern = "dd-MM-yyyy" + override val listUrl = "/manga-list" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt index 08173d52..7e27ecc6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@Broken +@Broken // Not dead but changed template @MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en") internal class ManhwaFreak(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANHWA_FREAK, "manhwafreak.xyz", pageSize = 30, searchPageSize = 42) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt index 1dd67e72..e4e046a3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("READERSPOINT", "ReadersPoint", "en") internal class ReadersPoint(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.READERSPOINT, "qscomics.org", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt index c595f418..cd000cc7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.urlEncoded import java.util.* +@Broken @MangaSourceParser("ZAHARD", "Zahard", "en") internal class Zahard(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.ZAHARD, "zahard.xyz", pageSize = 20, searchPageSize = 30) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt index 6d7177b1..38ae6baf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("INARIMANGA", "InariManga", "es") internal class InariManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.INARIMANGA, "vrinari.org", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.INARIMANGA, "clubinari.org", pageSize = 20, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt index 1dd37cfc..246ec008 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt @@ -11,7 +11,7 @@ internal class InariPikav(context: MangaLoaderContext) : MangaReaderParser( context, MangaParserSource.INARIPIKAV, - "vrinari.org", + "clubinari.org", pageSize = 10, searchPageSize = 10, ) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PornhwaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PornhwaScans.kt index 76e5ff5b..5e387b4f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PornhwaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PornhwaScans.kt @@ -13,4 +13,6 @@ internal class PornhwaScans(context: MangaLoaderContext) : get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, ) + override val selectChapter = "div.chapter-list > a.chapter-item" + } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt index c5970f3f..da08dd4a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt @@ -9,7 +9,7 @@ import java.util.* @MangaSourceParser("COSMIC_SCANS", "CosmicScans.id", "id") internal class CosmicScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.COSMIC_SCANS, "cosmic1.co", pageSize = 30, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.COSMIC_SCANS, "cosmic345.co", pageSize = 30, searchPageSize = 30) { override val sourceLocale: Locale = Locale.ENGLISH override val filterCapabilities: MangaListFilterCapabilities diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt index a454df72..2145168d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DOUJINKU", "DoujinKu", "id", ContentType.HENTAI) internal class DoujinKu(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.DOUJINKU, "doujinku.xyz", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.DOUJINKU, "doujinku.org", pageSize = 20, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/IzanamiScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/IzanamiScans.kt new file mode 100644 index 00000000..547a03c0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/IzanamiScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("IZANAMISCANS", "IzanamiScans", "id") +internal class IzanamiScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.IZANAMISCANS, "izanamiscans.my.id", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt index bf1cf936..029f40b5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KIRYUU", "Kiryuu", "id") internal class KiryuuParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KIRYUU, "kiryuu.org", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KIRYUU, "kiryuu.one", pageSize = 30, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt index 98144cc0..b9189475 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt @@ -8,7 +8,7 @@ import java.util.* @MangaSourceParser("KOMIKLOKAL", "KomikMirror", "id") internal class KomikLokalParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KOMIKLOKAL, "komikmu.fun", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKLOKAL, "komikmu.icu", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt index 46f9edd6..83d46e19 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.id +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities @@ -7,6 +8,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* +@Broken @MangaSourceParser("KOMIKSAY", "KomikSay", "id") internal class KomikSay(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.KOMIKSAY, "komiksay.info", pageSize = 30, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt index 9abc9a0c..e9e763df 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt @@ -1,11 +1,23 @@ package org.koitharu.kotatsu.parsers.site.mangareader.id +import org.json.JSONObject import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities +import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.requireSrc +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.toRelativeUrl +import java.util.ArrayList +import java.util.Base64 @MangaSourceParser("KOMIKTAP", "KomikTap", "id", ContentType.HENTAI) internal class KomikTapParser(context: MangaLoaderContext) : @@ -14,4 +26,60 @@ internal class KomikTapParser(context: MangaLoaderContext) : get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, ) + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + + val test = docs.select(selectTestScript) + if (test.isNullOrEmpty() and !encodedSrc) { + return docs.select(selectPage).map { img -> + val url = img.requireSrc().toRelativeUrl(domain) + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } else { + val images = if (encodedSrc) { + val script = docs.select(selectScript) + var decode = "" + for (i in script) { + if (i.attr("src").startsWith("data:text/javascript;base64,")) { + decode = Base64.getDecoder().decode(i.attr("src").replace("data:text/javascript;base64,", "")) + .decodeToString() + if (decode.startsWith("ts_reader.run")) { + break + } + } + } + JSONObject(decode.substringAfter('(').substringBeforeLast(')')) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + + } else { + val script = docs.selectFirstOrThrow(selectTestScript) + JSONObject(script.data().substringAfter('(').substringBeforeLast(')')) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + } + + val pages = ArrayList(images.length()) + for (i in 0 until images.length()) { + pages.add( + MangaPage( + id = generateUid(images.getString(i)), + url = images.getString(i).replace("http:", "https:"), + preview = null, + source = source, + ), + ) + } + return pages + } + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt index 1a1e3b97..47ee4918 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("KOMIKCAST", "KomikCast", "id") internal class Komikcast(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KOMIKCAST, "komikcast.cz", pageSize = 60, searchPageSize = 28) { + MangaReaderParser(context, MangaParserSource.KOMIKCAST, "komikcast.bz", pageSize = 60, searchPageSize = 28) { override val listUrl = "/daftar-komik" override val datePattern = "MMM d, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt index 56ea67fc..23c20c12 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt @@ -9,6 +9,6 @@ import java.util.* @MangaSourceParser("KOMIKLOKALCFD", "KomikLokal.mom", "id", ContentType.HENTAI) internal class KomiklokalCfd(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KOMIKLOKALCFD, "komikmu.fun", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKLOKALCFD, "komikmu.icu", pageSize = 30, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt index 9c4dc086..79ec50b7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWAINDO", "ManhwaIndo", "id") internal class ManhwaIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWAINDO, "www.manhwaindo.st", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWAINDO, "manhwaindo.one", pageSize = 30, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt index eb8cf8f9..803ba552 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWALAND", "ManhwaLand.vip", "id", ContentType.HENTAI) internal class ManhwaLand(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWALAND, "manhwaland.vip", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWALAND, "manhwaland.lol", pageSize = 20, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt index 5c60eb2e..1e813d19 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWADESU", "ManhwaDesu", "id", ContentType.HENTAI) internal class ManhwadesuParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWADESU, "manhwadesu.my", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWADESU, "manhwadesu.asia", pageSize = 20, searchPageSize = 10) { override val listUrl = "/komik" override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt index 5983faca..d995454c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SEKAIKOMIK", "SekaiKomik", "id") internal class SekaikomikParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.SEKAIKOMIK, "sekaikomik.guru", pageSize = 20, searchPageSize = 100) { + MangaReaderParser(context, MangaParserSource.SEKAIKOMIK, "sekaikomik.mom", pageSize = 20, searchPageSize = 100) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SiiKomik.kt similarity index 59% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SiiKomik.kt index 0fa78497..7ab956d5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SiiKomik.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site.mangareader.en +package org.koitharu.kotatsu.parsers.site.mangareader.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser @@ -6,13 +6,13 @@ import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("AGSCOMICS", "AgsComics", "en") -internal class AgsComics(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.AGSCOMICS, "agrcomics.com", pageSize = 20, searchPageSize = 10) { - override val listUrl = "/series" - +@MangaSourceParser("SIIKOMIK", "SiiKomik", "id") +internal class SiiKomik(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SIIKOMIK, "siikomik.lat", pageSize = 20, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, + isSearchSupported = false, ) } + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt index 6cff3375..057f867d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt @@ -13,4 +13,5 @@ internal class SirenKomik(context: MangaLoaderContext) : get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, ) + override val selectChapter = ".list-chapter a" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKazani.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKazani.kt new file mode 100644 index 00000000..29913261 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKazani.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("MANGAKAZANI", "MangaKazani", "tr") +internal class MangaKazani(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGAKAZANI, "mangakazani.com", pageSize = 19, searchPageSize = 10) { + override val listUrl = "/seriler" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt index a4d35d2a..18b75dd4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr +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.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANGACIM", "Mangacim", "tr") internal class Mangacim(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANGACIM, "mangacim.com", pageSize = 20, searchPageSize = 20) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt new file mode 100644 index 00000000..81fc58e4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt @@ -0,0 +1,16 @@ +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.MangaListFilterCapabilities +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MERLINSCANS", "MerlinScans", "tr") +internal class MerlinScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MERLINSCANS, "merlinscans.com", pageSize = 20, searchPageSize = 10) { + override val filterCapabilities: MangaListFilterCapabilities + get() = super.filterCapabilities.copy( + 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 index 2df60833..7b1dae65 100644 --- 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 @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("NOXSCANS", "NoxScans", "tr") internal class NoxScans(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.NOXSCANS, "www.noxscans.com", pageSize = 30, searchPageSize = 20) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt index 77571b12..1f4b9d13 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt @@ -8,7 +8,13 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ROBINMANGA", "RobinManga", "tr") internal class RobinManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.ROBINMANGA, "robinmanga.com", pageSize = 20, searchPageSize = 25) { + MangaReaderParser( + context, + MangaParserSource.ROBINMANGA, + "www.guildknives.com", + pageSize = 20, + searchPageSize = 25, + ) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt index 6e0e9287..8a33a43d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("TEMPESTFANSUB", "TempestFansub.Com", "tr") internal class TempestfansubParser(context: MangaLoaderContext) : MangaReaderParser( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt index 041611b8..2ce87111 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt @@ -155,13 +155,13 @@ internal abstract class MangaWorldParser( tags = tags, author = div.selectFirst(".author a")?.text(), state = - when (div.selectFirst(".status a")?.text()?.lowercase()) { - "in corso" -> MangaState.ONGOING - "finito" -> MangaState.FINISHED - "droppato" -> MangaState.ABANDONED - "in pausa" -> MangaState.PAUSED - else -> null - }, + when (div.selectFirst(".status a")?.text()?.lowercase()) { + "in corso" -> MangaState.ONGOING + "finito" -> MangaState.FINISHED + "droppato" -> MangaState.ABANDONED + "in pausa" -> MangaState.PAUSED + else -> null + }, source = source, isNsfw = isNsfwSource, ) @@ -184,30 +184,30 @@ internal abstract class MangaWorldParser( val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() return manga.copy( altTitle = - doc.selectFirst(".meta-data .font-weight-bold:contains(Titoli alternativi:)") - ?.parent() - ?.ownText() - ?.substringAfter(": ") - ?.trim(), + doc.selectFirst(".meta-data .font-weight-bold:contains(Titoli alternativi:)") + ?.parent() + ?.ownText() + ?.substringAfter(": ") + ?.trim(), description = doc.getElementById("noidungm")?.text().orEmpty(), chapters = - doc.select(".chapters-wrapper .chapter a").mapChapters(reversed = true) { i, a -> - val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain) - MangaChapter( - id = generateUid(url), - name = a.selectFirst("span.d-inline-block")?.text() ?: "Chapter : ${i + 1f}", - number = i + 1f, - volume = 0, - url = "$url?style=list", - scanlator = null, - uploadDate = - SimpleDateFormat("dd MMMM yyyy", Locale.ITALIAN).tryParse( - a.selectFirst(".chap-date")?.text(), - ), - branch = null, - source = source, - ) - }, + doc.select(".chapters-wrapper .chapter a").mapChapters(reversed = true) { i, a -> + val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain) + MangaChapter( + id = generateUid(url), + name = a.selectFirst("span.d-inline-block")?.text() ?: "Chapter : ${i + 1f}", + number = i + 1f, + volume = 0, + url = "$url?style=list", + scanlator = null, + uploadDate = + SimpleDateFormat("dd MMMM yyyy", Locale.ITALIAN).tryParse( + a.selectFirst(".chap-date")?.text(), + ), + branch = null, + source = source, + ) + }, ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt index ce899000..0174ff4d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.ar import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import org.koitharu.kotatsu.parsers.util.* import java.util.* +@Broken @MangaSourceParser("ONMA", "Onma", "ar") internal class Onma(context: MangaLoaderContext) : MmrcmsParser(context, MangaParserSource.ONMA, "onma.me") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt index ae63027e..e677c92a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.onemanga.fr +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.onemanga.OneMangaParser +@Broken @MangaSourceParser("KAIJUNO8", "KaijuNo8", "fr") internal class KaijuNo8(context: MangaLoaderContext) : OneMangaParser(context, MangaParserSource.KAIJUNO8, "kaijuno8.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt index 10b9f514..6b47090b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.sinmh.SinmhParser @MangaSourceParser("GUFENGMH", "Gufengmh", "zh") internal class Gufengmh(context: MangaLoaderContext) : - SinmhParser(context, MangaParserSource.GUFENGMH, "www.gufengmh9.com") + SinmhParser(context, MangaParserSource.GUFENGMH, "www.gufengmh.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt index 7e653cbc..70eecf66 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt @@ -76,7 +76,7 @@ internal class SadScans(context: MangaLoaderContext) : SinglePageMangaParser(con chapters = doc.select(".chap-section .chap") .mapChapters(reversed = true) { i, div -> val a = div.selectFirstOrThrow("a") - val url = "/" + a.attrAsRelativeUrl("href").toAbsoluteUrl(domain) + val url = "/" + a.attrAsRelativeUrl("href") MangaChapter( id = generateUid(url), name = a.text(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt index ccf5be94..f5894e82 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/DuaLeoTruyen.kt @@ -1,8 +1,5 @@ package org.koitharu.kotatsu.parsers.site.vi -import org.json.JSONArray -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -17,7 +14,7 @@ import java.util.* internal class DuaLeoTruyen(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.DUALEOTRUYEN, 60) { - override val configKeyDomain: ConfigKey.Domain + override val configKeyDomain: ConfigKey.Domain get() = ConfigKey.Domain("dualeotruyenomega.com") override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP) @@ -29,7 +26,7 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : override val availableSortOrders: Set = EnumSet.of( SortOrder.UPDATED, - SortOrder.POPULARITY + SortOrder.POPULARITY, ) override val filterCapabilities: MangaListFilterCapabilities @@ -51,11 +48,13 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : append("?key=") append(filter.query.urlEncoded()) } + filter.tags.isNotEmpty() -> { append("/the-loai/") append(filter.tags.first().key) append(".html") } + else -> when (order) { SortOrder.POPULARITY -> append("/top-ngay.html") else -> append("/truyen-moi-cap-nhat.html") @@ -82,7 +81,7 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : tags = emptySet(), state = null, author = null, - source = source + source = source, ) } } @@ -97,7 +96,7 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : MangaTag( key = it.attr("href").substringAfterLast('/').substringBefore('.'), title = it.text().toTitleCase(sourceLocale), - source = source + source = source, ) }, state = when (doc.selectFirst(".info-item:has(.fa-rss)")?.text()?.removePrefix("Tình trang: ")) { @@ -122,7 +121,7 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : source = source, volume = 0, ) - } + }, ) } @@ -138,8 +137,8 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : form = mapOf( "action" to "update_view_chap", "truyen" to comicsId, - "chap" to chapterId - ) + "chap" to chapterId, + ), ) } @@ -149,22 +148,22 @@ internal class DuaLeoTruyen(context: MangaLoaderContext) : id = generateUid(url), url = url, preview = null, - source = source + source = source, ) } } - private suspend fun fetchAvailableTags(): Set { + private fun fetchAvailableTags(): Set { return listOf( "18+", "Đam Mỹ", "Harem", "Truyện Màu", "BoyLove", "GirlLove", "Phiêu lưu", "Yaoi", "Hài Hước", "Bách Hợp", "Chuyển Sinh", "Drama", "Hành Động", "Kịch Tính", "Cổ Đại", "Ecchi", "Hentai", "Lãng Mạn", - "Người Thú", "Tình Cảm", "Yuri", "Oneshot", "Doujinshi", "ABO" + "Người Thú", "Tình Cảm", "Yuri", "Oneshot", "Doujinshi", "ABO", ).mapToSet { name -> MangaTag( key = name.lowercase().replace(' ', '-'), title = name, - source = source + source = source, ) } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt index cf58c14e..2069e821 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt @@ -6,6 +6,7 @@ import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaParser import org.koitharu.kotatsu.parsers.MangaSourceParser @@ -18,6 +19,7 @@ import java.util.* private const val PAGE_SIZE = 15 private const val SEARCH_PAGE_SIZE = 10 +@Broken @MangaSourceParser("HENTAIVN", "HentaiVN", "vi", type = ContentType.HENTAI) internal class HentaiVNParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.HENTAIVN) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenGG.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenGG.kt index 748f9d02..6b3986c0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenGG.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyenGG.kt @@ -1,6 +1,5 @@ package org.koitharu.kotatsu.parsers.site.vi -import androidx.collection.arraySetOf import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt index 1e45c244..08b4df66 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/DocTruyen3Q.kt @@ -12,10 +12,10 @@ import java.util.* @MangaSourceParser("DOCTRUYEN3Q", "DocTruyen3Q", "vi") internal class DocTruyen3Q(context: MangaLoaderContext) : - WpComicsParser(context, MangaParserSource.DOCTRUYEN3Q, "doctruyen3qk.pro", 36) { + WpComicsParser(context, MangaParserSource.DOCTRUYEN3Q, "doctruyen3qw.com", 36) { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain( - "doctruyen3qk.pro", "doctruyen3qw.pro", "doctruyen3qvip.com", "truyen3qvip.com", + "doctruyen3qw.com", "doctruyen3qk.pro", "doctruyen3qw.pro", "doctruyen3qvip.com", "truyen3qvip.com", ) override val datePattern = "dd/MM/yyyy" @@ -177,7 +177,7 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : } } - protected fun parseChapterDate(dateText: String?): Long { + private fun parseChapterDate(dateText: String?): Long { if (dateText == null) return 0 val relativeTimePattern = Regex("(\\d+)\\s*(phút|giờ|ngày|tuần) trước") @@ -231,7 +231,7 @@ internal class DocTruyen3Q(context: MangaLoaderContext) : id = generateUid(url), url = url, preview = null, - source = source + source = source, ) } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt index c10dfaef..d8fdf0c7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyen.kt @@ -16,7 +16,7 @@ internal class TopTruyen(context: MangaLoaderContext) : override val configKeyDomain = ConfigKey.Domain( "www.toptruyento.pro", - "www.toptruyenpro1.com" + "www.toptruyenpro1.com", ) override val datePattern = "dd/MM/yyyy" @@ -178,7 +178,7 @@ internal class TopTruyen(context: MangaLoaderContext) : } } - protected fun parseChapterDate(dateText: String?): Long { + private fun parseChapterDate(dateText: String?): Long { if (dateText == null) return 0 val relativeTimePattern = Regex("(\\d+)\\s*(phút|giờ|ngày|tuần) trước") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt index 30cb77d3..dc4daa9f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.id +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.zeistmanga.ZeistMangaParser +@Broken @MangaSourceParser("KISHISAN", "Kishisan", "id") internal class Kishisan(context: MangaLoaderContext) : ZeistMangaParser(context, MangaParserSource.KISHISAN, "www.kishisan.site") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Lepoytl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Lepoytl.kt new file mode 100644 index 00000000..672b743c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Lepoytl.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("LEPOYTL", "Lepoytl", "id") +internal class Lepoytl(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.LEPOYTL, "www.lepoytl.cloud") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt index b5a0950a..a259569a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.id +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType @@ -8,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.* +@Broken @MangaSourceParser("MIKOROKU", "Mikoroku", "id", ContentType.HENTAI) internal class Mikoroku(context: MangaLoaderContext) : ZeistMangaParser(context, MangaParserSource.MIKOROKU, "www.mikoroku.web.id") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/OkyyKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/OkyyKomik.kt new file mode 100644 index 00000000..88f8c5f2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/OkyyKomik.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("OKYYKOMIK", "OkyyKomik", "id") +internal class OkyyKomik(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.OKYYKOMIK, "www.okyykomik.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/DuoScanlators.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/DuoScanlators.kt new file mode 100644 index 00000000..c1624749 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/DuoScanlators.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("DUOSCANLATORS", "DuoScanlators", "pt") +internal class DuoScanlators(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.DUOSCANLATORS, "duoscanlators.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt index f5258f04..a49566ca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.pt +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 @@ -10,6 +11,7 @@ import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.requireElementById +@Broken @MangaSourceParser("GUILDATIERDRAW", "GuildaTierDraw", "pt") internal class GuildaTierDraw(context: MangaLoaderContext) : ZeistMangaParser(context, MangaParserSource.GUILDATIERDRAW, "www.guildatierdraw.top") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/YuraManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/YuraManga.kt index 31463925..8a632259 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/YuraManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/YuraManga.kt @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zmanga.ZMangaParser -@Broken // need login for access to advanced-search/ +@Broken @MangaSourceParser("YURAMANGA", "YuraManga", "id") internal class YuraManga(context: MangaLoaderContext) : ZMangaParser(context, MangaParserSource.YURAMANGA, "www.yuramanga.my.id")