Do not show -100000 chapter or volume number
This commit is contained in:
@@ -504,16 +504,8 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
|
|||||||
val allChapterList = mutableListOf<SChapter>()
|
val allChapterList = mutableListOf<SChapter>()
|
||||||
volumes.forEach { volume ->
|
volumes.forEach { volume ->
|
||||||
run {
|
run {
|
||||||
if (volume.number == 0) {
|
volume.chapters.map {
|
||||||
// Regular chapters
|
allChapterList.add(helper.chapterFromVolume(it, volume))
|
||||||
volume.chapters.map {
|
|
||||||
allChapterList.add(helper.chapterFromObject(it))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Volume chapter
|
|
||||||
volume.chapters.map {
|
|
||||||
allChapterList.add(helper.chapterFromVolume(it, volume))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package eu.kanade.tachiyomi.extension.all.kavita
|
package eu.kanade.tachiyomi.extension.all.kavita
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.extension.all.kavita.dto.ChapterDto
|
import eu.kanade.tachiyomi.extension.all.kavita.dto.ChapterDto
|
||||||
|
import eu.kanade.tachiyomi.extension.all.kavita.dto.ChapterType
|
||||||
import eu.kanade.tachiyomi.extension.all.kavita.dto.PaginationInfo
|
import eu.kanade.tachiyomi.extension.all.kavita.dto.PaginationInfo
|
||||||
import eu.kanade.tachiyomi.extension.all.kavita.dto.SeriesDto
|
import eu.kanade.tachiyomi.extension.all.kavita.dto.SeriesDto
|
||||||
import eu.kanade.tachiyomi.extension.all.kavita.dto.VolumeDto
|
import eu.kanade.tachiyomi.extension.all.kavita.dto.VolumeDto
|
||||||
@@ -75,57 +76,32 @@ class KavitaHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fun chapterFromObject(obj: ChapterDto): SChapter = SChapter.create().apply {
|
|
||||||
url = obj.id.toString()
|
|
||||||
name = if (obj.number == "0" && obj.isSpecial) {
|
|
||||||
// This is a special. Chapter name is special name
|
|
||||||
obj.range
|
|
||||||
} else {
|
|
||||||
val cleanedName = obj.title.replaceFirst("^0+(?!$)".toRegex(), "")
|
|
||||||
"Chapter $cleanedName"
|
|
||||||
}
|
|
||||||
date_upload = parseDate(obj.created)
|
|
||||||
chapter_number = obj.number.toFloat()
|
|
||||||
scanlator = "${obj.pages} pages"
|
|
||||||
}
|
|
||||||
|
|
||||||
fun chapterFromVolume(obj: ChapterDto, volume: VolumeDto): SChapter =
|
fun chapterFromVolume(chapter: ChapterDto, volume: VolumeDto): SChapter =
|
||||||
SChapter.create().apply {
|
SChapter.create().apply {
|
||||||
// If there are multiple chapters to this volume, then prefix with Volume number
|
val type = ChapterType.of(chapter, volume)
|
||||||
if (volume.chapters.isNotEmpty() && obj.number != "0") {
|
|
||||||
// This volume is not volume 0, hence they are not loose chapters
|
|
||||||
// We just add a nice Volume X to the chapter title
|
|
||||||
// Chapter-based Volume
|
|
||||||
name = "Volume ${volume.number} Chapter ${obj.number}"
|
|
||||||
chapter_number = obj.number.toFloat()
|
|
||||||
} else if (obj.number == "0") {
|
|
||||||
// Both specials and volume has chapter number 0
|
|
||||||
if (volume.number == 0) {
|
|
||||||
// Treat as special
|
|
||||||
// Special is not in a volume
|
|
||||||
if (obj.range == "") {
|
|
||||||
// Special does not have any Title
|
|
||||||
name = "Chapter 0"
|
|
||||||
chapter_number = obj.number.toFloat()
|
|
||||||
} else {
|
|
||||||
// We use it's own special tile
|
|
||||||
name = obj.range
|
|
||||||
chapter_number = obj.number.toFloat()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Is a single-file volume
|
|
||||||
// We encode the chapter number to support tracking
|
|
||||||
name = "Volume ${volume.number}"
|
|
||||||
chapter_number = volume.number.toFloat() / 10000
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
name = "Unhandled Else Volume ${volume.number}"
|
|
||||||
}
|
|
||||||
url = obj.id.toString()
|
|
||||||
date_upload = parseDate(obj.created)
|
|
||||||
|
|
||||||
scanlator = "${obj.pages} pages"
|
name = when (type) {
|
||||||
|
ChapterType.Regular -> "Volume ${volume.number} Chapter ${chapter.number}"
|
||||||
|
ChapterType.SingleFileVolume -> "Volume ${volume.number}"
|
||||||
|
ChapterType.Special -> chapter.range
|
||||||
|
ChapterType.LooseLeaf -> {
|
||||||
|
val cleanedName = chapter.title.replaceFirst("^0+(?!$)".toRegex(), "")
|
||||||
|
"Chapter $cleanedName"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
chapter_number = if (type == ChapterType.SingleFileVolume) {
|
||||||
|
volume.number.toFloat() / 10000
|
||||||
|
} else {
|
||||||
|
chapter.number.toFloat()
|
||||||
|
}
|
||||||
|
|
||||||
|
url = chapter.id.toString()
|
||||||
|
date_upload = parseDate(chapter.created)
|
||||||
|
scanlator = "${chapter.pages} pages"
|
||||||
}
|
}
|
||||||
|
|
||||||
val intl = Intl(
|
val intl = Intl(
|
||||||
language = Locale.getDefault().toString(),
|
language = Locale.getDefault().toString(),
|
||||||
baseLanguage = "en",
|
baseLanguage = "en",
|
||||||
|
|||||||
@@ -88,6 +88,29 @@ data class VolumeDto(
|
|||||||
val chapters: List<ChapterDto> = emptyList(),
|
val chapters: List<ChapterDto> = emptyList(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
enum class ChapterType {
|
||||||
|
Regular, // chapter with volume information
|
||||||
|
LooseLeaf, // chapter without volume information
|
||||||
|
SingleFileVolume,
|
||||||
|
Special,
|
||||||
|
;
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun of(chapter: ChapterDto, volume: VolumeDto): ChapterType =
|
||||||
|
if (volume.number == 100_000) {
|
||||||
|
Special
|
||||||
|
} else if (volume.number == -100_000) {
|
||||||
|
LooseLeaf
|
||||||
|
} else {
|
||||||
|
if (chapter.number == "-100000") {
|
||||||
|
SingleFileVolume
|
||||||
|
} else {
|
||||||
|
Regular
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class ChapterDto(
|
data class ChapterDto(
|
||||||
val id: Int,
|
val id: Int,
|
||||||
|
|||||||
Reference in New Issue
Block a user