添加常规信息解析

This commit is contained in:
zhushenwudi 2025-01-14 01:40:21 +08:00
parent ef92c3fb7f
commit 33e34c680e
4 changed files with 670 additions and 4062 deletions

View File

@ -13,6 +13,7 @@ repositories {
dependencies {
testImplementation 'org.jetbrains.kotlin:kotlin-test'
implementation('org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1')
implementation 'org.jsoup:jsoup:1.18.3'
}
test {

View File

@ -4,6 +4,8 @@ import kotlinx.serialization.json.Json
import kotlinx.serialization.json.decodeFromStream
import model.Card
import model.GameCh
import model.parseType
import org.jsoup.Jsoup
import java.io.File
@ExperimentalSerializationApi
@ -18,16 +20,61 @@ fun main(args: Array<String>) {
cardList.forEach { card ->
gameList.find { gameCh -> gameCh.name.contains(card.name) }?.let { gameCh ->
card.url = gameCh.url
}
println(gameCh.url)
val doc = Jsoup.connect(gameCh.url).get()
val elements = doc.select(".markup.mu")
val tables = elements.select(".mu__table")
tables.forEach { element ->
println(element)
println("------------")
}
val encodeJson = Json { prettyPrint = true }
val prettyJson = encodeJson.encodeToString(cardList)
// println(prettyJson)
card.characterName = elements.select(".mu__index").select("p").text().substringBefore(")").substringAfter("")
val outputFile = File("src/main/resources/card_fix.json")
outputFile.writeText(prettyJson)
tables[1].select(".mu__table--row1").apply {
card.rarity = select(".mu__table--col2").text()
card.maxLevel = select(".mu__table--col4").text()
}
tables[1].select(".mu__table--row2").apply {
select(".mu__table--col2").text().let {
card.type = parseType(it)
}
}
tables[1].select(".mu__table--row3").apply {
card.group = select(".mu__table--col2").text()
card.team = select(".mu__table--col4").text()
}
tables[1].select(".mu__table--row4").apply {
card.date = select(".mu__table--col2").text().substringBefore("")
}
tables[2].select(".mu__table--row1").apply {
card.maxHp = select(".mu__table--col2").text()
card.smile = select(".mu__table--col4").text()
}
tables[2].select(".mu__table--row2").apply {
card.pure = select(".mu__table--col2").text()
card.cool = select(".mu__table--col4").text()
}
tables[3].select(".mu__table--row1").apply {
card.centerSkillName = select(".mu__table--col1").text()
}
tables[3].select(".mu__table--row2").apply {
card.centerSkillInfo = select(".mu__table--col1").text()
}
tables[4].select(".mu__table--row1").apply {
card.specialSkillName = select(".mu__table--col1").text()
}
tables[4].select(".mu__table--row2").apply {
card.specialSkillInfo = select(".mu__table--col1").text()
}
}
println(card)
return
}
}
@OptIn(ExperimentalSerializationApi::class)
@ -36,3 +83,13 @@ inline fun <reified T> readJson(fileName: String): T {
val decodeJson = Json { ignoreUnknownKeys = true }
return decodeJson.decodeFromStream<T>(fis)
}
inline fun <reified T> prettyPrint(data: T): String {
val encodeJson = Json { prettyPrint = true }
return encodeJson.encodeToString(data)
}
fun writeFile(text: String) {
val outputFile = File("src/main/resources/card_fix.json")
outputFile.writeText(text)
}

View File

@ -2,18 +2,36 @@ package model
import kotlinx.serialization.Serializable
fun parseType(type: String): Int {
println("parseType: $type")
return when (type) {
"スマイル" -> 1
"ピュア" -> 2
"クール" -> 3
else -> 1
}
}
@Serializable
data class Card (
val id: Int, // 卡牌id
val masterCharacterId: Int, // 角色id
val name: String, // 卡牌名称
val type: Int, // 类型 1:甜美 2:清纯 3:帅气
val rarity: Int, // 稀有性 1:UR 2:SR 3:R
val hp: Int, // 血量
val smile: Int, // 甜美值
val cool: Int, // 清纯值
val pure: Int, // 帅气值
val characterId: Int, // 角色id
var characterName: String? = "", // 角色名称
var type: Int? = 1, // 类型 1:甜美 2:清纯 3:帅气
var rarity: String? = "R", // 稀有性 1:UR 2:SR 3:R
var maxLevel: String? = "", // 最大等级
var maxHp: String? = "1", // 最大血量
var smile: String? = "1", // 甜美值
var cool: String? = "1", // 清纯值
var pure: String? = "1", // 帅气值
var illustId: String, // 通常图片文件名
var evolveIllustId: String, // 觉醒图片文件名
var url: String? = null, // gamech url
var group: String? = "", // 所属团组
var team: String? = "", // 所属小组名
var date: String? = "", // 实装日期
var centerSkillName: String? = "", // 中心技能名称
var centerSkillInfo: String? = "", // 中心技能介绍
var specialSkillName: String? = "", // 中心技能名称
var specialSkillInfo: String? = "", // 中心技能介绍
)

File diff suppressed because it is too large Load Diff