Browse Source

Wikipedia2

pull/2/head
Paul Glaß 4 years ago
parent
commit
98654706a4
4 changed files with 50 additions and 58 deletions
  1. +42
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java
  2. +0
    -48
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java
  3. +5
    -7
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java
  4. +3
    -3
      app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java

+ 42
- 0
app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java View File

@ -1,6 +1,7 @@
package de.yannicpunktdee.yoshibot.command;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.commands.SayCommand;
import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Logger;
import de.yannicpunktdee.yoshibot.utils.Resources;
@ -10,7 +11,10 @@ import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@ -30,6 +34,8 @@ public abstract class YoshiCommand {
*/
protected YoshiCommandContext context;
public static String resourceToDelete = null;
/**
* Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide
@ -41,6 +47,42 @@ public abstract class YoshiCommand {
this.context = context;
}
public static String buildTTSAudio(String text) {
String path = Resources.getPathToTempAudioFile(UUID.randomUUID().toString());
try {
ProcessBuilder pb = new ProcessBuilder(
"python3",
Resources.getTtsPath(),
"--text",
text,
"--lang",
"de",
"--out",
path);
Process p = pb.start();
BufferedReader errorReader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
StringBuilder builder = new StringBuilder();
String line;
while ((line = errorReader.readLine()) != null) {
builder.append(line).append("\n");
}
if (builder.toString().length() > 0) {
Logger.logError(builder.toString());
}
if (resourceToDelete != null)
synchronized (resourceToDelete) {
resourceToDelete = path;
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return path;
}
/**
* Führt das Kommando aus.
*


+ 0
- 48
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java View File

@ -1,22 +1,10 @@
package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Logger;
import de.yannicpunktdee.yoshibot.utils.Resources;
import net.dv8tion.jda.api.entities.VoiceChannel;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.UUID;
public class SayCommand extends YoshiCommand {
public static String resourceToDelete = null;
protected final String[] requiredArguments = {"text", "channel"};
@ -26,42 +14,6 @@ public class SayCommand extends YoshiCommand {
super(context);
}
public static String buildTTSAudio(String text) {
String path = Resources.getPathToTempAudioFile(UUID.randomUUID().toString());
try {
ProcessBuilder pb = new ProcessBuilder(
"python3",
Resources.getTtsPath(),
"--text",
text,
"--lang",
"de",
"--out",
path);
Process p = pb.start();
BufferedReader errorReader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
StringBuilder builder = new StringBuilder();
String line;
while ((line = errorReader.readLine()) != null) {
builder.append(line).append("\n");
}
if (builder.toString().length() > 0) {
Logger.logError(builder.toString());
}
if (resourceToDelete != null)
synchronized (resourceToDelete) {
resourceToDelete = path;
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return path;
}
@Override
public boolean execute() {
if (!super.execute()) return false;


+ 5
- 7
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java View File

@ -1,13 +1,9 @@
package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Logger;
import de.yannicpunktdee.yoshibot.utils.RestHelper;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.json.JSONObject;
import java.util.Arrays;
@ -41,11 +37,13 @@ public class WikipediaCommand extends YoshiCommand {
JSONObject page = pages.getJSONObject(pages.keySet().stream().findFirst().get());
String text = page.getString("extract");
text = String.join(" ", Arrays.asList(text.split(" ")).subList(0, 50));
sendMessage(text);
sendMessage("Konvertiere Text mittels TTS...");
List<String> parts = Arrays.asList(text.split(" "));
text = String.join(" ", parts.subList(0, Math.min(parts.size(), 50)));
String path = SayCommand.buildTTSAudio(text);
String path = YoshiCommand.buildTTSAudio(text);
return YoshiCommand.sayToChannel(path, context.getArgument("channel"), context.getEvent());
}
}

+ 3
- 3
app/src/main/java/de/yannicpunktdee/yoshibot/listeners/DiscordEventListener.java View File

@ -1,8 +1,8 @@
package de.yannicpunktdee.yoshibot.listeners;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.command.commands.PlayCommand;
import de.yannicpunktdee.yoshibot.command.commands.SayCommand;
import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Resources;
import net.dv8tion.jda.api.entities.ChannelType;
@ -57,7 +57,7 @@ public class DiscordEventListener extends ListenerAdapter {
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)),
YoshiCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)),
event.getMember().getVoiceState().getChannel());
}
@ -73,7 +73,7 @@ public class DiscordEventListener extends ListenerAdapter {
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)),
YoshiCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)),
event.getChannelLeft());
}


Loading…
Cancel
Save