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; package de.yannicpunktdee.yoshibot.command;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl; import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.commands.SayCommand;
import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.Logger;
import de.yannicpunktdee.yoshibot.utils.Resources; 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.entities.VoiceChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -30,6 +34,8 @@ public abstract class YoshiCommand {
*/ */
protected YoshiCommandContext context; 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 * 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; 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. * 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; package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; 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 class SayCommand extends YoshiCommand {
public static String resourceToDelete = null;
protected final String[] requiredArguments = {"text", "channel"}; protected final String[] requiredArguments = {"text", "channel"};
@ -26,42 +14,6 @@ public class SayCommand extends YoshiCommand {
super(context); 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 @Override
public boolean execute() { public boolean execute() {
if (!super.execute()) return false; 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; package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.audio.AudioLoadResultHandlerImpl;
import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Logger; import de.yannicpunktdee.yoshibot.utils.Logger;
import de.yannicpunktdee.yoshibot.utils.RestHelper; 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 org.json.JSONObject;
import java.util.Arrays; import java.util.Arrays;
@ -41,11 +37,13 @@ public class WikipediaCommand extends YoshiCommand {
JSONObject page = pages.getJSONObject(pages.keySet().stream().findFirst().get()); JSONObject page = pages.getJSONObject(pages.keySet().stream().findFirst().get());
String text = page.getString("extract"); String text = page.getString("extract");
text = String.join(" ", Arrays.asList(text.split(" ")).subList(0, 50));
sendMessage(text); 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()); 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; package de.yannicpunktdee.yoshibot.listeners;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.command.commands.PlayCommand; import de.yannicpunktdee.yoshibot.command.commands.PlayCommand;
import de.yannicpunktdee.yoshibot.command.commands.SayCommand;
import de.yannicpunktdee.yoshibot.main.YoshiBot; import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Resources; import de.yannicpunktdee.yoshibot.utils.Resources;
import net.dv8tion.jda.api.entities.ChannelType; import net.dv8tion.jda.api.entities.ChannelType;
@ -57,7 +57,7 @@ public class DiscordEventListener extends ListenerAdapter {
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay; nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play( PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)),
YoshiCommand.buildTTSAudio(Resources.getRandomGreeting(nameToPlay)),
event.getMember().getVoiceState().getChannel()); event.getMember().getVoiceState().getChannel());
} }
@ -73,7 +73,7 @@ public class DiscordEventListener extends ListenerAdapter {
nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay; nameToPlay = nameToPlay == null ? event.getMember().getUser().getName() : nameToPlay;
PlayCommand.play( PlayCommand.play(
SayCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)),
YoshiCommand.buildTTSAudio(Resources.getRandomByebye(nameToPlay)),
event.getChannelLeft()); event.getChannelLeft());
} }


Loading…
Cancel
Save