You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.0 KiB

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class i(val src: String, val width: Int, val height: Int)
@Serializable
data class resources(val i: i)
@Serializable
data class area(val href: String, val left: Int, val top: Int, val right: Int, val bottom: Int)
@Serializable
data class view(val width: Int, val height: Int, val coords: List<String>, val areas: List<area>? = null)
@Serializable
data class t(
@SerialName("ptimg-version") val ptimg_version: Int,
val resources: resources, val views: List<view>
)
@Serializable
data class MessageResponse(val message: String)
sealed class TestData
//漫画图片块解析结果
@Serializable
data class UrlResult(
val originImagePath: String,
val serverImagePath: String,
val t: t,
val romajiTitle: String,
val filename: String,
val isLast: Boolean = false
) : TestData()
//漫画图片解析进度
@Serializable
data class ParseTask(val total: Int, val finish: Int, val percentage: Float) : TestData()
@Serializable
enum class WebSocketClientCommand {
//取消解析任务
Cancel,
//心跳
Heart
}
@Serializable
enum class WebSocketResType {
//普通消息
Text,
//任务进度
Task,
//漫画数据
Image,
//漫画压缩包
Zip,
//漫画信息
Manga,
//取消任务
Cancel,
//心跳
Heart
}
@Serializable
data class WebSocketClient(val command: String)
@Serializable
data class WebSocketServerType(var dataType: String)
@Serializable
class WebSocketServer<T>(var dataType: String, val body: T)
//漫画信息
@Serializable
data class MangaInfo(val title: String, val romajiTitle: String, val href: String) : TestData()
//漫画打包信息
@Serializable
data class ZipResult(val zipUrl: String, val name: String, val size: String) : TestData()
data class StringResult(val message: String) : TestData()
const val websiteTitle = "朴实无华的takeshobo漫画解析工具"