stevenyomi 205d95cc07 Migrate to lib-multisrc (#1237)
* adjustments

* Run generator

* Remove multisrc project

* add lib dependencies

* Remove multisrc from build scripts

* Remove build condition
2024-02-18 20:10:37 +00:00

96 lines
2.4 KiB
Kotlin

package eu.kanade.tachiyomi.multisrc.readerfront
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import java.text.DecimalFormat
import java.text.SimpleDateFormat
import java.util.Locale
@Serializable
data class Work(
private val name: String,
val stub: String,
val thumbnail_path: String,
val adult: Boolean? = null,
val type: String? = null,
val licensed: Boolean? = null,
val status_name: String? = null,
val description: String? = null,
val demographic_name: String? = null,
val genres: List<NameWrapper>? = null,
private val people_works: List<PeopleWorks>? = null,
) {
@Transient
val authors = people_works?.filter { it.role == 1 }
@Transient
val artists = people_works?.filter { it.role == 2 }
override fun toString() = name
}
@Serializable
data class Release(
val id: Int,
val chapter: Int,
val subchapter: Int,
val volume: Int,
private val name: String,
private val releaseDate: String,
) {
@Transient
val number = "$chapter.$subchapter".toFloat()
@Transient
val timestamp = dateFormat.parse(releaseDate)?.time ?: 0L
override fun toString() = buildString {
if (number > 0) {
if (volume > 0) append("Volume $volume ")
append("Chapter ${decimalFormat.format(number)}")
if (name.isNotEmpty()) append(": ")
}
append(name)
}
companion object {
private const val ISO_DATE = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
private val decimalFormat = DecimalFormat("#.##")
private val dateFormat = SimpleDateFormat(ISO_DATE, Locale.ROOT)
}
}
@Serializable
data class Chapter(
private val uniqid: String,
private val work: UniqidWrapper,
private val pages: List<Page>,
) : Iterable<Page> by pages {
/** Get the path of a page in the list. */
fun path(page: Page) = "/works/$work/$this/$page"
override fun toString() = uniqid
}
@Serializable
data class Page(private val filename: String, val width: Int) {
override fun toString() = filename
}
@Serializable
data class UniqidWrapper(private val uniqid: String) {
override fun toString() = uniqid
}
@Serializable
data class PeopleWorks(val role: Int, private val people: NameWrapper) {
override fun toString() = people.toString()
}
@Serializable
data class NameWrapper(private val name: String) {
override fun toString() = name
}