From a691d0e80057a1befbef853fd3a58238e3513751 Mon Sep 17 00:00:00 2001 From: kosugikun <> Date: Wed, 29 Mar 2023 14:32:10 +0900 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=83=A8=E3=81=AE=E8=8B=B1=E8=AA=9E?= =?UTF-8?q?=E3=82=92=E3=82=AB=E3=82=BF=E3=82=AB=E3=83=8A=E3=81=AB=E8=87=AA?= =?UTF-8?q?=E5=8B=95=E3=81=A7=E5=A4=89=E6=8F=9B=E3=81=97=E3=81=A6=E8=AA=AD?= =?UTF-8?q?=E3=81=BF=E4=B8=8A=E3=81=92=E3=82=8B=E6=A9=9F=E8=83=BD=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/Project.xml | 7 ------ .idea/codeStyles/codeStyleConfig.xml | 1 + .../bcae6d7f-dd17-487e-ab3f-743f9b393d89.xml | 6 ++--- pom.xml | 7 +++++- src/main/java/dev/cosgy/textToSpeak/Bot.kt | 11 ++++----- .../cosgy/textToSpeak/audio/AudioHandler.kt | 6 +++++ .../cosgy/textToSpeak/audio/VoiceCreation.kt | 23 ++++++++++++++++++- 7 files changed, 41 insertions(+), 20 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index ccec7b6..1bec35e 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -3,13 +3,6 @@ - - - - diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml index a55e7a1..6e6eec1 100644 --- a/.idea/codeStyles/codeStyleConfig.xml +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -1,5 +1,6 @@ + \ No newline at end of file diff --git a/.idea/dataSources/bcae6d7f-dd17-487e-ab3f-743f9b393d89.xml b/.idea/dataSources/bcae6d7f-dd17-487e-ab3f-743f9b393d89.xml index dafa3ce..acb4919 100644 --- a/.idea/dataSources/bcae6d7f-dd17-487e-ab3f-743f9b393d89.xml +++ b/.idea/dataSources/bcae6d7f-dd17-487e-ab3f-743f9b393d89.xml @@ -1,9 +1,7 @@ - - - 3.40.1 - + + diff --git a/pom.xml b/pom.xml index 97fb5cf..b446fd8 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ dev.cosgy TextToSpeak - 0.4.0 + 0.4.0-beta.1 jar @@ -143,6 +143,11 @@ 1.8.20-RC2 compile + + com.ibm.icu + icu4j + 69.1 + diff --git a/src/main/java/dev/cosgy/textToSpeak/Bot.kt b/src/main/java/dev/cosgy/textToSpeak/Bot.kt index 3b71538..6eb02f6 100644 --- a/src/main/java/dev/cosgy/textToSpeak/Bot.kt +++ b/src/main/java/dev/cosgy/textToSpeak/Bot.kt @@ -36,12 +36,12 @@ import java.util.function.Consumer import kotlin.system.exitProcess class Bot(val waiter: EventWaiter, val config: BotConfig, val settingsManager: SettingsManager) { - val threadpool: ScheduledExecutorService - private val lang: ResourceBundle - val playerManager: PlayerManager + val threadpool: ScheduledExecutorService = Executors.newSingleThreadScheduledExecutor() + private val lang: ResourceBundle = ResourceBundle.getBundle("lang.yomiage", Locale.JAPAN) + val playerManager: PlayerManager = PlayerManager(this) val voiceCreation: VoiceCreation val userSettingsManager: UserSettingsManager - val aloneInVoiceHandler: AloneInVoiceHandler + private val aloneInVoiceHandler: AloneInVoiceHandler var log: Logger = LoggerFactory.getLogger(this.javaClass) var dictionary: Dictionary? = null private set @@ -50,9 +50,6 @@ class Bot(val waiter: EventWaiter, val config: BotConfig, val settingsManager: S private var gui: GUI? = null init { - lang = ResourceBundle.getBundle("lang.yomiage", Locale.JAPAN) - threadpool = Executors.newSingleThreadScheduledExecutor() - playerManager = PlayerManager(this) playerManager.init() voiceCreation = VoiceCreation(this) userSettingsManager = UserSettingsManager() diff --git a/src/main/java/dev/cosgy/textToSpeak/audio/AudioHandler.kt b/src/main/java/dev/cosgy/textToSpeak/audio/AudioHandler.kt index 13dd1ca..1a77118 100644 --- a/src/main/java/dev/cosgy/textToSpeak/audio/AudioHandler.kt +++ b/src/main/java/dev/cosgy/textToSpeak/audio/AudioHandler.kt @@ -38,6 +38,9 @@ class AudioHandler(private val manager: PlayerManager, guild: Guild, val player: stringGuildId = guild.id } + /** + * 再生キューのトップに追加 + */ fun addTrackToFront(qtrack: QueuedTrack): Int { return if (player.playingTrack == null) { player.playTrack(qtrack.track) @@ -48,6 +51,9 @@ class AudioHandler(private val manager: PlayerManager, guild: Guild, val player: } } + /** + * 再生キューに追加 + */ fun addTrack(qtrack: QueuedTrack): Int { return if (player.playingTrack == null) { player.playTrack(qtrack.track) diff --git a/src/main/java/dev/cosgy/textToSpeak/audio/VoiceCreation.kt b/src/main/java/dev/cosgy/textToSpeak/audio/VoiceCreation.kt index 8daca58..e815b5b 100644 --- a/src/main/java/dev/cosgy/textToSpeak/audio/VoiceCreation.kt +++ b/src/main/java/dev/cosgy/textToSpeak/audio/VoiceCreation.kt @@ -19,6 +19,7 @@ import dev.cosgy.textToSpeak.Bot import dev.cosgy.textToSpeak.settings.UserSettings import net.dv8tion.jda.api.entities.* import org.apache.commons.io.FileUtils +import com.ibm.icu.text.Transliterator import org.slf4j.LoggerFactory import java.io.* import java.nio.file.Files @@ -53,6 +54,9 @@ class VoiceCreation( // 各種設定の値を保持するためのフィール for ((key, value) in words!!) { dicMsg = dicMsg.replace(key!!.toRegex(), value!!) } + + toKatakanaIfEnglishExists(dicMsg) + val tmpFilePath = createTmpTextFile(guildId, fileId, dicMsg) @@ -66,6 +70,23 @@ class VoiceCreation( // 各種設定の値を保持するためのフィール return fileName } + // 英単語をカタカナに変換するメソッド + private fun toKatakanaIfEnglishExists(message: String): String { + var englishExists = false + for (c in message) { + if (c in 'a'..'z' || c in 'A'..'Z') { + englishExists = true + break + } + } + return if (englishExists) { + val latinToKatakana = Transliterator.getInstance("Latin-Katakana") + latinToKatakana.transliterate(message) + } else { + message + } + } + // メッセージをサニタイズするメソッド private fun sanitizeMessage(message: String): String { var sanitizedMsg = message.replace("[\\uD800-\\uDFFF]".toRegex(), " ") @@ -77,7 +98,7 @@ class VoiceCreation( // 各種設定の値を保持するためのフィール val builder = StringBuilder() while (sentences.next() != BreakIterator.DONE) { val sentence = sanitizedMsg.substring(lastIndex, sentences.current()) - if (sentence.length + builder.length > maxMessageCount) { + if (maxMessageCount > 0 && sentence.length + builder.length > maxMessageCount) { builder.append("以下略") break }