Compare commits

..

No commits in common. "master" and "v0.1.0" have entirely different histories.

2 changed files with 18 additions and 33 deletions

View File

@ -7,7 +7,7 @@ plugins {
} }
group = "top.jie65535" group = "top.jie65535"
version = "0.1.1" version = "0.1.0"
repositories { repositories {
mavenLocal() mavenLocal()

View File

@ -5,10 +5,8 @@ import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
import net.mamoe.mirai.event.events.MessageEvent import net.mamoe.mirai.event.events.MessageEvent
import net.mamoe.mirai.event.globalEventChannel import net.mamoe.mirai.event.globalEventChannel
import net.mamoe.mirai.message.data.ForwardMessage
import net.mamoe.mirai.message.data.Image import net.mamoe.mirai.message.data.Image
import net.mamoe.mirai.message.data.Image.Key.queryUrl import net.mamoe.mirai.message.data.Image.Key.queryUrl
import net.mamoe.mirai.message.data.MessageChain
import net.mamoe.mirai.utils.info import net.mamoe.mirai.utils.info
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
@ -20,7 +18,7 @@ object JPictureArchiving : KotlinPlugin(
JvmPluginDescription( JvmPluginDescription(
id = "top.jie65535.mirai-console-jpa-plugin", id = "top.jie65535.mirai-console-jpa-plugin",
name = "J Picture Archiving", name = "J Picture Archiving",
version = "0.1.1" version = "0.1.0"
) { ) {
author("jie65535") author("jie65535")
info("这个插件只做一件事,将机器人收到的所有图片存档") info("这个插件只做一件事,将机器人收到的所有图片存档")
@ -37,36 +35,23 @@ object JPictureArchiving : KotlinPlugin(
JPACommand.register() JPACommand.register()
globalEventChannel().subscribeAlways<MessageEvent> { globalEventChannel().subscribeAlways<MessageEvent> {
saveImages(this.subject.id.toString(), message) message.filterIsInstance<Image>().forEach {
} val url = it.queryUrl()
} val filePath = "${this.subject.id}/${it.imageId}"
val file = if (JPAPluginConfig.archiveDirectory.isBlank()) {
private suspend fun saveImages(from: String, message: MessageChain) { resolveDataFile(filePath)
val fm = message[ForwardMessage] } else {
if (fm != null) { File(JPAPluginConfig.archiveDirectory, filePath)
fm.nodeList.forEach { saveImages(from, it.messageChain) } }
} else { if (!file.exists()) {
message.filterIsInstance<Image>().forEach { img -> val request = Request.Builder().url(url).build()
saveImage(from, img) val imageByte = okHttpClient.newCall(request).execute().body!!.bytes()
val fileParent = file.parentFile
if (!fileParent.exists()) fileParent.mkdirs()
file.writeBytes(imageByte)
logger.info("Saved ${file.path}.")
}
} }
} }
} }
private suspend fun saveImage(from: String, image: Image) {
val url = image.queryUrl()
val filePath = "${from}/${image.imageId}"
val file = if (JPAPluginConfig.archiveDirectory.isBlank()) {
resolveDataFile(filePath)
} else {
File(JPAPluginConfig.archiveDirectory, filePath)
}
if (!file.exists()) {
val request = Request.Builder().url(url).build()
val imageByte = okHttpClient.newCall(request).execute().body!!.bytes()
val fileParent = file.parentFile
if (!fileParent.exists()) fileParent.mkdirs()
file.writeBytes(imageByte)
logger.info("Saved ${file.path}.")
}
}
} }