diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt index 8936ab74..739637f5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt @@ -6,7 +6,6 @@ import okhttp3.Headers import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.network.OkHttpWebClient -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.network.WebClient import org.koitharu.kotatsu.parsers.util.FaviconParser import org.koitharu.kotatsu.parsers.util.RelatedMangaFinder diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt index b0229f13..1d6d60d6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt @@ -11,7 +11,6 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* -import org.koitharu.kotatsu.parsers.util.json.isNullOrEmpty import java.nio.charset.StandardCharsets import java.security.MessageDigest import java.util.* @@ -319,7 +318,8 @@ internal class BatoToParser(context: MangaLoaderContext) : PagedMangaParser( return MangaChapter( id = generateUid(href), name = a.text(), - number = index + 1, + number = index + 1f, + volume = 0, url = href, scanlator = extra?.getElementsByAttributeValueContaining("href", "/group/")?.text(), uploadDate = runCatching { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt index d9541c60..73bd8ff1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt @@ -212,7 +212,8 @@ internal class ExHentaiParser( chapters += MangaChapter( id = generateUid(url), name = "${manga.title} #$i", - number = i, + number = i.toFloat(), + volume = 0, url = url, uploadDate = 0L, source = source, 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 27ac2306..7d3a7f2a 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 @@ -540,7 +540,8 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo url = manga.url, name = json.getString("title"), scanlator = json.getString("type").toTitleCase(), - number = 1, + number = 1f, + volume = 0, branch = json.getString("language_localname"), source = source, uploadDate = dateFormat.tryParse(json.getString("date").substringBeforeLast("-")), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt index c19a8312..8160cd15 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt @@ -130,7 +130,8 @@ internal class ImHentai(context: MangaLoaderContext) : MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = manga.url, scanlator = null, uploadDate = 0, 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 80120a6d..a946d0f0 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 @@ -94,7 +94,8 @@ internal abstract class LineWebtoonsParser( MangaChapter( id = generateUid("$titleNo-$i"), name = jo.getString("episodeTitle"), - number = jo.getInt("episodeSeq"), + number = jo.getInt("episodeSeq").toFloat(), + volume = 0, url = "$titleNo-${jo.get("episodeNo")}", uploadDate = jo.getLong("modifyYmdt"), branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt index b3a6c05d..77b7e35f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt @@ -23,8 +23,8 @@ private const val MIN_SPLIT_COUNT = 5 internal abstract class MangaFireParser( context: MangaLoaderContext, source: MangaSource, - private val siteLang: String -): PagedMangaParser(context, source, 30), Interceptor { + private val siteLang: String, +) : PagedMangaParser(context, source, 30), Interceptor { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("mangafire.to") @@ -44,7 +44,7 @@ internal abstract class MangaFireParser( MangaTag( title = it.selectFirstOrThrow("label").ownText().toTitleCase(sourceLocale), key = it.selectFirstOrThrow("input").attr("value"), - source = source + source = source, ) }.associateBy { it.title } } @@ -73,7 +73,7 @@ internal abstract class MangaFireParser( SortOrder.NEWEST -> "release_date" SortOrder.ALPHABETICAL -> "title_az" else -> "" - } + }, ) } } @@ -97,7 +97,7 @@ internal abstract class MangaFireParser( MangaState.ABANDONED -> "discontinued" MangaState.PAUSED -> "on_hiatus" MangaState.UPCOMING -> "info" - } + }, ) } addQueryParameter( @@ -109,7 +109,7 @@ internal abstract class MangaFireParser( SortOrder.NEWEST -> "release_date" SortOrder.ALPHABETICAL -> "title_az" else -> "" - } + }, ) } @@ -176,14 +176,14 @@ internal abstract class MangaFireParser( author = document.select("div.meta a[href*=/author/]") .joinToString { it.ownText().trim() }, description = document.selectFirstOrThrow("#synopsis div.modal-content").html(), - chapters = getChapters(manga.url, document) + chapters = getChapters(manga.url, document), ) } private data class ChapterBranch( val type: String, val langCode: String, - val langTitle: String + val langTitle: String, ) private suspend fun getChapters(mangaUrl: String, document: Document): List { @@ -252,7 +252,7 @@ internal abstract class MangaFireParser( scanlator = null, uploadDate = dateFormat.tryParse(it.attr("upload-date")), branch = "${branch.langTitle} ${branch.type.toTitleCase()}", - source = source + source = source, ) } } @@ -263,7 +263,7 @@ internal abstract class MangaFireParser( override suspend fun getRelatedManga(seed: Manga): List = coroutineScope { val document = webClient.httpGet(seed.url.toAbsoluteUrl(domain)).parseHtml() val total = document.select( - "section.m-related a[href*=/manga/], .side-manga:not(:has(.head:contains(trending))) .unit" + "section.m-related a[href*=/manga/], .side-manga:not(:has(.head:contains(trending))) .unit", ).size val mangas = ArrayList(total) @@ -322,7 +322,7 @@ internal abstract class MangaFireParser( rating = RATING_UNKNOWN, state = null, tags = emptySet(), - ) + ), ) } @@ -366,8 +366,8 @@ internal abstract class MangaFireParser( "$url#scrambled_$offset" }, preview = null, - source = source - ) + source = source, + ), ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt index 8f8b2166..28cdfc86 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt @@ -193,7 +193,8 @@ internal class MangaPark(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt index 5cf1650c..ba5e9a16 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt @@ -324,6 +324,6 @@ internal abstract class MangaPlusParser( class German(context: MangaLoaderContext) : MangaPlusParser( context, MangaSource.MANGAPLUSPARSER_DE, - "GERMAN" + "GERMAN", ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt index f67177f9..5d136283 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt @@ -145,7 +145,8 @@ internal abstract class NineMangaParser( MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDateByLang(li.selectFirst("span")?.text().orEmpty()), source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt index f75e9ce8..64730052 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt @@ -109,7 +109,8 @@ internal abstract class WebtoonsParser( MangaChapter( id = generateUid("$titleNo-$i"), name = jo.getString("episodeTitle"), - number = jo.getInt("episodeSeq"), + number = jo.getInt("episodeSeq").toFloat(), + volume = 0, url = "$titleNo-${jo.get("episodeNo")}", uploadDate = jo.getLong("registerYmdt"), branch = null, @@ -223,7 +224,8 @@ internal abstract class WebtoonsParser( description = null, state = null, source = source, - )) + ), + ) } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt index 22c570b2..4f9115c3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt @@ -146,7 +146,8 @@ internal abstract class AnimeBootstrapParser( MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = 0, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt index 940ac7b3..d82508d5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.parsers.site.animebootstrap.fr 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.* @@ -12,6 +13,7 @@ import java.text.SimpleDateFormat import java.util.EnumSet import java.util.Locale +@Broken @MangaSourceParser("PAPSCAN", "PapScan", "fr") internal class PapScan(context: MangaLoaderContext) : AnimeBootstrapParser(context, MangaSource.PAPSCAN, "papscan.com") { @@ -126,7 +128,8 @@ internal class PapScan(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow("span em").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = dateFormat.tryParse(dateText), source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt index 04c0e5d0..74ed7c70 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt @@ -180,7 +180,8 @@ internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context id = generateUid(url), url = url, name = j.getString("slug").replace('-', ' '), - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(date), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt index 4859e841..dc0f301b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt @@ -101,7 +101,8 @@ internal class MangaStorm(context: MangaLoaderContext) : PagedMangaParser(contex MangaChapter( id = generateUid(url), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt index 9db6249f..0322983b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt @@ -183,7 +183,8 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex MangaChapter( id = generateUid(url), name = li.selectFirstOrThrow(".epl-title").text(), - number = url.substringAfterLast('/').toIntOrNull() ?: 0, + number = url.substringAfterLast('/').toFloatOrNull() ?: 0f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(li.selectFirstOrThrow(".epl-date").text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt index 833ef395..3df028ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt @@ -144,7 +144,8 @@ internal class AnibelParser(context: MangaLoaderContext) : MangaParser(context, MangaChapter( id = generateUid(jo.getString("id")), name = "Глава $number", - number = number, + number = number.toFloat(), + volume = 0, url = "${manga.url}/read/$number", scanlator = null, uploadDate = jo.getLong("released"), 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 121a62da..2f819f5f 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 @@ -109,7 +109,8 @@ internal class BeeToon(context: MangaLoaderContext) : MangaChapter( id = generateUid(url), name = a.selectFirstOrThrow(".chap").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.ENGLISH) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt index e01e0060..58636336 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt @@ -76,7 +76,8 @@ internal class CloneMangaParser(context: MangaLoaderContext) : MangaParser(conte val chapter = MangaChapter( id = generateUid("$series&page=$i"), name = "Chapter ${i + 1}", - number = i + 1, + number = i + 1f, + volume = 0, url = "$series&page=$i", scanlator = null, branch = null, 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 245d8028..11d246d1 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 @@ -149,7 +149,8 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt index 2200b663..e8d52f1b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt @@ -181,7 +181,8 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = dateFormat.tryParse(dateText), source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt index 85ec3a8e..07629010 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt @@ -165,7 +165,8 @@ internal class FlixScansOrg(context: MangaLoaderContext) : PagedMangaParser(cont id = generateUid(url), url = url, name = j.getString("slug").replace('-', ' '), - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(date), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt index 37248d35..a3212738 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt @@ -137,7 +137,8 @@ internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt index 55deddb2..4353adca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt @@ -27,7 +27,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c override val isMultipleTagsSupported = false - override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val url = buildString { append("https://") append(domain) @@ -157,7 +157,8 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c id = generateUid(href), url = href, source = MangaSource.MANGATOWN, - number = i + 1, + number = i + 1f, + volume = 0, uploadDate = parseChapterDate( dateFormat, li.selectFirst("span.time")?.text(), @@ -176,7 +177,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c val root = doc.body().selectFirstOrThrow("div.page_select") val isManga = root.select("select") - if(isManga.isEmpty()){//Webtoon + if (isManga.isEmpty()) {//Webtoon val imgElements = doc.select("div#viewer.read_img img.image") return imgElements.map { val href = it.attr("src") @@ -188,7 +189,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c ) } - }else{ //Manga + } else { //Manga return isManga.select("option").mapNotNull { val href = it.attrAsRelativeUrlOrNull("value") if (href == null || href.endsWith("featured.html")) { @@ -205,7 +206,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c } override suspend fun getPageUrl(page: MangaPage): String { - if(page.url.startsWith("//")){//Webtoon + if (page.url.startsWith("//")) {//Webtoon return page.url.toAbsoluteUrl(domain) } @@ -253,7 +254,8 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c id = generateUid(href), url = href, source = MangaSource.MANGATOWN, - number = i + 1, + number = i + 1f, + volume = 0, uploadDate = parseChapterDate( dateFormat, li.selectFirst("span.time")?.text(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt index 90951280..3556c697 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt @@ -155,7 +155,8 @@ internal class Mangaowl(context: MangaLoaderContext) : MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, uploadDate = dateFormat.tryParse(date), source = source, 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 bab5242b..5ddee824 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 @@ -161,7 +161,8 @@ class Manhwa18Parser(context: MangaLoaderContext) : MangaChapter( id = generateUid(chapterUrl), name = element.selectFirst(".chapter-name")?.text().orEmpty(), - number = index + 1, + number = index + 1f, + volume = 0, url = chapterUrl, scanlator = null, uploadDate = uploadDate, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt index 1272c1c1..e571fa47 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt @@ -113,7 +113,8 @@ class ManhwasMen(context: MangaLoaderContext) : MangaChapter( id = generateUid(url), name = li.selectFirstOrThrow(".flex-grow-1 span").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt index bbd415dd..ccc3ceb3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt @@ -76,7 +76,8 @@ internal class Po2Scans(context: MangaLoaderContext) : MangaParser(context, Mang MangaChapter( id = generateUid(url), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(div.select(".detail span").last()?.text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt index ce48030f..7c88841b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt @@ -126,7 +126,8 @@ internal class Pururin(context: MangaLoaderContext) : MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = manga.url, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt index d7478d2e..55fa2013 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt @@ -96,7 +96,8 @@ internal class TempleScanEsp(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = div.requireElementById("name").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = date, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt index 2f025e25..581e1ce5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt @@ -203,7 +203,8 @@ internal abstract class FmreaderParser( MangaChapter( id = generateUid(href), name = a.selectFirstOrThrow("div.chapter-name").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt index f57b1147..79420961 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt @@ -125,7 +125,8 @@ internal class Manhwa18Com(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.selectFirstOrThrow("div.chapter-name").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt index 131053f9..4255761b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt @@ -66,7 +66,8 @@ internal class Klz9(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.selectFirstOrThrow("a").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt index 7256194c..98aac571 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt @@ -25,7 +25,8 @@ internal class WeLoveManga(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.selectFirstOrThrow("a").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt index 70bf7e34..7c6b12ec 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt @@ -155,7 +155,8 @@ internal abstract class FoolSlideParser( MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = if (div.selectFirstOrThrow(selectDate).text().contains(", ")) { dateFormat.tryParse(dateText) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt index bd069d28..d8a5f3ef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt @@ -5,9 +5,10 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser +// The source has changed template so for the moment it is dead. @MangaSourceParser("HNISCANTRAD", "HniScantrad", "fr") internal class HniScantrad(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.HNISCANTRAD, "hni-scantrad.com") { + FoolSlideParser(context, MangaSource.HNISCANTRAD, "hni-scantrad.net") { override val pagination = false override val searchUrl = "lel/search/" override val listUrl = "lel/directory/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt index b1b64ddd..f747b227 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt @@ -5,6 +5,7 @@ import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope import okhttp3.Headers import org.jsoup.nodes.Element +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -15,6 +16,7 @@ import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.getIntOrDefault import java.util.* +@Broken @MangaSourceParser("BENTOMANGA", "BentoManga", "fr") internal class BentomangaParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.BENTOMANGA, 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt index 910add0e..676a5a2f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt @@ -109,7 +109,8 @@ internal class FuryoSociety(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = div.selectFirstOrThrow("div.title").text() + " : " + div.selectFirstOrThrow("div.name").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt index c8349bce..05318126 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt @@ -1,13 +1,11 @@ package org.koitharu.kotatsu.parsers.site.fr -import okhttp3.Headers import org.json.JSONObject import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.mapJSON import java.text.SimpleDateFormat @@ -146,7 +144,8 @@ internal class LegacyScansParser(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt index 5821aa85..9b68da1f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt @@ -1,12 +1,11 @@ package org.koitharu.kotatsu.parsers.site.fr -import okhttp3.Headers + import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* @@ -115,7 +114,8 @@ internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context, MangaChapter( id = generateUid(href), name = name, - number = i, + number = i.toFloat(), + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt index 11eb6f27..0cb1eebc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt @@ -182,7 +182,8 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont MangaChapter( id = generateUid(url), name = "Chapitre : $id", - number = i, + number = i.toFloat(), + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt index 7cf0e1b1..f2bd90d0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt @@ -138,7 +138,8 @@ internal class ScansMangasMe(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow("span.mobile chapter").text(), - number = i + 1, + number = li.selectFirstOrThrow("span.mobile chapter").text().substringAfterLast(" ").toFloat(), + volume = 0, url = href, uploadDate = 0, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt index d61b10e0..6661c220 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt @@ -151,7 +151,8 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con MangaChapter( id = generateUid(href), name = name, - number = i, + number = i.toFloat(), + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt index 23f736e8..415dd427 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt @@ -1,11 +1,9 @@ package org.koitharu.kotatsu.parsers.site.heancms -import okhttp3.Headers import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.mapJSON import java.text.SimpleDateFormat @@ -20,8 +18,16 @@ internal abstract class HeanCms( override val configKeyDomain = ConfigKey.Domain(domain) + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + override val availableSortOrders: Set = EnumSet.of( SortOrder.ALPHABETICAL, + SortOrder.ALPHABETICAL_DESC, SortOrder.UPDATED, SortOrder.NEWEST, SortOrder.POPULARITY, @@ -30,15 +36,11 @@ internal abstract class HeanCms( override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED) - override val headers: Headers = Headers.Builder() - .add("User-Agent", UserAgents.CHROME_DESKTOP) - .build() protected open val pathManga = "series" protected open val apiPath get() = getDomain("api") - //For some sources, you need to send a json. For the moment, this part only works in Get. ( ex source need json gloriousscan.com , omegascans.org ) override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val url = buildString { append("https://") @@ -147,7 +149,8 @@ internal abstract class HeanCms( MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt index dfadba46..14ab5753 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt @@ -45,8 +45,8 @@ internal class OmegaScans(context: MangaLoaderContext) : HeanCms(context, MangaS SortOrder.POPULARITY -> append("total_views&order=desc") SortOrder.UPDATED -> append("latest&order=desc") SortOrder.NEWEST -> append("created_at&order=desc") - SortOrder.ALPHABETICAL -> append("title&order=desc") - SortOrder.ALPHABETICAL_DESC -> append("title&order=asc") + SortOrder.ALPHABETICAL -> append("title&order=asc") + SortOrder.ALPHABETICAL_DESC -> append("title&order=desc") else -> append("latest&order=desc") } append("&series_type=All&perPage=$pageSize") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt index 0b73d6a0..8e37063d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt @@ -43,8 +43,8 @@ internal class YugenMangasEs(context: MangaLoaderContext) : SortOrder.POPULARITY -> append("total_views&order=desc") SortOrder.UPDATED -> append("latest&order=desc") SortOrder.NEWEST -> append("created_at&order=desc") - SortOrder.ALPHABETICAL -> append("title&order=desc") - SortOrder.ALPHABETICAL_DESC -> append("title&order=asc") + SortOrder.ALPHABETICAL -> append("title&order=asc") + SortOrder.ALPHABETICAL_DESC -> append("title&order=desc") else -> append("latest&order=desc") } append("&series_type=Comic&perPage=12") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt index 633b07cb..6688d165 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt @@ -1,10 +1,165 @@ package org.koitharu.kotatsu.parsers.site.heancms.fr +import org.json.JSONArray import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.site.heancms.HeanCms +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.json.getFloatOrDefault +import org.koitharu.kotatsu.parsers.util.json.getStringOrNull +import org.koitharu.kotatsu.parsers.util.json.mapJSON +import org.koitharu.kotatsu.parsers.util.json.mapJSONToSet +import org.koitharu.kotatsu.parsers.util.json.unescapeJson +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.parseJson +import org.koitharu.kotatsu.parsers.util.toRelativeUrl +import org.koitharu.kotatsu.parsers.util.toTitleCase +import org.koitharu.kotatsu.parsers.util.tryParse +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.text.SimpleDateFormat +import java.util.Locale @MangaSourceParser("PERF_SCAN", "PerfScan", "fr") internal class PerfScan(context: MangaLoaderContext) : - HeanCms(context, MangaSource.PERF_SCAN, "perf-scan.fr") + HeanCms(context, MangaSource.PERF_SCAN, "perf-scan.fr") { + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://api.") + append(domain) + append("/query?adult=true&query_string=") + when (filter) { + is MangaListFilter.Search -> { + append(filter.query.urlEncoded()) + } + + is MangaListFilter.Advanced -> { + + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + append( + when (it) { + MangaState.ONGOING -> "Ongoing" + MangaState.FINISHED -> "Completed" + MangaState.ABANDONED -> "Dropped" + MangaState.PAUSED -> "Hiatus" + else -> "" + }, + ) + + } + append("&orderBy=") + when (filter.sortOrder) { + SortOrder.POPULARITY -> append("total_views&order=desc") + SortOrder.UPDATED -> append("latest&order=desc") + SortOrder.NEWEST -> append("created_at&order=desc") + SortOrder.ALPHABETICAL -> append("title&order=asc") + SortOrder.ALPHABETICAL_DESC -> append("title&order=desc") + else -> append("latest&order=desc") + } + append("&series_type=All&perPage=") + append(pageSize) + append("&tags_ids=") + append("[".urlEncoded()) + filter.tags.joinTo(this, ",") { it.key } + append("]".urlEncoded()) + + } + + null -> {} + } + append("&page=") + append(page) + } + val json = webClient.httpGet(url).parseJson() + return json.getJSONArray("data").mapJSON { j -> + val slug = j.getString("series_slug") + val urlManga = "https://$domain/$pathManga/$slug" + val cover = if (j.getString("thumbnail").contains('/')) { + j.getString("thumbnail") + } else { + "https://api.$domain/${j.getString("thumbnail")}" + } + Manga( + id = j.getLong("id"), + title = j.getString("title"), + altTitle = null, + url = urlManga.toRelativeUrl(domain), + publicUrl = urlManga, + rating = j.getFloatOrDefault("rating", RATING_UNKNOWN) / 5f, + isNsfw = isNsfwSource, + coverUrl = cover, + tags = setOf(), + state = when (j.getStringOrNull("status")) { + "Ongoing" -> MangaState.ONGOING + "Completed" -> MangaState.FINISHED + "Dropped" -> MangaState.ABANDONED + "Hiatus" -> MangaState.PAUSED + else -> null + }, + author = j.getStringOrNull("author"), + source = source, + description = j.getString("description"), + ) + } + + } + + override suspend fun getDetails(manga: Manga): Manga { + val url = buildString { + append("https://api.") + append(domain) + append("/chapter/query?perPage=9999&series_id=") + append(manga.id) + } + val json = webClient.httpGet(url).parseJson() + val dateFormat = SimpleDateFormat(datePattern, Locale.ENGLISH) + + val chaptersJsonArray = json.getJSONArray("data") + var totalChapters = json.getJSONObject("meta").getInt("total") + val chapters = chaptersJsonArray.mapJSON { j -> + val slug = j.getJSONObject("series").getString("series_slug") + val chapterUrl = "https://$domain/$pathManga/$slug/${j.getString("chapter_slug")}" + val date = j.getString("created_at").substringBeforeLast("T") + MangaChapter( + id = j.getLong("id"), + url = chapterUrl, + name = j.getString("chapter_name"), + number = totalChapters--, + branch = null, + uploadDate = dateFormat.tryParse(date), + scanlator = null, + source = source, + ) + } + + return manga.copy( + chapters = chapters.reversed(), + ) + } + + override suspend fun getAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain/comics").parseHtml() + + val regex = Regex("\"tags\\\\.*?(\\[.+?])") + val tags = doc.select("script").firstNotNullOf { script -> + regex.find(script.html())?.groupValues?.getOrNull(1) + }.unescapeJson() + return JSONArray(tags).mapJSONToSet { + MangaTag( + key = it.getInt("id").toString(), + title = it.getString("name").toTitleCase(sourceLocale), + source = source, + ) + } + } +} 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 da4b1f78..d1a1b764 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 @@ -45,8 +45,8 @@ internal class ModeScanlator( SortOrder.POPULARITY -> append("total_views&order=desc") SortOrder.UPDATED -> append("latest&order=desc") SortOrder.NEWEST -> append("created_at&order=desc") - SortOrder.ALPHABETICAL -> append("title&order=desc") - SortOrder.ALPHABETICAL_DESC -> append("title&order=asc") + SortOrder.ALPHABETICAL -> append("title&order=asc") + SortOrder.ALPHABETICAL_DESC -> append("title&order=desc") else -> append("latest&order=desc") } append("&series_type=All&perPage=") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt index 89dace41..f2318dbf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt @@ -99,7 +99,8 @@ internal abstract class HeanCmsAlt( MangaChapter( id = generateUid(url), name = a.selectFirstOrThrow(selectChapterTitle).text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt index 6cd5ef63..7a0e781d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt @@ -41,7 +41,8 @@ internal class Brakeout(context: MangaLoaderContext) : MangaChapter( id = generateUid(url), name = div.selectFirstOrThrow(selectChapterTitle).text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/MangaWorld.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/MangaWorld.kt index 12fe02b9..c9ca68cf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/MangaWorld.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/MangaWorld.kt @@ -116,7 +116,8 @@ internal class MangaWorld( MangaChapter( id = generateUid(url), name = a.selectFirstOrThrow("span.d-inline-block").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt index 06eafe33..f12c8d0f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt @@ -126,7 +126,8 @@ class NicovideoSeigaParser(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = li.select("div > div.description > div.title > a").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/ZinManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/ZinManga.kt deleted file mode 100644 index ecb35f1e..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/ZinManga.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.likemanga.en - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.site.likemanga.LikeMangaParser - -@MangaSourceParser("ZINMANGA_COM", "ZinManga.com", "en") -internal class ZinManga(context: MangaLoaderContext) : - LikeMangaParser(context, MangaSource.ZINMANGA_COM, "zinmanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index 08394ffb..f811530f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -472,7 +472,8 @@ internal abstract class MadaraParser( MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = parseChapterDate( dateFormat, @@ -506,7 +507,8 @@ internal abstract class MadaraParser( id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt index 94d2d948..9a06fd7e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt @@ -27,7 +27,8 @@ internal class Ero18x(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = if (dateText == "Newly Published!") { parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt index d3230605..1ee299a8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt @@ -31,7 +31,8 @@ internal class ManhwaRaw(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = if (dateText == "Newly Published!") { parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt index 8ba1633e..38a10da0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt @@ -36,7 +36,8 @@ internal class LekMangaCom(context: MangaLoaderContext) : id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/RocksManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt similarity index 100% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/RocksManga.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt index 55291d8b..fb7f57d2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt @@ -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.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ANSHSCANS", "AnshScans", "en") internal class AnshScans(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ANSHSCANS, "anshscans.org", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt index e30f4962..3676ab24 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt @@ -28,7 +28,8 @@ internal class Hentaixdickgirl(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = parseChapterDate( dateFormat, 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 9ac5467d..8ad77e57 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 @@ -121,7 +121,8 @@ internal class InstaManhwa(context: MangaLoaderContext) : id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt index d04c2290..3c54c490 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt @@ -125,7 +125,8 @@ internal class IsekaiScan(context: MangaLoaderContext) : id = generateUid(href), url = link, name = a.ownText(), - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt index 9fb679e1..443c3f0c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt @@ -161,7 +161,8 @@ internal class MangaDass(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt index 42468686..36a2e9c3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt @@ -33,7 +33,8 @@ internal class MangaDistrict(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.ownText(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt index c5bccd15..1efcdef8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt @@ -151,7 +151,8 @@ internal class MangaDna(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt index 64dda2fd..336782c8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt @@ -127,7 +127,8 @@ internal class MangaPure(context: MangaLoaderContext) : id = generateUid(href), url = link, name = a.ownText(), - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt index 10846c05..3484f3df 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt @@ -39,7 +39,8 @@ internal class ManhwaTop(context: MangaLoaderContext) : id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt index 352a7353..c240eb40 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt @@ -5,7 +5,8 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("ZINMANGA", "ZinManga.com", "en") -internal class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ZINMANGA, "zinmanga.com") { +@MangaSourceParser("ZINMANGA", "ZinManga", "en") +internal class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ZINMANGA, "zinmanga.net") { override val datePattern = "MM/dd/yyyy" + override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt index 9ecbdfaa..c45b0023 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt @@ -27,7 +27,8 @@ internal class ManhwaEs(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = if (dateText == "¡Recién publicado!") { parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt index 71679f05..30c546d6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt @@ -35,7 +35,8 @@ internal class ManhwaLatino(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt index e1e29d31..3893d6db 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt @@ -99,7 +99,8 @@ internal class TmoManga(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = 0, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt index 766163f8..36b650dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.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.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BLUESOLO", "BlueSolo", "fr") internal class BlueSolo(context: MangaLoaderContext) : MadaraParser(context, MangaSource.BLUESOLO, "www1.bluesolo.org", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt index 615855b7..fa78dcaf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt @@ -32,7 +32,8 @@ internal class Hentaizone(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = link, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt index 53a2b87e..bedfade9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.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.ContentType import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LUNARHENTAI", "LunarHentai", "fr", ContentType.HENTAI) internal class LunarHentai(context: MangaLoaderContext) : MadaraParser(context, MangaSource.LUNARHENTAI, "hentai.lunarscans.fr") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt index 31a58f4e..ea88c6c9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt @@ -8,4 +8,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SCANHENTAIMENU", "ScanHentai.Menu", "fr", ContentType.HENTAI) internal class ScanHentaiMenu(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SCANHENTAIMENU, "scan.hentai.menu") + MadaraParser(context, MangaSource.SCANHENTAIMENU, "x-manga.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt index f6452399..a172385e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.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.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("SCANTRADVF", "Scantrad-Vf", "fr") internal class ScantradVf(context: MangaLoaderContext) : MadaraParser(context, MangaSource.SCANTRADVF, "scantrad-vf.me") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt index 20aec5d7..8c96e8e7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt @@ -32,7 +32,8 @@ internal class ToonFr(context: MangaLoaderContext) : id = generateUid(href), url = href, name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, 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 57031394..43e2d309 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 @@ -2,9 +2,7 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt index b7d00107..9d5f7568 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt @@ -28,7 +28,8 @@ internal class Neoxscans(context: MangaLoaderContext) : id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt index 3248eaf2..999430e1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt @@ -24,7 +24,8 @@ internal class TitanManga(context: MangaLoaderContext) : id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = 0, scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt index 3516b23c..beba7c85 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt @@ -26,7 +26,8 @@ internal class TruyenTranhDamMyy(context: MangaLoaderContext) : id = generateUid(href), url = link, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = 0, // Correct datePattern not found. scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt index 7b458f29..c4ace344 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt @@ -207,7 +207,8 @@ internal abstract class MadthemeParser( MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow(".chapter-title").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt index 26ac2c4e..9645918d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt @@ -26,7 +26,8 @@ internal class MangaJinx(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow(".chapter-title").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt index 16b8f934..9d1dadf1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt @@ -108,7 +108,8 @@ internal class ManhuaScan(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow(".chapter-title").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt index 7703908d..3c8255ed 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt @@ -182,7 +182,8 @@ internal abstract class Manga18Parser( MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = dateFormat.tryParse(dateText), source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt index a46b7e27..6e2e0895 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt @@ -24,7 +24,8 @@ internal class Hanman18(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = 0, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt index 8d89a6e1..ba27313c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt @@ -200,7 +200,8 @@ internal abstract class MangaboxParser( MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt index d052a289..09d7f52c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt @@ -125,7 +125,8 @@ internal class Mangakakalot(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt index 6af81ddd..03b90a28 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt @@ -5,7 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangadventure.MangAdventureParser -import org.koitharu.kotatsu.parsers.util.urlEncoded @MangaSourceParser("ARCRELIGHT", "Arc-Relight", "en") internal class ArcRelight(context: MangaLoaderContext) : diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index 67442cf2..29f37e6e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -29,6 +29,13 @@ internal abstract class MangaReaderParser( override val configKeyDomain = ConfigKey.Domain(domain) + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + override val availableSortOrders: Set get() = EnumSet.of( SortOrder.UPDATED, @@ -156,7 +163,8 @@ internal abstract class MangaReaderParser( id = generateUid(url), name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt index e788cc21..670c6ed9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt @@ -9,4 +9,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser internal class ArAreaScans(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.ARAREASCANS, "ar.areascans.org", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false - } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Eliton.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Eliton.kt deleted file mode 100644 index b6d5504d..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Eliton.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.mangareader.ar - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser - -@MangaSourceParser("ELITON", "ThunderScans", "ar") -internal class Eliton(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ELITON, "thunderscans.com", pageSize = 20, searchPageSize = 10) { - override val isTagsExclusionSupported = false -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt index f09fa212..a3d2cede 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt @@ -9,4 +9,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser internal class MangaPro(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.MANGAPRO, "promanga.pro", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false - } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt index 81aca1c8..1d1d7a8a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt @@ -25,7 +25,8 @@ internal class Manjanoon(context: MangaLoaderContext) : id = generateUid(url), name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = 0, branch = null, 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 b7434f77..542c1d76 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 @@ -86,7 +86,8 @@ internal class Normoyun(context: MangaLoaderContext) : id = generateUid(url), name = element.selectFirst("a")?.text() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = dateFormat.tryParse(element.selectFirst(".chapter-date")?.text()), branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt index 110494d1..400fa3f1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt @@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("THUNDERSCANS", "ThunderScans", "ar") internal class ThunderScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10) + MangaReaderParser(context, MangaSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} 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 8d951f09..266c73cb 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 @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("UMIMANGA", "UmiManga", "ar") -internal class BeastScans(context: MangaLoaderContext) : +internal class UmiManga(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.UMIMANGA, "www.umimanga.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt index f87e7af2..035325e1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt @@ -25,7 +25,8 @@ internal class VexManga(context: MangaLoaderContext) : id = generateUid(url), name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt index c0bf3fd9..12f17b2d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt @@ -20,7 +20,8 @@ internal class Constellarcomic(context: MangaLoaderContext) : id = generateUid(url), name = element.selectFirst(".chapternum")?.textOrNull() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = 0, branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt index d6d2d05c..89e0b69f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MAGUSMANGA", "MagusManga", "en") internal class MagusManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MAGUSMANGA, "vofeg.com", pageSize = 20, searchPageSize = 10){ + MangaReaderParser(context, MangaSource.MAGUSMANGA, "vofeg.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt index e6cfb0c5..1bd0be33 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt @@ -8,5 +8,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAGALAXY", "MangaGalaxy", "en") internal class MangaGalaxy(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.MANGAGALAXY, "mangagalaxy.me", 20, 16) { - override val listUrl = "/series" + override val listUrl = "/series" } 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 988e6b4f..aa37348e 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 @@ -90,7 +90,8 @@ internal class ManhwaFreak(context: MangaLoaderContext) : id = generateUid(url), name = a.selectFirst(".chapter-info p:contains(Chapter)")?.text() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = if (dateText == "NEW") { parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt index 2213e050..c0f1659f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt @@ -14,11 +14,18 @@ import java.util.* @MangaSourceParser("RIZZCOMIC", "RizzComic", "en") internal class RizzComic(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RIZZCOMIC, "rizzfables.com", pageSize = 50, searchPageSize = 20){ + MangaReaderParser(context, MangaSource.RIZZCOMIC, "rizzfables.com", pageSize = 50, searchPageSize = 20) { override val datePattern = "dd MMM yyyy" override val listUrl = "/series" - override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL, SortOrder.UPDATED, SortOrder.NEWEST, SortOrder.POPULARITY, SortOrder.ALPHABETICAL_DESC) - override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED) + override val availableSortOrders: Set = EnumSet.of( + SortOrder.ALPHABETICAL, + SortOrder.UPDATED, + SortOrder.NEWEST, + SortOrder.POPULARITY, + SortOrder.ALPHABETICAL_DESC, + ) + override val availableStates: Set = + EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED) override val isMultipleTagsSupported = true override val isSearchSupported = true override val isTagsExclusionSupported = false @@ -64,7 +71,8 @@ internal class RizzComic(context: MangaLoaderContext) : null } } - is MangaListFilter.Advanced ->{ + + is MangaListFilter.Advanced -> { val state = filter.states.oneOrThrowIfMany()?.toPayloadValue() ?: "all" val genres = filter.tags.map { it.key } @@ -79,6 +87,7 @@ internal class RizzComic(context: MangaLoaderContext) : } formBuilder.build() } + else -> { FormBody.Builder() .add("StatusValue", "all") @@ -100,7 +109,7 @@ internal class RizzComic(context: MangaLoaderContext) : val response = context.httpClient.newCall(request).execute().parseJsonArray() return response.mapJSON { j -> val title = j.getString("title") - val urlManga = "https://$domain$listUrl/${randomPartCache.get()}-" + title.trim().lowercase() + val urlManga = "https://$domain$listUrl/${randomPartCache.get()}-" + title.trim().lowercase() .replace(slugRegex, "-") .replace("-s-", "s-") .replace("-ll-", "ll-") @@ -113,7 +122,7 @@ internal class RizzComic(context: MangaLoaderContext) : publicUrl = urlManga, rating = j.getFloatOrDefault("rating", RATING_UNKNOWN) / 10f, isNsfw = false, - coverUrl = "https://$domain/assets/images/"+ j.getString("image_url"), + coverUrl = "https://$domain/assets/images/" + j.getString("image_url"), tags = setOf(), state = when (j.getString("status")) { "ongoing" -> MangaState.ONGOING @@ -146,6 +155,7 @@ internal class RizzComic(context: MangaLoaderContext) : MangaState.PAUSED -> "hiatus" else -> "all" } + override suspend fun getAvailableTags(): Set { val url = "https://$domain/series" val doc = webClient.httpGet(url).parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt index 246087a3..c584280d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt @@ -60,7 +60,8 @@ internal class TuManhwas(context: MangaLoaderContext) : id = generateUid(url), name = element.selectFirst(".chapternum")?.textOrNull() ?: "Chapter ${index + 1}", url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt index 6345976d..1499434b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("BANANASCAN", "BananaScan", "fr") internal class BananaScan(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.BANANASCAN, "banana-scan.com", pageSize = 20, searchPageSize = 20) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt index 851ee487..563d3a05 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt @@ -6,7 +6,8 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("EPSILONSCAN", "EpsilonScan", "fr", ContentType.HENTAI) -internal class EpsilonscanParser(context: MangaLoaderContext) : MadaraParser(context, MangaSource.EPSILONSCAN, "epsilonscan.fr") { +internal class EpsilonscanParser(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.EPSILONSCAN, "epsilonscan.fr") { override val withoutAjax = true override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt index b0dc2146..6f796bd7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("LUNARSCANS", "LunarScans", "fr") internal class LunarScans(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.LUNARSCANS, "lunarscans.fr", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt index 0d78fc28..b578e9f7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt @@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("SUSHISCANFR", "Anime-Sama.me", "fr") +@MangaSourceParser("SUSHISCANFR", "SushiScan.fr", "fr") internal class SushiScanFR(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SUSHISCANFR, "anime-sama.me", pageSize = 36, searchPageSize = 10) + MangaReaderParser(context, MangaSource.SUSHISCANFR, "sushiscan.fr", pageSize = 36, searchPageSize = 10) 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 07313def..eec44203 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 @@ -90,7 +90,8 @@ internal class Komikcast(context: MangaLoaderContext) : id = generateUid(url), name = element.selectFirst("a.chapter-link-item")?.ownText().orEmpty(), url = url, - number = index + 1, + number = index + 1f, + volume = 0, scanlator = null, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt index 776150d0..cbbde2c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt @@ -232,7 +232,8 @@ internal abstract class MmrcmsParser( MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow("h5").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = dateFormat.tryParse(dateText), source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt new file mode 100644 index 00000000..83a6cc90 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mmrcms.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser + +@MangaSourceParser("BANANASCAN_COM", "BananaScan.Com", "en") +internal class BananaScan(context: MangaLoaderContext) : + MmrcmsParser(context, MangaSource.BANANASCAN_COM, "bananascans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt index 274e4c0f..cdbc705a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt @@ -10,4 +10,5 @@ import java.util.Locale internal class BentoScan(context: MangaLoaderContext) : MmrcmsParser(context, MangaSource.BENTOSCAN, "bentoscan.com") { override val sourceLocale: Locale = Locale.ENGLISH + override val imgUpdated = ".jpg" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt index f6978563..4923fdcc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.Locale +@Broken @MangaSourceParser("FRSCANSCOM", "FrScans.com", "fr") internal class FrScansCom(context: MangaLoaderContext) : MmrcmsParser(context, MangaSource.FRSCANSCOM, "frscans.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt index fda3469d..6d4afecc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* +@Broken @MangaSourceParser("JPMANGAS", "JpMangas", "fr") internal class JpMangas(context: MangaLoaderContext) : MmrcmsParser(context, MangaSource.JPMANGAS, "jpmangas.xyz") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt index 6adc09be..9eff63b8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt @@ -1,12 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* -//the search doesn't work on the source. +@Broken @MangaSourceParser("JPSCANVF", "LireScanVf.com", "fr") internal class JpScanVf(context: MangaLoaderContext) : MmrcmsParser(context, MangaSource.JPSCANVF, "lirescanvf.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt index c80fc242..e0202bfd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt @@ -8,7 +8,7 @@ import java.util.Locale @MangaSourceParser("MANGA_SCAN", "MangaScan", "fr") internal class MangaScan(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.MANGA_SCAN, "mangascan-fr.com") { + MmrcmsParser(context, MangaSource.MANGA_SCAN, "mangascan-fr.co") { override val imgUpdated = ".jpg" override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt index f2f79905..40ab7585 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.Locale +@Broken @MangaSourceParser("SCANMANGA", "ScanManga", "fr") internal class ScanManga(context: MangaLoaderContext) : MmrcmsParser(context, MangaSource.SCANMANGA, "scan-manga.me") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt index 7a095477..5a22aba5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt @@ -8,7 +8,7 @@ import java.util.Locale @MangaSourceParser("SCANMANGAVF_WS", "ScanMangaVf.ws", "fr") internal class ScanMangaVfWs(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.SCANMANGAVF_WS, "scanmanga-vf.ws") { + MmrcmsParser(context, MangaSource.SCANMANGAVF_WS, "scanmanga-vf.me") { override val imgUpdated = ".jpg" override val selectTag = "dt:contains(Genres)" override val selectAlt = "dt:contains(Appelé aussi)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt index 2b41dd23..079c1d3f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt @@ -223,7 +223,8 @@ internal abstract class NepnepParser( MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt index 40578608..95635d74 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt @@ -229,7 +229,8 @@ internal abstract class PizzaReaderParser( MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt index f51e1d62..abf5bcfb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt @@ -141,7 +141,8 @@ internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaChapter( id = generateUid(url), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt index cd5dc7cb..5f60138d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt @@ -121,7 +121,8 @@ class LerManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaSou MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(div.selectFirstOrThrow("small small").text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt index 9a8e824f..1558df4b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt @@ -114,7 +114,8 @@ class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, Ma MangaChapter( id = generateUid(href), name = title, - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt index c7f4a735..b33d8eca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt @@ -104,7 +104,8 @@ class MangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, Manga MangaChapter( id = generateUid(href), name = title, - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt index d2e10e46..8ec4910d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt @@ -99,7 +99,8 @@ class MuitoHentai(context: MangaLoaderContext) : PagedMangaParser(context, Manga MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt index d27c003c..57419ca4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt @@ -73,7 +73,8 @@ class OnePieceEx(context: MangaLoaderContext) : PagedMangaParser(context, MangaS MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = 0, @@ -92,7 +93,8 @@ class OnePieceEx(context: MangaLoaderContext) : PagedMangaParser(context, MangaS MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt index c41933a1..63238ba8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt @@ -137,13 +137,13 @@ class MangaWtfParser( tags = jo.getJSONArray("labels").mapJSONToSet { it.toMangaTag() }, state = jo.getStringOrNull("status")?.toMangaState(), author = - jo.getJSONArray("relations").toJSONList().firstNotNullOfOrNull { - if (it.getStringOrNull("type") == "AUTHOR") { - it.getJSONObject("publisher").getStringOrNull("name") - } else { - null - } - }, + jo.getJSONArray("relations").toJSONList().firstNotNullOfOrNull { + if (it.getStringOrNull("type") == "AUTHOR") { + it.getJSONObject("publisher").getStringOrNull("name") + } else { + null + } + }, source = source, largeCoverUrl = null, description = jo.getString("description").nl2br(), @@ -211,10 +211,10 @@ class MangaWtfParser( MangaChapter( id = generateUid(jo.getString("id")), name = - jo.getStringOrNull("name") ?: buildString { - if (volume > 0) append("Том ").append(volume).append(' ') - if (number > 0) append("Глава ").append(number) else append("Без имени") - }, + jo.getStringOrNull("name") ?: buildString { + if (volume > 0) append("Том ").append(volume).append(' ') + if (number > 0) append("Глава ").append(number) else append("Без имени") + }, number = number, volume = volume, url = jo.getString("id"), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt index 0c8ed0bc..7f81b051 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt @@ -15,7 +15,6 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.exception.ContentUnavailableException import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.* import java.text.DateFormat diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt index cc9a652d..9e38105e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt @@ -83,7 +83,8 @@ internal abstract class ChanParser( MangaChapter( id = generateUid(href), name = tr.selectFirst("a")?.text().orEmpty(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt index ff9672f5..1d389058 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt @@ -34,7 +34,8 @@ internal class YaoiChanParser(context: MangaLoaderContext) : ChanParser(context, MangaChapter( id = generateUid(href), name = a.text().trim(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = 0L, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt index 6142f05a..828f8077 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt @@ -127,7 +127,8 @@ internal abstract class ScanParser( MangaChapter( id = generateUid(href), name = div.selectFirstOrThrow("h5").html().substringBefore(""), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(doc.selectFirstOrThrow("h5 div").text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt index ebbf48ed..aa4d116b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt @@ -176,7 +176,8 @@ internal abstract class SinmhParser( MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = 0, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt index bff10810..c835ce83 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt @@ -167,7 +167,8 @@ class MangaAy(context: MangaLoaderContext) : PagedMangaParser(context, MangaSour MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(tr.selectFirstOrThrow("time").attr("datetime")), 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 5c686374..837d0e65 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 @@ -77,7 +77,8 @@ internal class SadScans(context: MangaLoaderContext) : MangaParser(context, Mang MangaChapter( id = generateUid(url), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = dateFormat.tryParse(div.select(".detail span").last()?.text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt index f2477e69..9c5a9d62 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt @@ -183,7 +183,8 @@ class TrWebtoon(context: MangaLoaderContext) : MangaChapter( id = generateUid(url), name = tr.selectFirstOrThrow("a").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt index 27b1493e..370a1492 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt @@ -116,7 +116,8 @@ class YaoiFlix(context: MangaLoaderContext) : PagedMangaParser(context, MangaSou MangaChapter( id = generateUid(href), name = div.selectFirstOrThrow(".name").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(div.selectFirstOrThrow(".date").text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt index 256892d7..03acef75 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt @@ -138,7 +138,8 @@ internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context, MangaChapter( id = generateUid(href), name = name, - number = i + 1, + number = i + 1f, + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(dateText), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt index 336e7e88..807fcf51 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt @@ -93,7 +93,8 @@ class YurinekoParser(context: MangaLoaderContext) : PagedMangaParser(context, Ma MangaChapter( id = generateUid(chapterId.toLong()), name = jo.getString("name"), - number = i + 1, + number = i + 1f, + volume = 0, scanlator = null, url = "/read/$mangaId/$chapterId", uploadDate = df.tryParse(jo.getString("date")), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt index 4c0b7354..4105aed5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt @@ -234,7 +234,8 @@ internal abstract class WpComicsParser( MangaChapter( id = generateUid(href), name = a.text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt index ff7751ac..e3bfafc0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt @@ -176,7 +176,7 @@ internal class XoxoComics(context: MangaLoaderContext) : override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) + "/all" val doc = webClient.httpGet(fullUrl).parseHtml() - return doc.select(selectPage).mapNotNull{ url -> + return doc.select(selectPage).mapNotNull { url -> val img = url.src()?.toRelativeUrl(domain) ?: return@mapNotNull null MangaPage( id = generateUid(img), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt index 73370a13..e3d7ef96 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt @@ -283,7 +283,8 @@ internal abstract class ZeistMangaParser( id = generateUid(href), url = href, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(dateText), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt index 1d143e0e..9f01c030 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt @@ -41,7 +41,8 @@ internal class KomikGes(context: MangaLoaderContext) : id = generateUid(href), url = href, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(dateText), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt index 36e2d10f..9b8072ce 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt @@ -63,7 +63,8 @@ internal class MonzeeKomik(context: MangaLoaderContext) : id = generateUid(href), url = href, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(dateText), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt index 65060b5c..34b09b30 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt @@ -33,7 +33,8 @@ internal class ToonCubus(context: MangaLoaderContext) : id = generateUid(url), url = url, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = 0, scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt index 18690f48..296e8267 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt @@ -37,7 +37,8 @@ internal class AnimeXNovel(context: MangaLoaderContext) : id = generateUid(url), url = url, name = name, - number = i + 1, + number = i + 1f, + volume = 0, branch = null, uploadDate = 0, scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt index 3164936e..9fd41420 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt @@ -159,7 +159,9 @@ internal class Baozimh(context: MangaLoaderContext) : val tags = selectTag.mapNotNullToSet { tagMap[it.text()] } var chaptersReversed = false val chapters = try { - doc.requireElementById("chapter-items").select("div.comics-chapters a") + doc.requireElementById("chapters_other_list").select("div.comics-chapters a") + doc.requireElementById("chapter-items") + .select("div.comics-chapters a") + doc.requireElementById("chapters_other_list") + .select("div.comics-chapters a") } catch (e: ParseException) { chaptersReversed = true // If the above fails it means the manga is new, so we select the chapters using the "comics-chapters__item" query @@ -174,18 +176,19 @@ internal class Baozimh(context: MangaLoaderContext) : }, tags = tags, chapters = chapters.mapChapters(chaptersReversed) { i, a -> - val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain) - MangaChapter( - id = generateUid(url), - name = a.selectFirstOrThrow("span").text(), - number = i + 1, - url = url, - scanlator = null, - uploadDate = 0, - branch = null, - source = source, - ) - }, + val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain) + MangaChapter( + id = generateUid(url), + name = a.selectFirstOrThrow("span").text(), + number = i + 1f, + volume = 0, + url = url, + scanlator = null, + uploadDate = 0, + branch = null, + source = source, + ) + }, ) } @@ -210,22 +213,23 @@ internal class Baozimh(context: MangaLoaderContext) : var chapterPart = chapterLink.substringAfterLast("/").substringBefore(".html") var nexChapterPart = nextChapterLink.substringAfterLast("/").substringBefore(".html") - while (nextChapterLink != "" && (nexChapterPart == chapterPart + "_" + part.toString())){ + while (nextChapterLink != "" && (nexChapterPart == chapterPart + "_" + part.toString())) { val doc2 = webClient.httpGet(nextChapterLink).parseHtml() val pages2 = doc2.requireElementById("__nuxt").select("button.pure-button").mapNotNull { btn -> val urlPage = btn.attr("on").substringAfter(": '").substringBefore("?t=") val id = generateUid(urlPage) - if(!idSet.add(id)){ - null - }else{ + if (!idSet.add(id)) { + null + } else { MangaPage( id = id, url = urlPage, preview = null, source = source, - )} + ) + } } - pages = pages+pages2 + pages = pages + pages2 part++ chapterLink = doc2.select("link[rel=canonical]").attr("href") nextChapterLink = doc2.select("a#next-chapter").attr("href") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt index aff9aa4f..50ea68a7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt @@ -199,7 +199,8 @@ internal abstract class ZMangaParser( MangaChapter( id = generateUid(href), name = li.selectFirstOrThrow(".flexch-infoz span:not(.date)").text(), - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt index 1f555b1b..e583cc67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt @@ -28,7 +28,8 @@ internal class MaidId(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = "Chapter $numChapter", - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt index 9557e176..fc8f58b7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt @@ -28,7 +28,8 @@ internal class ShiroDoujin(context: MangaLoaderContext) : MangaChapter( id = generateUid(href), name = "Chapter $numChapter", - number = i + 1, + number = i + 1f, + volume = 0, url = href, uploadDate = parseChapterDate( dateFormat,