Added support for external config file
This commit is contained in:
parent
17daad154c
commit
877e7908dd
@ -1,7 +1,11 @@
|
|||||||
package com.annimon.voicyanski;
|
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.Locale;
|
||||||
|
import java.util.Properties;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.fxml.FXMLLoader;
|
import javafx.fxml.FXMLLoader;
|
||||||
@ -11,6 +15,8 @@ import javafx.stage.Stage;
|
|||||||
public class Main extends Application {
|
public class Main extends Application {
|
||||||
|
|
||||||
private static ResourceBundle resources, config;
|
private static ResourceBundle resources, config;
|
||||||
|
Properties props = new Properties();
|
||||||
|
public static String locale, chatId, botToken, stereo, bitrate, samplerate;
|
||||||
|
|
||||||
public static ResourceBundle getResources() {
|
public static ResourceBundle getResources() {
|
||||||
return resources;
|
return resources;
|
||||||
@ -20,14 +26,47 @@ public class Main extends Application {
|
|||||||
return config;
|
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
|
@Override
|
||||||
public void start(Stage stage) throws Exception {
|
public void start(Stage stage) throws Exception {
|
||||||
Main.config = ResourceBundle.getBundle("app");
|
setupVars();
|
||||||
if (Main.config.containsKey("locale")) {
|
|
||||||
Locale.setDefault(new Locale(Main.config.getString("locale")));
|
|
||||||
}
|
|
||||||
Main.resources = ResourceBundle.getBundle("locales.Language", Locale.getDefault());
|
Main.resources = ResourceBundle.getBundle("locales.Language", Locale.getDefault());
|
||||||
|
|
||||||
final FXMLLoader loader = new FXMLLoader(
|
final FXMLLoader loader = new FXMLLoader(
|
||||||
getClass().getResource("/fxml/Main.fxml"), Main.resources);
|
getClass().getResource("/fxml/Main.fxml"), Main.resources);
|
||||||
|
|
||||||
|
@ -22,12 +22,12 @@ public final class OpusConvertTask implements UnaryOperator<ClipPartData> {
|
|||||||
"-ss", Double.toString(data.startTime),
|
"-ss", Double.toString(data.startTime),
|
||||||
"-i", data.metadata.file.getAbsolutePath(),
|
"-i", data.metadata.file.getAbsolutePath(),
|
||||||
"-t", Double.toString(data.endTime - data.startTime),
|
"-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",
|
"-map", "0:a",
|
||||||
"-codec:a", "libopus",
|
"-codec:a", "libopus",
|
||||||
"-b:a", Main.getConfig().getString("encode-bitrate"),
|
"-b:a", Main.bitrate,
|
||||||
"-vbr", "off",
|
"-vbr", "off",
|
||||||
"-ar", Main.getConfig().getString("encode-samplerate"),
|
"-ar", Main.samplerate,
|
||||||
data.outputAudioFile.getAbsolutePath()
|
data.outputAudioFile.getAbsolutePath()
|
||||||
);
|
);
|
||||||
final Process ffmpeg = pb.start();
|
final Process ffmpeg = pb.start();
|
||||||
|
@ -25,13 +25,13 @@ public final class SendTelegramVoiceTask implements Function<ClipPartData, Boole
|
|||||||
if (data.metadata.hasTrackInfo()) {
|
if (data.metadata.hasTrackInfo()) {
|
||||||
builder.addFormDataPart("caption", data.metadata.toString());
|
builder.addFormDataPart("caption", data.metadata.toString());
|
||||||
}
|
}
|
||||||
builder.addFormDataPart("chat_id", Main.getConfig().getString("telegram-chat-id"));
|
builder.addFormDataPart("chat_id", Main.chatId);
|
||||||
builder.addFormDataPart("voice", data.metadata.file.getName(),
|
builder.addFormDataPart("voice", data.metadata.file.getName(),
|
||||||
RequestBody.create(MEDIA_TYPE_OGG, data.outputAudioFile));
|
RequestBody.create(MEDIA_TYPE_OGG, data.outputAudioFile));
|
||||||
final RequestBody requestBody = builder.build();
|
final RequestBody requestBody = builder.build();
|
||||||
|
|
||||||
final Request request = new Request.Builder()
|
final Request request = new Request.Builder()
|
||||||
.url(String.format(URL_FORMAT, Main.getConfig().getString("telegram-bot-token"), "sendVoice"))
|
.url(String.format(URL_FORMAT, Main.botToken, "sendVoice"))
|
||||||
.post(requestBody)
|
.post(requestBody)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user