生成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.coroutines.delay
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
@ -10,10 +11,44 @@ import model.parseType
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.ktorm.database.Database import org.ktorm.database.Database
import org.ktorm.dsl.* import org.ktorm.dsl.*
import org.ktorm.entity.map
import org.ktorm.entity.sortedBy
import java.io.File import java.io.File
@ExperimentalSerializationApi @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") val cardList = readJson<List<Card>>(fileName = "card.json")
cardList.forEach { card -> cardList.forEach { card ->
card.illustId = "c_${card.illustId}.png" card.illustId = "c_${card.illustId}.png"
@ -32,12 +67,12 @@ suspend fun main(args: Array<String>) {
cardList.forEach { card -> cardList.forEach { card ->
database.useTransaction { database.useTransaction {
var id = -1 var id = -1
for (row in database.from(TCard).select().where { TCard.name eq card.name }) { for (row in database.from(TCards).select().where { TCards.name eq card.name }) {
row[TCard.characterName]?.let { characterName -> row[TCards.characterName]?.let { characterName ->
if (characterName.isNotEmpty()) { if (characterName.isNotEmpty()) {
return@forEach return@forEach
} }
id = row[TCard.id]!! id = row[TCards.id]!!
} }
} }
@ -95,7 +130,7 @@ suspend fun main(args: Array<String>) {
println(card) println(card)
if (id == -1) { if (id == -1) {
database.insert(TCard) { database.insert(TCards) {
set(it.name, card.name) set(it.name, card.name)
set(it.characterId, card.characterId) set(it.characterId, card.characterId)
set(it.characterName, card.characterName) set(it.characterName, card.characterName)
@ -117,7 +152,7 @@ suspend fun main(args: Array<String>) {
set(it.specialSkillInfo, card.specialSkillInfo) set(it.specialSkillInfo, card.specialSkillInfo)
} }
} else { } else {
database.update(TCard) { database.update(TCards) {
set(it.characterName, card.characterName) set(it.characterName, card.characterName)
set(it.type, card.type) set(it.type, card.type)
set(it.rarity, card.rarity) set(it.rarity, card.rarity)
@ -135,7 +170,7 @@ suspend fun main(args: Array<String>) {
set(it.centerSkillInfo, card.centerSkillInfo) set(it.centerSkillInfo, card.centerSkillInfo)
set(it.specialSkillName, card.specialSkillName) set(it.specialSkillName, card.specialSkillName)
set(it.specialSkillInfo, card.specialSkillInfo) set(it.specialSkillInfo, card.specialSkillInfo)
where { TCard.id eq id } where { TCards.id eq id }
} }
} }
} }

View File

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