生成wiki格式

This commit is contained in:
zhushenwudi 2025-01-17 23:31:16 +08:00
parent 6d6da49d50
commit d6cde0c745
3 changed files with 724 additions and 661 deletions

View File

@ -1,4 +1,5 @@
import database.TCard
import database.TCards
import database.card
import kotlinx.coroutines.delay
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.encodeToString
@ -10,10 +11,44 @@ import model.parseType
import org.jsoup.Jsoup
import org.ktorm.database.Database
import org.ktorm.dsl.*
import org.ktorm.entity.map
import org.ktorm.entity.sortedBy
import java.io.File
@ExperimentalSerializationApi
suspend fun main(args: Array<String>) {
fun main(args: Array<String>) {
val database = Database.connect(
url = "jdbc:mysql://localhost:3306/sif_card",
driver = "com.mysql.cj.jdbc.Driver",
user = "root",
password = ""
)
database.useTransaction {
var latestGroup = ""
var index = -1
database.card.sortedBy({it.characterId.asc()}, {it.rarity.desc()}, {it.id.asc()}).map { card ->
if (latestGroup != card.group) {
latestGroup = card.group
if (index != -1) {
println("|}")
}
index = 0
println("== [[${card.group}]] ==")
println("{| class=\"wikitable sortable event-list mw-collapsible mw-collapsed\" width=\"100%\"\n" +
"! 序号 !! 角色 !! 卡牌名称 !! 通常图片 !! 觉醒图片 !! 稀有性 !! 所属小组 !! 实装日期 !! 属性 !! 最大等级 !! HP !! 微笑值 !! 清纯值 !! 帅气值 !! 核心技能名称 !! 核心技能详情 !! 特殊技能名称 !! 特殊技能详情")
}
println("|-")
println("| ${++index} || ${card.name} || ${card.characterName} || ${card.illustId} || ${card.evolveIllustId}" +
" || ${card.rarity} || ${card.team} || ${card.date} || ${card.type} || ${card.maxLevel} || ${card.maxHp}" +
" || ${card.smile} || ${card.pure} || ${card.cool} || ${card.centerSkillName}" +
" || ${card.centerSkillInfo} || ${card.specialSkillName} || ${card.specialSkillInfo}")
}
println("|}")
}
}
suspend fun importData() {
val cardList = readJson<List<Card>>(fileName = "card.json")
cardList.forEach { card ->
card.illustId = "c_${card.illustId}.png"
@ -32,12 +67,12 @@ suspend fun main(args: Array<String>) {
cardList.forEach { card ->
database.useTransaction {
var id = -1
for (row in database.from(TCard).select().where { TCard.name eq card.name }) {
row[TCard.characterName]?.let { characterName ->
for (row in database.from(TCards).select().where { TCards.name eq card.name }) {
row[TCards.characterName]?.let { characterName ->
if (characterName.isNotEmpty()) {
return@forEach
}
id = row[TCard.id]!!
id = row[TCards.id]!!
}
}
@ -95,7 +130,7 @@ suspend fun main(args: Array<String>) {
println(card)
if (id == -1) {
database.insert(TCard) {
database.insert(TCards) {
set(it.name, card.name)
set(it.characterId, card.characterId)
set(it.characterName, card.characterName)
@ -117,7 +152,7 @@ suspend fun main(args: Array<String>) {
set(it.specialSkillInfo, card.specialSkillInfo)
}
} else {
database.update(TCard) {
database.update(TCards) {
set(it.characterName, card.characterName)
set(it.type, card.type)
set(it.rarity, card.rarity)
@ -135,7 +170,7 @@ suspend fun main(args: Array<String>) {
set(it.centerSkillInfo, card.centerSkillInfo)
set(it.specialSkillName, card.specialSkillName)
set(it.specialSkillInfo, card.specialSkillInfo)
where { TCard.id eq id }
where { TCards.id eq id }
}
}
}

View File

@ -1,28 +1,58 @@
package database
import org.ktorm.database.Database
import org.ktorm.entity.Entity
import org.ktorm.entity.sequenceOf
import org.ktorm.schema.Table
import org.ktorm.schema.int
import org.ktorm.schema.varchar
object TCard : Table<Nothing>("t_card") {
val id = int("id").primaryKey()
val name = varchar("name")
val characterId = int("character_id")
val characterName = varchar("character_name")
val type = varchar("type")
val rarity = varchar("rarity")
val maxLevel = varchar("max_level")
val maxHp = varchar("max_hp")
val smile = varchar("smile")
val pure = varchar("pure")
val cool = varchar("cool")
val illustId = varchar("illust_id")
val evolveIllustId = varchar("evolve_illust_id")
val group = varchar("group")
val team = varchar("team")
val date = varchar("date")
val centerSkillName = varchar("center_skill_name")
val centerSkillInfo = varchar("center_skill_info")
val specialSkillName = varchar("special_skill_name")
val specialSkillInfo = varchar("special_skill_info")
val Database.card get() = this.sequenceOf(TCards)
interface TCard : Entity<TCard> {
companion object : Entity.Factory<TCard>()
val id: Int
val name: String
val characterId: Int
val characterName: String
val type: String
val rarity: String
val maxLevel: String
val maxHp: String
val smile: String
val pure: String
val cool: String
val illustId: String
val evolveIllustId: String
val group: String
val team: String
val date: String
val centerSkillName: String
val centerSkillInfo: String
val specialSkillName: String
val specialSkillInfo: String
}
object TCards : Table<TCard>("t_card") {
val id = int("id").primaryKey().bindTo { it.id }
val name = varchar("name").bindTo { it.name }
val characterId = int("character_id").bindTo { it.characterId }
val characterName = varchar("character_name").bindTo { it.characterName }
val type = varchar("type").bindTo { it.type }
val rarity = varchar("rarity").bindTo { it.rarity }
val maxLevel = varchar("max_level").bindTo { it.maxLevel }
val maxHp = varchar("max_hp").bindTo { it.maxHp }
val smile = varchar("smile").bindTo { it.smile }
val pure = varchar("pure").bindTo { it.pure }
val cool = varchar("cool").bindTo { it.cool }
val illustId = varchar("illust_id").bindTo { it.illustId }
val evolveIllustId = varchar("evolve_illust_id").bindTo { it.evolveIllustId }
val group = varchar("group").bindTo { it.group }
val team = varchar("team").bindTo { it.team }
val date = varchar("date").bindTo { it.date }
val centerSkillName = varchar("center_skill_name").bindTo { it.centerSkillName }
val centerSkillInfo = varchar("center_skill_info").bindTo { it.centerSkillInfo }
val specialSkillName = varchar("special_skill_name").bindTo { it.specialSkillName }
val specialSkillInfo = varchar("special_skill_info").bindTo { it.specialSkillInfo }
}

File diff suppressed because it is too large Load Diff