Do not show -100000 chapter or volume number

This commit is contained in:
Samuel Martins
2024-04-13 12:26:03 +02:00
parent 65de4667e1
commit c07675ea26
3 changed files with 48 additions and 57 deletions

View File

@@ -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))
}
} }
} }
} }

View File

@@ -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",

View File

@@ -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,