From 956b29d0761ffb33f7fdaf111059333d202e5a9a Mon Sep 17 00:00:00 2001 From: RTAkland Date: Sun, 6 Oct 2024 18:20:53 +0800 Subject: [PATCH] chore: use local json file instead of api --- src/main/kotlin/cn/rtast/fancybot/Const.kt | 1 + src/main/kotlin/cn/rtast/fancybot/FancyBot.kt | 2 ++ .../fancybot/entity/setu/{SetuV2.kt => SetuV3.kt} | 13 ++++--------- .../kotlin/cn/rtast/fancybot/items/TenSetuItem.kt | 14 ++++++++------ src/main/kotlin/cn/rtast/fancybot/util/Misc.kt | 10 ++++++++++ 5 files changed, 25 insertions(+), 15 deletions(-) rename src/main/kotlin/cn/rtast/fancybot/entity/setu/{SetuV2.kt => SetuV3.kt} (58%) diff --git a/src/main/kotlin/cn/rtast/fancybot/Const.kt b/src/main/kotlin/cn/rtast/fancybot/Const.kt index fc83f6f..7b5b964 100644 --- a/src/main/kotlin/cn/rtast/fancybot/Const.kt +++ b/src/main/kotlin/cn/rtast/fancybot/Const.kt @@ -39,6 +39,7 @@ val gson: Gson = GsonBuilder() .create() const val ROOT_PATH = "./data" +const val ASSETS_BASE_URL = "https://static.rtast.cn" val DEFAULT_CONFIG = Config( ncmAPI = "https://ncm.rtast.cn", diff --git a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt index e089aaa..ceb9ea8 100644 --- a/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt +++ b/src/main/kotlin/cn/rtast/fancybot/FancyBot.kt @@ -12,6 +12,7 @@ import cn.rtast.fancybot.enums.WSType import cn.rtast.fancybot.util.initCommandAndItem import cn.rtast.fancybot.util.initDatabase import cn.rtast.fancybot.util.initFilesDir +import cn.rtast.fancybot.util.initSetuIndex import cn.rtast.rob.ROneBotFactory import cn.rtast.rob.entity.* import cn.rtast.rob.entity.lagrange.FileEvent @@ -159,4 +160,5 @@ suspend fun main() { initDatabase() initFilesDir() initCommandAndItem(rob) + initSetuIndex() } \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/setu/SetuV2.kt b/src/main/kotlin/cn/rtast/fancybot/entity/setu/SetuV3.kt similarity index 58% rename from src/main/kotlin/cn/rtast/fancybot/entity/setu/SetuV2.kt rename to src/main/kotlin/cn/rtast/fancybot/entity/setu/SetuV3.kt index c6d9f43..2e71e2d 100644 --- a/src/main/kotlin/cn/rtast/fancybot/entity/setu/SetuV2.kt +++ b/src/main/kotlin/cn/rtast/fancybot/entity/setu/SetuV3.kt @@ -1,22 +1,17 @@ /* * Copyright © 2024 RTAkland * Author: RTAkland - * Date: 2024/9/29 + * Date: 2024/10/6 */ package cn.rtast.fancybot.entity.setu -data class SetuV2( +data class SetuV3( val pid: Long, val uid: Long, val title: String, val author: String, - val urls: URLS, + val url: String, val r18: Boolean, - val tags: List -) { - data class URLS( - val regular: String, - ) -} \ No newline at end of file +) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/items/TenSetuItem.kt b/src/main/kotlin/cn/rtast/fancybot/items/TenSetuItem.kt index 6e3b137..595c7a3 100644 --- a/src/main/kotlin/cn/rtast/fancybot/items/TenSetuItem.kt +++ b/src/main/kotlin/cn/rtast/fancybot/items/TenSetuItem.kt @@ -7,9 +7,10 @@ package cn.rtast.fancybot.items +import cn.rtast.fancybot.ROOT_PATH import cn.rtast.fancybot.configManager 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.item.Item 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.OneBotListener import cn.rtast.rob.util.ob.asNode +import java.io.File import java.net.URI +private val setuV3Index = File("$ROOT_PATH/caches/pixiv_index_v3.json") + .readText(Charsets.UTF_8) + .fromArrayJson>() private fun getImages(r18: Boolean): NodeMessageChain { val msg = mutableListOf() if (r18) { - val response = Http.get("https://api.rtast.cn/api/setu/v2?size=10") - .fromArrayJson>() + val response = setuV3Index.shuffled().take(10) msg.add(MessageChain.Builder().addText("因为是R18所以你需要自行访问链接来查看图片~").build()) response.forEach { try { val tempMsg = MessageChain.Builder() - .addText(it.urls.regular) + .addText(it.url) .addNewLine() .addText("标题: ${it.title}") .addNewLine() .addText("作品ID: ${it.pid}") .addNewLine() .addText("作者: ${it.author}(${it.uid})") - .addNewLine() - .addText("标签: ${it.tags.joinToString(" | ")}") .build() msg.add(tempMsg) } catch (_: Exception) { diff --git a/src/main/kotlin/cn/rtast/fancybot/util/Misc.kt b/src/main/kotlin/cn/rtast/fancybot/util/Misc.kt index f983bff..bf27ac9 100644 --- a/src/main/kotlin/cn/rtast/fancybot/util/Misc.kt +++ b/src/main/kotlin/cn/rtast/fancybot/util/Misc.kt @@ -11,6 +11,7 @@ import cn.rtast.fancybot.* import cn.rtast.rob.ROneBotFactory import cn.rtast.rob.util.ob.OneBotListener import java.io.File +import java.net.URI import kotlin.random.Random fun randomBooleanWithProbability(probability: Double): Boolean { @@ -32,4 +33,13 @@ fun initCommandAndItem(rob: ROneBotFactory) { fun initFilesDir() { 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) + } } \ No newline at end of file