diff --git a/src/main/java/com/annimon/voicyanski/Main.java b/src/main/java/com/annimon/voicyanski/Main.java index 410a3e9..b2ba2bf 100644 --- a/src/main/java/com/annimon/voicyanski/Main.java +++ b/src/main/java/com/annimon/voicyanski/Main.java @@ -1,7 +1,11 @@ package com.annimon.voicyanski; -import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Locale; +import java.util.Properties; import java.util.ResourceBundle; import javafx.application.Application; import javafx.fxml.FXMLLoader; @@ -11,6 +15,8 @@ import javafx.stage.Stage; public class Main extends Application { private static ResourceBundle resources, config; + Properties props = new Properties(); + public static String locale, chatId, botToken, stereo, bitrate, samplerate; public static ResourceBundle getResources() { return resources; @@ -20,14 +26,47 @@ public class Main extends Application { return config; } + private String getVar(String key) { + String result = props.getProperty(key); + return result != null ? result : config.getString(key); + } + + private void setupVars() { + + config = ResourceBundle.getBundle("app"); + try { + InputStream extConfig = Files.newInputStream(Paths.get( + System.getProperty("user.home"), + ".config", + "voicyanski.conf")); + props.load(extConfig); + extConfig.close(); + + locale = getVar("locale"); + chatId = getVar("telegram-chat-id"); + botToken = getVar("telegram-bot-token"); + stereo = getVar("encode-stereo"); + bitrate = getVar("encode-bitrate"); + samplerate = getVar("encode-samplerate"); + } catch (IOException ex) { + locale = config.getString("locale"); + chatId = config.getString("telegram-chat-id"); + botToken = config.getString("telegram-bot-token"); + stereo = config.getString("encode-stereo"); + bitrate = config.getString("encode-bitrate"); + samplerate = config.getString("encode-samplerate"); + + } + if (locale != null) { + Locale.setDefault(new Locale(locale)); + } + + } + @Override public void start(Stage stage) throws Exception { - Main.config = ResourceBundle.getBundle("app"); - if (Main.config.containsKey("locale")) { - Locale.setDefault(new Locale(Main.config.getString("locale"))); - } + setupVars(); Main.resources = ResourceBundle.getBundle("locales.Language", Locale.getDefault()); - final FXMLLoader loader = new FXMLLoader( getClass().getResource("/fxml/Main.fxml"), Main.resources); diff --git a/src/main/java/com/annimon/voicyanski/tasks/OpusConvertTask.java b/src/main/java/com/annimon/voicyanski/tasks/OpusConvertTask.java index 75cf96c..d50bab1 100644 --- a/src/main/java/com/annimon/voicyanski/tasks/OpusConvertTask.java +++ b/src/main/java/com/annimon/voicyanski/tasks/OpusConvertTask.java @@ -22,12 +22,12 @@ public final class OpusConvertTask implements UnaryOperator { "-ss", Double.toString(data.startTime), "-i", data.metadata.file.getAbsolutePath(), "-t", Double.toString(data.endTime - data.startTime), - "-ac", Main.getConfig().getString("encode-stereo").equalsIgnoreCase("true") ? "2" : "1", + "-ac", Main.stereo.equalsIgnoreCase("true") ? "2" : "1", "-map", "0:a", "-codec:a", "libopus", - "-b:a", Main.getConfig().getString("encode-bitrate"), + "-b:a", Main.bitrate, "-vbr", "off", - "-ar", Main.getConfig().getString("encode-samplerate"), + "-ar", Main.samplerate, data.outputAudioFile.getAbsolutePath() ); final Process ffmpeg = pb.start(); diff --git a/src/main/java/com/annimon/voicyanski/tasks/SendTelegramVoiceTask.java b/src/main/java/com/annimon/voicyanski/tasks/SendTelegramVoiceTask.java index 5397fc9..bf146d1 100644 --- a/src/main/java/com/annimon/voicyanski/tasks/SendTelegramVoiceTask.java +++ b/src/main/java/com/annimon/voicyanski/tasks/SendTelegramVoiceTask.java @@ -25,13 +25,13 @@ public final class SendTelegramVoiceTask implements Function