mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
chore: Prepare ComicInfo
This commit is contained in:
parent
fb6c463cf2
commit
66ac6201e5
5 changed files with 156 additions and 12 deletions
|
@ -213,9 +213,7 @@ dependencies {
|
|||
implementation(kotlin("reflect", version = kotlinx.versions.kotlin.get()))
|
||||
|
||||
// JSON
|
||||
implementation(kotlinx.serialization.json)
|
||||
implementation(kotlinx.serialization.protobuf)
|
||||
implementation(kotlinx.serialization.json.okio)
|
||||
implementation(kotlinx.bundles.serialization)
|
||||
|
||||
// JavaScript engine
|
||||
implementation(libs.quickjs.android)
|
||||
|
|
3
app/proguard-rules.pro
vendored
3
app/proguard-rules.pro
vendored
|
@ -89,6 +89,9 @@
|
|||
-keepclassmembers class kotlinx.serialization.** {
|
||||
<methods>;
|
||||
}
|
||||
|
||||
# XmlUtil
|
||||
-keep public enum nl.adaptivity.xmlutil.EventType { *; }
|
||||
##---------------End: proguard configuration for kotlinx.serialization ----------
|
||||
|
||||
# Apache Commons Compress
|
||||
|
|
134
app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt
Normal file
134
app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt
Normal file
|
@ -0,0 +1,134 @@
|
|||
package dev.yokai.core.metadata
|
||||
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import kotlinx.serialization.Serializable
|
||||
import nl.adaptivity.xmlutil.serialization.XmlElement
|
||||
import nl.adaptivity.xmlutil.serialization.XmlSerialName
|
||||
import nl.adaptivity.xmlutil.serialization.XmlValue
|
||||
|
||||
// REF: https://anansi-project.github.io/docs/comicinfo/schemas/v2.0
|
||||
@Serializable
|
||||
@XmlSerialName("ComicInfo", "", "")
|
||||
data class ComicInfo(
|
||||
val title: Title?,
|
||||
val series: Series?,
|
||||
val number: Number?,
|
||||
val summary: Summary?,
|
||||
val writer: Writer?,
|
||||
val penciller: Penciller?,
|
||||
val inker: Inker?,
|
||||
val colorist: Colorist?,
|
||||
val letterer: Letterer?,
|
||||
val coverArtist: CoverArtist?,
|
||||
val translator: Translator?,
|
||||
val genre: Genre?,
|
||||
val tags: Tags?,
|
||||
val web: Web?,
|
||||
val publishingStatus: PublishingStatusTachiyomi?,
|
||||
val categories: CategoriesTachiyomi?,
|
||||
val source: SourceMihon?,
|
||||
) {
|
||||
@XmlElement(false)
|
||||
@XmlSerialName("xmlns:xsd", "", "")
|
||||
val xmlSchema: String = "http://www.w3.org/2001/XMLSchema"
|
||||
|
||||
@XmlElement(false)
|
||||
@XmlSerialName("xmlns:xsi", "", "")
|
||||
val xmlSchemaInstance: String = "http://www.w3.org/2001/XMLSchema-instance"
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Title", "", "")
|
||||
data class Title(@XmlValue(true) val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Series", "", "")
|
||||
data class Series(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Number", "", "")
|
||||
data class Number(@XmlValue(true) val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Summary", "", "")
|
||||
data class Summary(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Writer", "", "")
|
||||
data class Writer(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Penciller", "", "")
|
||||
data class Penciller(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Inker", "", "")
|
||||
data class Inker(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Colorist", "", "")
|
||||
data class Colorist(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Letterer", "", "")
|
||||
data class Letterer(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("CoverArtist", "", "")
|
||||
data class CoverArtist(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Translator", "", "")
|
||||
data class Translator(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Genre", "", "")
|
||||
data class Genre(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Tags", "", "")
|
||||
data class Tags(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Web", "", "")
|
||||
data class Web(val value: String = "")
|
||||
|
||||
// Tachi Note: The spec doesn't have a good field for this
|
||||
// REF: https://github.com/anansi-project/comicinfo/issues/5
|
||||
@Serializable
|
||||
@XmlSerialName("PublishingStatusTachiyomi", "http://www.w3.org/2001/XMLSchema", "ty")
|
||||
data class PublishingStatusTachiyomi(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("Categories", "http://www.w3.org/2001/XMLSchema", "ty")
|
||||
data class CategoriesTachiyomi(val value: String = "")
|
||||
|
||||
@Serializable
|
||||
@XmlSerialName("SourceMihon", "http://www.w3.org/2001/XMLSchema", "mh")
|
||||
data class SourceMihon(val value: String = "")
|
||||
}
|
||||
|
||||
enum class ComicInfoPublishingStatus(
|
||||
val comicInfoValue: String,
|
||||
val sMangaModelValue: Int,
|
||||
) {
|
||||
ONGOING("Ongoing", SManga.ONGOING),
|
||||
COMPLETED("Completed", SManga.COMPLETED),
|
||||
LICENSED("Licensed", SManga.LICENSED),
|
||||
PUBLISHING_FINISHED("Publishing finished", SManga.PUBLISHING_FINISHED),
|
||||
CANCELLED("Cancelled", SManga.CANCELLED),
|
||||
ON_HIATUS("On hiatus", SManga.ON_HIATUS),
|
||||
UNKNOWN("Unknown", SManga.UNKNOWN),
|
||||
;
|
||||
|
||||
companion object {
|
||||
fun toComicInfoValue(value: Long): String {
|
||||
return entries.firstOrNull { it.sMangaModelValue == value.toInt() }?.comicInfoValue
|
||||
?: UNKNOWN.comicInfoValue
|
||||
}
|
||||
|
||||
fun toSMangaValue(value: String?): Int {
|
||||
return entries.firstOrNull { it.comicInfoValue == value }?.sMangaModelValue
|
||||
?: UNKNOWN.sMangaModelValue
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue