Skip to content

Commit

Permalink
移除所有pinin依赖,更新安装文档
Browse files Browse the repository at this point in the history
  • Loading branch information
diyigemt committed Feb 14, 2023
1 parent 536659d commit 1af2b83
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 120 deletions.
1 change: 0 additions & 1 deletion arona-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ dependencies {
implementation("me.xdrop:fuzzywuzzy:1.4.0")
// https://mvnrepository.com/artifact/com.github.taptap/pinyin-plus
implementation("com.github.taptap:pinyin-plus:1.0")
implementation("com.github.Towdium:PinIn:1.5.1")
implementation("net.mamoe.yamlkt:yamlkt-jvm:0.10.2")
}

Expand Down
53 changes: 0 additions & 53 deletions arona-core/src/main/kotlin/net/diyigemt/arona/util/GeneralUtils.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package net.diyigemt.arona.util

import com.taptap.pinyin.PinyinPlus
import me.towdium.pinin.PinIn
import me.towdium.pinin.utils.PinyinFormat
import net.diyigemt.arona.Arona
import net.diyigemt.arona.command.CallMeCommand
import net.diyigemt.arona.command.TarotCommand
Expand All @@ -19,8 +16,6 @@ import net.diyigemt.arona.interfaces.InitializedFunction
import net.diyigemt.arona.util.NetworkUtil.BACKEND_ADDRESS
import net.diyigemt.arona.util.NetworkUtil.BACKEND_IMAGE_FOLDER
import net.diyigemt.arona.util.NetworkUtil.downloadImageFile
import net.diyigemt.arona.util.other.KWatchChannel
import net.diyigemt.arona.util.other.asWatchChannel
import net.mamoe.mirai.contact.Contact
import net.mamoe.mirai.contact.Group
import net.mamoe.mirai.contact.UserOrBot
Expand All @@ -33,7 +28,6 @@ import java.security.MessageDigest
object GeneralUtils : InitializedFunction() {

private const val BACKEND_IMAGE_RESOURCE = "${BACKEND_ADDRESS}$BACKEND_IMAGE_FOLDER"
private lateinit var PinyinObject: PinIn
private val Punctuation0: Regex = Regex("[\\u3002\\uff1f\\uff01\\uff0c\\u3001\\uff1b\\uff1a\\u201c\\u201d\\u2018\\u2019\\uff08\\uff09\\u300a\\u300b\\u3008\\u3009\\u3010\\u3011\\u300e\\u300f\\u300c\\u300d\\ufe43\\ufe44\\u3014\\u3015\\u2026\\u2014\\uff5e\\ufe4f\\uffe5]")
private val Punctuation1: Regex = Regex("[.,/#!\$%^&*;:{}=\\-_+`~()\\[\\]]")
private val Punctuation2: Regex = Regex("\\s{2,}")
Expand Down Expand Up @@ -168,56 +162,10 @@ object GeneralUtils : InitializedFunction() {
}
}

fun toPinyin(str: String): String = toPinyin1(replacePunctuation(str))

fun toPinyin0(str: String): String = str
.toCharArray()
.joinToString("") {
PinyinObject.getChar(it).pinyins().let { list ->
return@let if (list.isEmpty()) {
it.toString()
} else {
PinyinObject.format(list[0])
}
}
}

fun toPinyin1(str: String): String = PinyinPlus.to(str).replace(" ", "")

fun fuzzySearch(str: String, dict: List<String>): Int {
val pinyin = toPinyin(str)
dict.forEachIndexed { index, s ->
if (PinyinObject.contains(s, pinyin)) {
return index
}
}
return -1
}

fun fuzzySearchDouble(str: String, dict: List<String>): Int {
val pinyin = toPinyin(str)
dict.forEachIndexed { index, s ->
if (PinyinObject.contains(s, pinyin) || fuzzySearch(str, s)) {
return index
}
}
return -1
}


fun fuzzySearch(source: String, target: String): Boolean = PinyinObject.contains(source, toPinyin(target))

private fun replacePunctuation(str: String): String = str.replace(Punctuation0, "")
.replace(Punctuation1, "")
.replace(Punctuation2, "")

fun fileWatchChannel(path: String): KWatchChannel {
val file = File(path)
if (!file.exists()) {
file.writeText("")
}
return file.asWatchChannel(KWatchChannel.Mode.SingleFile)
}

fun md5(str: String): ByteArray = MessageDigest.getInstance("MD5").digest(str.toByteArray(Charsets.UTF_8))
fun ByteArray.toHex() = joinToString(separator = "") { byte -> "%02x".format(byte) }
Expand All @@ -236,6 +184,5 @@ object GeneralUtils : InitializedFunction() {
File(imageFileFolder(TrainerCommand.OtherFolder)).also { it.mkdirs() }
File(imageFileFolder(TarotCommand.TarotImageFolder)).also { it.mkdirs() }
File(Arona.dataFolderPath(ConfigFolder)).also { it.mkdirs() }
PinyinObject = PinIn().config().format(PinyinFormat.RAW).fSh2S(true).commit()
}
}
35 changes: 0 additions & 35 deletions arona-core/src/test/kotlin/TestSimple.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@ package org.example.mirai.plugin
import com.taptap.pinyin.PinyinPlus
import io.kotest.common.runBlocking
import kotlinx.coroutines.channels.consumeEach
import me.towdium.pinin.PinIn
import me.towdium.pinin.utils.PinyinFormat
import me.xdrop.fuzzywuzzy.FuzzySearch
import net.diyigemt.arona.advance.AronaUpdateChecker
import net.diyigemt.arona.command.TrainerCommand
import net.diyigemt.arona.entity.Activity
import net.diyigemt.arona.entity.ActivityType
import net.diyigemt.arona.entity.TrainerOverride
import net.diyigemt.arona.util.ActivityUtil
import net.diyigemt.arona.util.GeneralUtils
import net.diyigemt.arona.util.NetworkUtil
Expand Down Expand Up @@ -171,38 +168,6 @@ class TestSimple {
println(PinyinPlus.to("鼠鼠"))
}

@Test
fun testFuzzySearch2() {
val p = PinIn().config().format(PinyinFormat.RAW).fSh2S(true).commit()
val dict = listOf(
"宝洁",
"报界"
)
println(PinyinPlus.to("侧式"))
println(getPinyin("保洁"))
println(p.format(p.getChar('').pinyins()[0]))
println(p.contains("宝洁", PinyinPlus.to("保洁")))
println(p.contains("测试1", GeneralUtils.toPinyin("侧式")))
val b = p.getPinyin("侧式")
val a = "侧式".toCharArray()
.joinToString("") {
p.getChar(it).pinyins().let { list ->
println("a")
return@let if (list.isEmpty()) {
it.toString()
} else {
p.format(list[0])
}
}
}
println(a)
}

private fun getPinyin(str: String): String {
val p = PinIn().config().format(PinyinFormat.RAW).fSh2S(true).commit()
return str.toCharArray().joinToString("") { p.format(p.getChar(it).pinyins()[0]) }
}

@Test
fun testFileWatcher() {
val dir = File("D:\\123.txt")
Expand Down
45 changes: 14 additions & 31 deletions doc/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,43 +21,26 @@ Arona是依赖于Mirai-Console的一个插件,并不能独立工作,要使

3.[releases](https://github.com/diyigemt/arona/releases)下载最新版本的jar包并放入mirai-console的`plugins`目录下;<a id="step1"> </a>

5.[releases](https://github.com/diyigemt/arona/releases)下载`PinIn.zip`文件并解压到`mirai-console`安装目录下的`plugin-libraries`文件夹中,此时目录结构应该为<a id="install-4"> </a>

```bash
plugin-libraries
└───com
└───github
└───Towdium
└───PinIn
└───1.5.1
PinIn-1.5.1-sources.jar
PinIn-1.5.1.jar
PinIn-1.5.1.module
PinIn-1.5.1.pom
```

​ 该文件为`/攻略`指令提供模糊搜索功能,原仓库地址为[Towdium/PinIn](https://github.com/Towdium/PinIn),如果你知道这个文件夹以及这步操作 是在干什么,你也可以去源仓库下载安装。

5. 启动mirai-console,等到显示如下字样后退出:
4. 启动mirai-console,等到显示如下字样后退出:

```bash
yyyy-MM-dd HH:mm:ss I/arona: arona loaded
yyyy-MM-dd HH:mm:ss I/arona: arona gacha module init success.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: 别名配置更新成功
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: 中文字体初始化成功
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: STUDENT from GitHub already up to date.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: LOCALIZATION from GitHub already up to date.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: RAID from GitHub already up to date.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: COMMON from GitHub already up to date.
```
```bash
yyyy-MM-dd HH:mm:ss I/arona: arona loaded
yyyy-MM-dd HH:mm:ss I/arona: arona gacha module init success.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: 别名配置更新成功
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: 中文字体初始化成功
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: STUDENT from GitHub already up to date.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: LOCALIZATION from GitHub already up to date.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: RAID from GitHub already up to date.
yyyy-MM-dd HH:mm:ss I/ba-activity-pusher: Source: COMMON from GitHub already up to date.
```

​ 当然由于网络原因可能并没有最后这四项,不过并不影响使用。

6.[releases](https://github.com/diyigemt/arona/releases)下载最新版本的arona.db的SQLite文件并替换掉`./data/net.diyigemt.arona/arona.db`文件;
5.[releases](https://github.com/diyigemt/arona/releases)下载最新版本的arona.db的SQLite文件并替换掉`./data/net.diyigemt.arona/arona.db`文件;

7.`./config/net.diyigemt.arona/`文件夹下根据自己的喜好编辑arona的配置文件,具体内容将会在下一节解释;
6.`./config/net.diyigemt.arona/`文件夹下根据自己的喜好编辑arona的配置文件,具体内容将会在下一节解释;

8. 再次运行mirai-console即可享受arona的服务。
7. 再次运行mirai-console即可享受arona的服务。

**注意**,arona的运行依赖`chat-command`插件,该插件的安装方法与[步骤3](#step1)一致,你可以在[这里](https://github.com/project-mirai/chat-command)找到它的下载链接

Expand Down

0 comments on commit 1af2b83

Please sign in to comment.