添加常规信息解析
This commit is contained in:
parent
ef92c3fb7f
commit
33e34c680e
@ -13,6 +13,7 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
testImplementation 'org.jetbrains.kotlin:kotlin-test'
|
testImplementation 'org.jetbrains.kotlin:kotlin-test'
|
||||||
implementation('org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1')
|
implementation('org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1')
|
||||||
|
implementation 'org.jsoup:jsoup:1.18.3'
|
||||||
}
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
|
@ -4,6 +4,8 @@ import kotlinx.serialization.json.Json
|
|||||||
import kotlinx.serialization.json.decodeFromStream
|
import kotlinx.serialization.json.decodeFromStream
|
||||||
import model.Card
|
import model.Card
|
||||||
import model.GameCh
|
import model.GameCh
|
||||||
|
import model.parseType
|
||||||
|
import org.jsoup.Jsoup
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@ExperimentalSerializationApi
|
@ExperimentalSerializationApi
|
||||||
@ -18,16 +20,61 @@ fun main(args: Array<String>) {
|
|||||||
|
|
||||||
cardList.forEach { card ->
|
cardList.forEach { card ->
|
||||||
gameList.find { gameCh -> gameCh.name.contains(card.name) }?.let { gameCh ->
|
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("------------")
|
||||||
|
}
|
||||||
|
|
||||||
|
card.characterName = elements.select(".mu__index").select("p").text().substringBefore(")").substringAfter("]")
|
||||||
|
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
val encodeJson = Json { prettyPrint = true }
|
|
||||||
val prettyJson = encodeJson.encodeToString(cardList)
|
|
||||||
// println(prettyJson)
|
|
||||||
|
|
||||||
val outputFile = File("src/main/resources/card_fix.json")
|
|
||||||
outputFile.writeText(prettyJson)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class)
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
@ -35,4 +82,14 @@ inline fun <reified T> readJson(fileName: String): T {
|
|||||||
val fis = object {}.javaClass.getResourceAsStream(fileName)!!
|
val fis = object {}.javaClass.getResourceAsStream(fileName)!!
|
||||||
val decodeJson = Json { ignoreUnknownKeys = true }
|
val decodeJson = Json { ignoreUnknownKeys = true }
|
||||||
return decodeJson.decodeFromStream<T>(fis)
|
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)
|
||||||
}
|
}
|
@ -2,18 +2,36 @@ package model
|
|||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
fun parseType(type: String): Int {
|
||||||
|
println("parseType: $type")
|
||||||
|
return when (type) {
|
||||||
|
"スマイル" -> 1
|
||||||
|
"ピュア" -> 2
|
||||||
|
"クール" -> 3
|
||||||
|
else -> 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Card (
|
data class Card (
|
||||||
val id: Int, // 卡牌id
|
val id: Int, // 卡牌id
|
||||||
val masterCharacterId: Int, // 角色id
|
|
||||||
val name: String, // 卡牌名称
|
val name: String, // 卡牌名称
|
||||||
val type: Int, // 类型 1:甜美 2:清纯 3:帅气
|
val characterId: Int, // 角色id
|
||||||
val rarity: Int, // 稀有性 1:UR 2:SR 3:R
|
var characterName: String? = "", // 角色名称
|
||||||
val hp: Int, // 血量
|
var type: Int? = 1, // 类型 1:甜美 2:清纯 3:帅气
|
||||||
val smile: Int, // 甜美值
|
var rarity: String? = "R", // 稀有性 1:UR 2:SR 3:R
|
||||||
val cool: Int, // 清纯值
|
var maxLevel: String? = "", // 最大等级
|
||||||
val pure: Int, // 帅气值
|
var maxHp: String? = "1", // 最大血量
|
||||||
|
var smile: String? = "1", // 甜美值
|
||||||
|
var cool: String? = "1", // 清纯值
|
||||||
|
var pure: String? = "1", // 帅气值
|
||||||
var illustId: String, // 通常图片文件名
|
var illustId: String, // 通常图片文件名
|
||||||
var evolveIllustId: 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
Loading…
x
Reference in New Issue
Block a user