chore: use local json file instead of api

This commit is contained in:
2024-10-06 18:20:53 +08:00
parent 8f7a5e5f0e
commit 956b29d076
5 files changed
+25 -15

No files matched your search

@@ -39,6 +39,7 @@ val gson: Gson = GsonBuilder()
.create() .create()
const val ROOT_PATH = "./data" const val ROOT_PATH = "./data"
const val ASSETS_BASE_URL = "https://static.rtast.cn"
val DEFAULT_CONFIG = Config( val DEFAULT_CONFIG = Config(
ncmAPI = "https://ncm.rtast.cn", ncmAPI = "https://ncm.rtast.cn",
@@ -12,6 +12,7 @@ import cn.rtast.fancybot.enums.WSType
import cn.rtast.fancybot.util.initCommandAndItem import cn.rtast.fancybot.util.initCommandAndItem
import cn.rtast.fancybot.util.initDatabase import cn.rtast.fancybot.util.initDatabase
import cn.rtast.fancybot.util.initFilesDir import cn.rtast.fancybot.util.initFilesDir
import cn.rtast.fancybot.util.initSetuIndex
import cn.rtast.rob.ROneBotFactory import cn.rtast.rob.ROneBotFactory
import cn.rtast.rob.entity.* import cn.rtast.rob.entity.*
import cn.rtast.rob.entity.lagrange.FileEvent import cn.rtast.rob.entity.lagrange.FileEvent
@@ -159,4 +160,5 @@ suspend fun main() {
initDatabase() initDatabase()
initFilesDir() initFilesDir()
initCommandAndItem(rob) initCommandAndItem(rob)
initSetuIndex()
} }
@@ -1,22 +1,17 @@
/* /*
* Copyright © 2024 RTAkland * Copyright © 2024 RTAkland
* Author: RTAkland * Author: RTAkland
* Date: 2024/9/29 * Date: 2024/10/6
*/ */
package cn.rtast.fancybot.entity.setu package cn.rtast.fancybot.entity.setu
data class SetuV2( data class SetuV3(
val pid: Long, val pid: Long,
val uid: Long, val uid: Long,
val title: String, val title: String,
val author: String, val author: String,
val urls: URLS, val url: String,
val r18: Boolean, val r18: Boolean,
val tags: List<String> )
) {
data class URLS(
val regular: String,
)
}
@@ -7,9 +7,10 @@
package cn.rtast.fancybot.items package cn.rtast.fancybot.items
import cn.rtast.fancybot.ROOT_PATH
import cn.rtast.fancybot.configManager import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.entity.setu.Setu import cn.rtast.fancybot.entity.setu.Setu
import cn.rtast.fancybot.entity.setu.SetuV2 import cn.rtast.fancybot.entity.setu.SetuV3
import cn.rtast.fancybot.util.Http import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.item.Item import cn.rtast.fancybot.util.item.Item
import cn.rtast.fancybot.util.str.encodeToBase64 import cn.rtast.fancybot.util.str.encodeToBase64
@@ -19,27 +20,28 @@ import cn.rtast.rob.util.ob.MessageChain
import cn.rtast.rob.util.ob.NodeMessageChain import cn.rtast.rob.util.ob.NodeMessageChain
import cn.rtast.rob.util.ob.OneBotListener import cn.rtast.rob.util.ob.OneBotListener
import cn.rtast.rob.util.ob.asNode import cn.rtast.rob.util.ob.asNode
import java.io.File
import java.net.URI import java.net.URI
private val setuV3Index = File("$ROOT_PATH/caches/pixiv_index_v3.json")
.readText(Charsets.UTF_8)
.fromArrayJson<List<SetuV3>>()
private fun getImages(r18: Boolean): NodeMessageChain { private fun getImages(r18: Boolean): NodeMessageChain {
val msg = mutableListOf<MessageChain>() val msg = mutableListOf<MessageChain>()
if (r18) { if (r18) {
val response = Http.get("https://api.rtast.cn/api/setu/v2?size=10") val response = setuV3Index.shuffled().take(10)
.fromArrayJson<List<SetuV2>>()
msg.add(MessageChain.Builder().addText("因为是R18所以你需要自行访问链接来查看图片~").build()) msg.add(MessageChain.Builder().addText("因为是R18所以你需要自行访问链接来查看图片~").build())
response.forEach { response.forEach {
try { try {
val tempMsg = MessageChain.Builder() val tempMsg = MessageChain.Builder()
.addText(it.urls.regular) .addText(it.url)
.addNewLine() .addNewLine()
.addText("标题: ${it.title}") .addText("标题: ${it.title}")
.addNewLine() .addNewLine()
.addText("作品ID: ${it.pid}") .addText("作品ID: ${it.pid}")
.addNewLine() .addNewLine()
.addText("作者: ${it.author}(${it.uid})") .addText("作者: ${it.author}(${it.uid})")
.addNewLine()
.addText("标签: ${it.tags.joinToString(" | ")}")
.build() .build()
msg.add(tempMsg) msg.add(tempMsg)
} catch (_: Exception) { } catch (_: Exception) {
@@ -11,6 +11,7 @@ import cn.rtast.fancybot.*
import cn.rtast.rob.ROneBotFactory import cn.rtast.rob.ROneBotFactory
import cn.rtast.rob.util.ob.OneBotListener import cn.rtast.rob.util.ob.OneBotListener
import java.io.File import java.io.File
import java.net.URI
import kotlin.random.Random import kotlin.random.Random
fun randomBooleanWithProbability(probability: Double): Boolean { fun randomBooleanWithProbability(probability: Double): Boolean {
@@ -32,4 +33,13 @@ fun initCommandAndItem(rob: ROneBotFactory) {
fun initFilesDir() { fun initFilesDir() {
File("./$ROOT_PATH/caches/images").also { it.mkdirs() } File("./$ROOT_PATH/caches/images").also { it.mkdirs() }
}
fun initSetuIndex() {
val file = File("$ROOT_PATH/caches/pixiv_index_v3.json")
if (!file.exists()) {
file.createNewFile()
val fileContent = Http.get("$ASSETS_BASE_URL/files/pixiv_index_v3.json")
file.writeText(fileContent)
}
} }