Change chapter name to title

master
Koitharu 1 year ago
parent f26fecb714
commit 531145c7f9
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -1,6 +1,7 @@
package org.koitharu.kotatsu.parsers.model
import org.koitharu.kotatsu.parsers.util.formatSimple
import org.koitharu.kotatsu.parsers.util.ifNullOrEmpty
public data class MangaChapter(
/**
@ -8,9 +9,10 @@ public data class MangaChapter(
*/
@JvmField public val id: Long,
/**
* User-readable name of chapter
* User-readable name of chapter if provided by parser or null instead
* Do not pass manga title or chapter number here
*/
@JvmField public val name: String,
@JvmField public val title: String?,
/**
* Chapter number starting from 1, 0 if unknown
*/
@ -40,6 +42,15 @@ public data class MangaChapter(
@JvmField public val source: MangaSource,
) {
@Deprecated("Use title instead", ReplaceWith("title"))
val name: String
get() = title.ifNullOrEmpty {
buildString {
if (volume > 0) append("Vol ").append(volume).append(' ')
if (number > 0) append("Chapter ").append(number) else append("Unnamed")
}
}
public fun numberString(): String? = if (number > 0f) {
number.formatSimple()
} else {

@ -365,7 +365,7 @@ internal class BatoToParser(context: MangaLoaderContext) : LegacyPagedMangaParse
val href = a.attrAsRelativeUrl("href")
return MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.textOrNull(),
number = index + 1f,
volume = 0,
url = href,

@ -226,13 +226,7 @@ internal class ComickFunParser(context: MangaLoaderContext) :
}
MangaChapter(
id = generateUid(jo.getLong("id")),
name = buildString {
if (vol > 0) {
append("Vol ").append(vol).append(' ')
}
append("Chap ").append(chap.formatSimple())
jo.getStringOrNull("title")?.let { append(": ").append(it) }
},
title = jo.getStringOrNull("title"),
number = chap,
volume = vol,
url = jo.getString("hid"),

@ -235,7 +235,7 @@ internal class ExHentaiParser(
val url = "${manga.url}?p=${i - 1}"
chapters += MangaChapter(
id = generateUid(url),
name = "${manga.title} #$i",
title = null,
number = i.toFloat(),
volume = 0,
url = url,

@ -583,7 +583,7 @@ internal class HitomiLaParser(context: MangaLoaderContext) : LegacyMangaParser(c
MangaChapter(
id = generateUid(manga.url),
url = manga.url,
name = json.getString("title"),
title = json.getStringOrNull("title"),
scanlator = json.getString("type").toTitleCase(),
number = 1f,
volume = 0,

@ -175,7 +175,7 @@ internal class ImHentai(context: MangaLoaderContext) :
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = null,
number = 1f,
volume = 0,
url = manga.url,

@ -102,7 +102,7 @@ internal abstract class LineWebtoonsParser(
return episodes.mapChapters { i, jo ->
MangaChapter(
id = generateUid("$titleNo-$i"),
name = jo.getString("episodeTitle"),
title = jo.getStringOrNull("episodeTitle"),
number = jo.getInt("episodeSeq").toFloat(),
volume = 0,
url = "$titleNo-${jo.get("episodeNo")}",

@ -484,10 +484,7 @@ internal class MangaDexParser(context: MangaLoaderContext) : AbstractMangaParser
}
val chapter = MangaChapter(
id = generateUid(id),
name = attrs.getStringOrNull("title") ?: buildString {
if (volume > 0) append("Vol. ").append(volume).append(' ')
append("Chapter ").append(number.formatSimple())
},
title = attrs.getStringOrNull("title"),
number = number,
volume = volume,
url = id,

@ -280,7 +280,7 @@ internal abstract class MangaFireParser(
return chapterElements.mapChapters(reversed = true) { _, it ->
MangaChapter(
id = generateUid(it.attr("href")),
name = it.attr("title").ifBlank {
title = it.attr("title").ifBlank {
"${branch.type.toTitleCase()} ${it.attr("data-number")}"
},
number = it.attr("data-number").toFloat(),

@ -213,7 +213,7 @@ internal class MangaPark(context: MangaLoaderContext) :
val dateText = div.selectFirst("span[q:key=Ee_0]")?.text()
MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.textOrNull(),
number = i + 1f,
volume = 0,
url = href,

@ -184,7 +184,7 @@ internal abstract class MangaPlusParser(
MangaChapter(
id = generateUid(chapterId),
url = chapterId,
name = subtitle,
title = subtitle,
number = chapter.getString("name")
.substringAfter("#")
.toFloatOrNull() ?: -1f,

@ -222,7 +222,7 @@ internal class MangaReaderToParser(context: MangaLoaderContext) :
chapters.add(
MangaChapter(
id = generateUid(a.attrAsRelativeUrl("href")),
name = a.attr("title"),
title = a.attrOrNull("title"),
number = li.attr("data-number").toFloat(),
volume = 0,
url = a.attrAsRelativeUrl("href"),
@ -242,7 +242,7 @@ internal class MangaReaderToParser(context: MangaLoaderContext) :
chapters.add(
MangaChapter(
id = generateUid(url),
name = name,
title = name,
number = numRegex.find(name)?.groupValues?.getOrNull(1)?.toFloatOrNull() ?: 0f,
volume = 0,
url = url,

@ -150,7 +150,7 @@ internal abstract class NineMangaParser(
val href = a.attrAsRelativeUrl("href").replace("%20", " ")
MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.textOrNull(),
number = i + 1f,
volume = 0,
url = href,

@ -284,7 +284,7 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) :
chapters = listOf(
MangaChapter(
id = generateUid(id),
name = name,
title = name,
number = 1f,
volume = 0,
url = id,

@ -97,7 +97,7 @@ internal abstract class WebtoonsParser(
episodes.mapChapters { i, jo ->
MangaChapter(
id = generateUid("$titleNo-$i"),
name = jo.getString("episodeTitle"),
title = jo.getStringOrNull("episodeTitle"),
number = jo.getInt("episodeSeq").toFloat(),
volume = 0,
url = "$titleNo-${jo.get("episodeNo")}",

@ -168,7 +168,7 @@ internal abstract class AnimeBootstrapParser(
val href = a.attr("href")
MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = href,

@ -124,7 +124,7 @@ internal class PapScan(context: MangaLoaderContext) :
val dateText = li.selectFirst("span.date-chapter-title-rtl")?.text()
MangaChapter(
id = generateUid(href),
name = li.selectFirstOrThrow("span em").text(),
title = li.selectFirstOrThrow("span em").text(),
number = i + 1f,
volume = 0,
url = href,

@ -191,7 +191,7 @@ internal class FlixScans(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(url),
url = url,
name = j.getString("slug").replace('-', ' '),
title = j.getString("slug").replace('-', ' '),
number = i + 1f,
volume = 0,
branch = null,

@ -101,7 +101,7 @@ internal class MangaStorm(context: MangaLoaderContext) :
val url = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = url,

@ -195,7 +195,7 @@ internal class TeamXNovel(context: MangaLoaderContext) :
val url = li.selectFirstOrThrow("a").attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = li.selectFirstOrThrow(".epl-title").text(),
title = li.selectFirstOrThrow(".epl-title").text(),
number = url.substringAfterLast('/').toFloatOrNull() ?: 0f,
volume = 0,
url = url,

@ -159,7 +159,7 @@ internal class AnibelParser(context: MangaLoaderContext) : LegacyMangaParser(con
val number = jo.getInt("chapter")
MangaChapter(
id = generateUid(jo.getString("id")),
name = "Глава $number",
title = null,
number = number.toFloat(),
volume = 0,
url = "${manga.url}/read/$number",

@ -142,7 +142,7 @@ internal abstract class CupFoxParser(
val href = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = href,

@ -172,7 +172,7 @@ internal class AsuraScansParser(context: MangaLoaderContext) :
val cleanDate = date.replace(regexDate, "$1")
MangaChapter(
id = generateUid(url),
name = div.selectFirst("h3")?.text() ?: "Chapter : ${i + 1f}",
title = div.selectFirst("h3")?.textOrNull(),
number = i + 1f,
volume = 0,
url = url,

@ -119,7 +119,7 @@ internal class BeeToon(context: MangaLoaderContext) :
val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain)
MangaChapter(
id = generateUid(url),
name = a.selectFirstOrThrow(".chap").text(),
title = a.selectFirstOrThrow(".chap").text(),
number = i + 1f,
volume = 0,
url = url,

@ -65,7 +65,7 @@ internal class CloneMangaParser(context: MangaLoaderContext) :
for (i in 0..numChapters) {
val chapter = MangaChapter(
id = generateUid("$series&page=$i"),
name = "Chapter ${i + 1}",
title = null,
number = i + 1f,
volume = 0,
url = "$series&page=$i",

@ -136,7 +136,7 @@ internal class ComicExtra(context: MangaLoaderContext) :
}
MangaChapter(
id = generateUid(url),
name = name,
title = name,
number = elements.size - i.toFloat(),
volume = 0,
url = url,

@ -179,7 +179,7 @@ internal class DynastyScans(context: MangaLoaderContext) :
val dateText = li.select("small").last()?.text()?.replace("released ", "")?.replace("'", "")
MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = href,

@ -183,7 +183,7 @@ internal class FlameComics(context: MangaLoaderContext) :
val number = jo.getFloatOrDefault("chapter", 0f)
MangaChapter(
id = generateUid(longOf(seriesId.toInt(), chapterId.toInt())),
name = jo.getStringOrNull("name") ?: ("Chapter " + number.formatSimple()),
title = jo.getStringOrNull("name"),
number = number,
volume = 0,
url = seriesId.toString() + "?" + jo.getStringOrNull("token").orEmpty(),

@ -175,7 +175,7 @@ internal class FlixScansOrg(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(url),
url = url,
name = j.getString("slug").replace('-', ' '),
title = j.getString("slug").replace('-', ' '),
number = i + 1f,
volume = 0,
branch = null,

@ -144,7 +144,7 @@ internal class MangaGeko(context: MangaLoaderContext) :
.replace(".", "").replace("Sept", "Sep")
MangaChapter(
id = generateUid(url),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = url,

@ -134,7 +134,7 @@ internal class MangaKawaiiEn(context: MangaLoaderContext) :
val url = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = url,

@ -176,7 +176,7 @@ internal class MangaTownParser(context: MangaLoaderContext) :
dateFormat,
li.selectFirst("span.time")?.text(),
),
name = name.ifEmpty { "${manga.title} - ${i + 1}" },
title = name.nullIfEmpty(),
scanlator = null,
branch = null,
)
@ -273,7 +273,7 @@ internal class MangaTownParser(context: MangaLoaderContext) :
dateFormat,
li.selectFirst("span.time")?.text(),
),
name = name.ifEmpty { "${manga.title} - ${i + 1}" },
title = name.nullIfEmpty(),
scanlator = null,
branch = null,
)

@ -166,7 +166,7 @@ internal class Mangaowl(context: MangaLoaderContext) :
val name = t.substringAfter("name:\"").substringBefore('"')
MangaChapter(
id = generateUid(url),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = url,

@ -178,7 +178,7 @@ internal class Manhwa18Com(context: MangaLoaderContext) :
val uploadDate = parseUploadDate(element.selectFirst(".chapter-time")?.text())
MangaChapter(
id = generateUid(chapterUrl),
name = element.selectFirst(".chapter-name")?.text().orEmpty(),
title = element.selectFirst(".chapter-name")?.textOrNull(),
number = index + 1f,
volume = 0,
url = chapterUrl,

@ -178,7 +178,7 @@ internal class Manhwa18Parser(context: MangaLoaderContext) :
val uploadDate = parseUploadDate(element.selectFirst(".chapter-time")?.text())
MangaChapter(
id = generateUid(chapterUrl),
name = element.selectFirst(".chapter-name")?.text().orEmpty(),
title = element.selectFirst(".chapter-name")?.textOrNull(),
number = index + 1f,
volume = 0,
url = chapterUrl,

@ -129,7 +129,7 @@ internal class ManhwasMen(context: MangaLoaderContext) :
val url = li.selectFirstOrThrow("a").attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = li.selectFirstOrThrow(".flex-grow-1 span").text(),
title = li.selectFirstOrThrow(".flex-grow-1 span").text(),
number = i + 1f,
volume = 0,
url = url,

@ -111,7 +111,7 @@ internal class MyComicList(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = name.substringAfter('#').toFloatOrNull() ?: (i + 1f),
url = href,
scanlator = null,

@ -79,7 +79,7 @@ internal class Po2Scans(context: MangaLoaderContext) :
val url = "/" + a.attrAsRelativeUrl("href").toAbsoluteUrl(domain)
MangaChapter(
id = generateUid(url),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = url,

@ -149,7 +149,7 @@ internal class Pururin(context: MangaLoaderContext) :
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = manga.title,
number = 1f,
volume = 0,
url = manga.url,

@ -152,7 +152,7 @@ internal class VyManga(context: MangaLoaderContext) :
val url = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = a.selectFirst("span")?.text() ?: "Chapter ${i + 1}",
title = a.selectFirst("span")?.textOrNull(),
number = i + 1f,
volume = 0,
url = url,

@ -303,7 +303,7 @@ internal class WeebCentral(context: MangaLoaderContext) : LegacyMangaParser(cont
MangaChapter(
id = generateUid(chapterId),
url = chapterId,
name = name,
title = name,
number = Regex("""(?<!S)\b(\d+(\.\d+)?)\b""").find(name)
?.groupValues?.get(1)?.toFloatOrNull()
?: i.toFloat(),

@ -66,7 +66,7 @@ internal class TempleScanEsp(context: MangaLoaderContext) :
val href = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(href),
name = a.selectFirst("span")?.text() ?: "Capítulo ${i + 1f}",
title = a.selectFirst("span")?.textOrNull(),
number = i + 1f,
volume = 0,
url = href,

@ -210,7 +210,7 @@ internal class TuMangaOnlineParser(context: MangaLoaderContext) : LegacyPagedMan
val href = element.selectFirstOrThrow("div.row > .text-right > a").attrAsRelativeUrl("href")
return MangaChapter(
id = generateUid(href),
name = "One Shot",
title = "One Shot",
number = 1f,
volume = 0,
url = href,
@ -227,7 +227,7 @@ internal class TuMangaOnlineParser(context: MangaLoaderContext) : LegacyPagedMan
val href = element.selectFirstOrThrow("div.row > .text-right > a").attrAsRelativeUrl("href")
return MangaChapter(
id = generateUid(href),
name = chName,
title = chName,
number = number + 1f,
volume = 0,
url = href,

@ -218,7 +218,7 @@ internal abstract class FmreaderParser(
val dateText = a.selectFirst(selectDate)?.text()
MangaChapter(
id = generateUid(href),
name = a.selectFirstOrThrow("div.chapter-name").text(),
title = a.selectFirstOrThrow("div.chapter-name").text(),
number = i + 1f,
volume = 0,
url = href,

@ -64,7 +64,7 @@ internal class Klz9(context: MangaLoaderContext) :
val dateText = a.selectFirst(selectDate)?.text()
MangaChapter(
id = generateUid(href),
name = a.selectFirstOrThrow("a").text(),
title = a.selectFirstOrThrow("a").text(),
number = i + 1f,
volume = 0,
url = href,

@ -24,7 +24,7 @@ internal class WeLoveManga(context: MangaLoaderContext) :
val dateText = a.selectFirst(selectDate)?.text()
MangaChapter(
id = generateUid(href),
name = a.selectFirstOrThrow("a").text(),
title = a.selectFirstOrThrow("a").text(),
number = i + 1f,
volume = 0,
url = href,

@ -143,7 +143,7 @@ internal abstract class FoolSlideParser(
val dateText = div.selectFirst(selectDate)?.text()?.substringAfter(", ")
MangaChapter(
id = generateUid(href),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = href,

@ -234,11 +234,11 @@ internal class BentomangaParser(context: MangaLoaderContext) :
.select(".component-chapter").map { div ->
val a = div.selectFirstOrThrow("a:not([style*='display:none'])")
val href = a.attrAsRelativeUrl("href")
val title = div.selectFirstOrThrow(".chapter_volume").text()
val title = div.selectFirstOrThrow(".chapter_volume").textOrNull()
val name = div.selectFirst(".chapter_title")?.textOrNull()
MangaChapter(
id = generateUid(href),
name = if (name != null && name != title) "$title: $name" else title,
title = if (name != null && name != title) "$title: $name" else title,
number = href.substringAfterLast('/').toFloatOrNull() ?: 0f,
volume = 0,
url = href,

@ -105,7 +105,7 @@ internal class FuryoSociety(context: MangaLoaderContext) :
val dateText = div.selectFirst("div.meta_r")?.text()?.replace("Hier", "1 jour")
MangaChapter(
id = generateUid(href),
name = div.selectFirst("div.title")?.text() + " : " + div.selectFirst("div.name")?.text(),
title = div.selectFirst("div.title")?.text() + " : " + div.selectFirst("div.name")?.text(),
number = i + 1f,
volume = 0,
url = href,

@ -185,11 +185,11 @@ internal class LegacyScansParser(context: MangaLoaderContext) :
chapters = root.select("div.chapterList a")
.mapChapters(reversed = true) { i, a ->
val href = a.attrAsRelativeUrl("href")
val name = a.selectFirst("span")?.text()
val name = a.selectFirst("span")?.textOrNull()
val dateText = a.selectLast("span")?.text() ?: "0"
MangaChapter(
id = generateUid(href),
name = name ?: "Chapitre : ${i + 1f}",
title = name,
number = i + 1f,
volume = 0,
url = href,

@ -116,7 +116,7 @@ internal class LireScan(context: MangaLoaderContext) : LegacyPagedMangaParser(co
val dateText = div.select("p").last()?.text()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i.toFloat(),
volume = 0,
url = href,

@ -179,7 +179,7 @@ internal class LugnicaScans(context: MangaLoaderContext) :
)
MangaChapter(
id = generateUid(url),
name = "Chapitre : $id",
title = null,
number = i.toFloat(),
volume = 0,
url = url,

@ -135,7 +135,7 @@ internal class MangaKawaii(context: MangaLoaderContext) :
val url = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
url = url,

@ -295,7 +295,7 @@ internal class MangaMana(context: MangaLoaderContext) :
val chapterN = href.substringAfterLast('/').replace("-", ".").replace("[^0-9.]".toRegex(), "").toFloat()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = chapterN,
volume = 0,
url = href,

@ -142,7 +142,7 @@ internal class ScansMangasMe(context: MangaLoaderContext) :
val href = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(href),
name = li.selectFirstOrThrow("span.mobile chapter").text(),
title = li.selectFirstOrThrow("span.mobile chapter").text(),
number = li.selectFirstOrThrow("span.mobile chapter").text().substringAfterLast(" ").toFloat(),
volume = 0,
url = href,

@ -155,7 +155,7 @@ internal class ScantradUnion(context: MangaLoaderContext) :
val date = li.select(".name-chapter").first()?.children()?.elementAt(2)?.text()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i.toFloat(),
volume = 0,
url = href,

@ -240,7 +240,7 @@ internal abstract class FuzzyDoodleParser(
val chapterN = href.substringAfterLast('/').replace("-", ".").replace("[^0-9.]".toRegex(), "").toFloat()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = chapterN,
volume = 0,
url = href,

@ -173,7 +173,7 @@ internal abstract class GalleryAdultsParser(
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = manga.title,
number = 1f,
volume = 0,
url = urlChapters,

@ -133,7 +133,7 @@ internal class HentaiEra(context: MangaLoaderContext) :
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = manga.title,
number = 1f,
volume = 0,
url = urlChapters,

@ -120,7 +120,7 @@ internal abstract class GattsuParser(
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = manga.title,
number = 1f,
volume = 0,
url = urlChapter,

@ -95,7 +95,7 @@ internal abstract class GuyaParser(
chapters.add(
MangaChapter(
id = generateUid(url),
name = chapter.getString("title"),
title = chapter.getString("title"),
number = i.toFloat(),
volume = 0,
url = url,

@ -159,7 +159,7 @@ internal abstract class HeanCms(
"/series/${it.getJSONObject("series").getString("series_slug")}/${it.getString("chapter_slug")}"
MangaChapter(
id = it.getLong("id"),
name = it.getString("chapter_name"),
title = it.getString("chapter_name"),
number = i + 1f,
volume = 0,
url = chapterUrl,

@ -97,7 +97,7 @@ internal abstract class HeanCmsAlt(
val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain)
MangaChapter(
id = generateUid(url),
name = a.selectFirst(selectChapterTitle)?.text() ?: "Chapter : ${i + 1f}",
title = a.selectFirst(selectChapterTitle)?.textOrNull(),
number = i + 1f,
volume = 0,
url = url,

@ -34,7 +34,7 @@ internal class Brakeout(context: MangaLoaderContext) :
val url = a.attrAsRelativeUrl("href").toAbsoluteUrl(domain)
MangaChapter(
id = generateUid(url),
name = div.selectFirstOrThrow(selectChapterTitle).text(),
title = div.selectFirstOrThrow(selectChapterTitle).text(),
number = i + 1f,
volume = 0,
url = url,

@ -150,7 +150,7 @@ internal abstract class HotComicsParser(
val chapterNum = li.selectFirst(".num")?.text()?.toFloat() ?: (i + 1f)
MangaChapter(
id = generateUid(url),
name = "Chapter : $chapterNum",
title = null,
number = chapterNum,
volume = 0,
url = url,

@ -161,7 +161,7 @@ internal class DoujinDesuParser(context: MangaLoaderContext) :
val url = titleTag.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = titleTag.text(),
title = titleTag.text(),
number = index + 1f,
volume = 0,
url = url,

@ -106,7 +106,7 @@ internal class HentaiCrot(context: MangaLoaderContext) :
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = manga.title,
number = 1f,
volume = 0,
url = fullUrl,

@ -106,7 +106,7 @@ internal class PixHentai(context: MangaLoaderContext) :
chapters = listOf(
MangaChapter(
id = manga.id,
name = manga.title,
title = manga.title,
number = 1f,
volume = 0,
url = fullUrl,

@ -6,10 +6,7 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.parsers.core.LegacyPagedMangaParser
import org.koitharu.kotatsu.parsers.model.*
import org.koitharu.kotatsu.parsers.util.*
import org.koitharu.kotatsu.parsers.util.json.asTypedList
import org.koitharu.kotatsu.parsers.util.json.getBooleanOrDefault
import org.koitharu.kotatsu.parsers.util.json.getStringOrNull
import org.koitharu.kotatsu.parsers.util.json.mapJSON
import org.koitharu.kotatsu.parsers.util.json.*
import java.text.SimpleDateFormat
import java.util.*
@ -147,8 +144,8 @@ internal abstract class IkenParser(
val chapterUrl = "/series/$slugName/${it.getString("slug")}"
MangaChapter(
id = it.getLong("id"),
name = "Chapter : ${it.getInt("number")}",
number = it.getInt("number").toFloat(),
title = null,
number = it.getFloatOrDefault("number", 0f),
volume = 0,
url = chapterUrl,
scanlator = null,

@ -137,7 +137,7 @@ internal class NicovideoSeigaParser(context: MangaLoaderContext) :
?.attrAsRelativeUrl("href") ?: li.parseFailed()
MangaChapter(
id = generateUid(href),
name = li.select("div > div.description > div.title > a").text(),
title = li.select("div > div.description > div.title > a").text(),
number = i + 1f,
volume = 0,
url = href,

@ -193,7 +193,7 @@ internal abstract class KeyoappParser(
val dateText = a.selectLast("div.text-xs.w-fit")?.text() ?: "0"
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = href,

@ -200,7 +200,7 @@ internal abstract class LikeMangaParser(
}
MangaChapter(
id = generateUid(url),
name = name,
title = name,
number = chapNum.toFloatOrNull() ?: 0f,
volume = 0,
url = url,
@ -229,7 +229,7 @@ internal abstract class LikeMangaParser(
MangaChapter(
id = generateUid(url),
name = li.selectFirstOrThrow("a").text(),
title = li.selectFirstOrThrow("a").text(),
number = chapNum.toFloat(),
volume = 0,
url = url,

@ -173,7 +173,7 @@ internal abstract class LilianaParser(
val href = element.selectFirstOrThrow("a").attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(href),
name = element.selectFirst("a")?.text() ?: "Chapter : ${i + 1f}",
title = element.selectFirst("a")?.textOrNull(),
number = i + 1f,
volume = 0,
url = href,

@ -600,7 +600,7 @@ internal abstract class MadaraParser(
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,
@ -635,7 +635,7 @@ internal abstract class MadaraParser(
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -30,7 +30,7 @@ internal class Ero18x(context: MangaLoaderContext) :
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -28,7 +28,7 @@ internal class ManhwaRaw(context: MangaLoaderContext) :
val name = a.selectFirst("h4")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -30,7 +30,7 @@ internal class LekMangaCom(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -33,7 +33,7 @@ internal class RocksManga(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -140,7 +140,7 @@ internal class AdultWebtoon(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -134,7 +134,7 @@ internal class HentaiManga(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -134,7 +134,7 @@ internal class HentaiWebtoon(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -27,7 +27,7 @@ internal class Hentaixdickgirl(context: MangaLoaderContext) :
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -122,7 +122,7 @@ internal class IsekaiScan(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = a.ownText(),
title = a.ownText(),
number = i + 1f,
volume = 0,
branch = null,

@ -155,7 +155,7 @@ internal class MangaDass(context: MangaLoaderContext) :
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -31,7 +31,7 @@ internal class MangaDistrict(context: MangaLoaderContext) :
val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing")
MangaChapter(
id = generateUid(href),
name = a.ownText(),
title = a.ownText(),
number = i + 1f,
volume = 0,
url = href,

@ -148,7 +148,7 @@ internal class MangaDna(context: MangaLoaderContext) :
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -127,7 +127,7 @@ internal class MangaPure(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = a.ownText(),
title = a.ownText(),
number = i + 1f,
volume = 0,
branch = null,

@ -94,7 +94,7 @@ internal class ManhwaHentai(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -38,7 +38,7 @@ internal class ManhwaTop(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -137,7 +137,7 @@ internal class ManyToon(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -62,7 +62,7 @@ internal class MangasNoSekai(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -28,7 +28,7 @@ internal class ManhwaEs(context: MangaLoaderContext) :
val name = li.selectFirstOrThrow(".mini-letters a").text()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -74,7 +74,7 @@ internal class ManhwaLatino(context: MangaLoaderContext) :
val name = li.selectFirst("a:contains(Capitulo)")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -91,7 +91,7 @@ internal class TmoManga(context: MangaLoaderContext) :
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -34,7 +34,7 @@ internal class Hentaizone(context: MangaLoaderContext) :
val name = a.selectFirst("p")?.text() ?: a.ownText()
MangaChapter(
id = generateUid(href),
name = name,
title = name,
number = i + 1f,
volume = 0,
url = link,

@ -31,7 +31,7 @@ internal class ToonFr(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = href,
name = a.text(),
title = a.text(),
number = i + 1f,
volume = 0,
branch = null,

@ -27,7 +27,7 @@ internal class Neoxscans(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -8,7 +8,6 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull
import org.koitharu.kotatsu.parsers.util.domain
import org.koitharu.kotatsu.parsers.util.generateUid
import org.koitharu.kotatsu.parsers.util.mapChapters
import org.koitharu.kotatsu.parsers.util.parseFailed
@ -42,7 +41,7 @@ internal class LaviniaFansub(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -23,7 +23,7 @@ internal class TitanManga(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

@ -25,7 +25,7 @@ internal class TruyenTranhDamMyy(context: MangaLoaderContext) :
MangaChapter(
id = generateUid(href),
url = link,
name = name,
title = name,
number = i + 1f,
volume = 0,
branch = null,

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save