Browse Source

Fixed say

greetings_byebyes
Paul Glaß 4 years ago
parent
commit
2c10970671
7 changed files with 62 additions and 18 deletions
  1. +2
    -2
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandContext.java
  2. +4
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/DeleteCommand.java
  3. +2
    -2
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SauceCommand.java
  4. +21
    -3
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SayCommand.java
  5. +2
    -5
      app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java
  6. +30
    -6
      app/src/main/java/de/yannicpunktdee/yoshibot/main/SauceProvider.java
  7. +1
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java

+ 2
- 2
app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandContext.java View File

@ -110,7 +110,7 @@ public class YoshiCommandContext {
*/
private Map<String, String> arguments;
private List<String> argumentList;
protected List<String> argumentList;
private MessageReceivedEvent event;
@ -170,7 +170,7 @@ public class YoshiCommandContext {
continue;
case INTERMEDIATE:
if (Character.isWhitespace(currentChar)) continue;
if ((currentChar != '-' || currentChar == '"') && action != Action.SAUCE) {
if (currentChar != '-' || currentChar == '"') {
state = State.BAD_SYNTAX;
return;
}


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

@ -0,0 +1,4 @@
package de.yannicpunktdee.yoshibot.command.commands;
public class DeleteCommand {
}

+ 2
- 2
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/SauceCommand.java View File

@ -5,6 +5,7 @@ import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.main.SauceProvider;
import net.dv8tion.jda.api.entities.MessageEmbed;
import java.util.Arrays;
import java.util.List;
public class SauceCommand extends YoshiCommand {
@ -28,8 +29,7 @@ public class SauceCommand extends YoshiCommand {
sendMessage("Dieser Kanal is nix gut, weil vong nsfw her. Geh woanders hin du kek");
return true;
}
List<String> arguments = context.getArguments();
arguments.remove(0);
List<String> arguments = Arrays.asList(context.getArgument("tags").split(" "));
try {
arguments.stream().map(Integer::parseInt).map(this::byIndex).forEach(this::sendMessage);
} catch (Exception e) {


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

@ -9,8 +9,10 @@ import de.yannicpunktdee.yoshibot.main.YoshiBot;
import de.yannicpunktdee.yoshibot.utils.Logger;
import net.dv8tion.jda.api.entities.VoiceChannel;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.UUID;
@ -31,20 +33,36 @@ public class SayCommand extends YoshiCommand {
if(!super.execute()) return false;
String path = Resources.buildTempAudioFilePath(UUID.randomUUID().toString());
File test = new File(System.getProperty("java.io.tmpdir") + "/yoshibot");
if (!test.exists()) {
if (!test.mkdir()) {
Logger.log("Tempordner konnte nicht erstellt werden!", Logger.Type.ERROR);
return false;
}
}
try {
ProcessBuilder pb = new ProcessBuilder(
"python",
"rsc/tts.py",
"../rsc/tts.py",
"--text",
context.getArgument("text"),
"--lang",
"de",
"--out",
path);
pb.redirectError();
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.log(builder.toString(), Logger.Type.ERROR);
}
int exitCode = p.waitFor();
if(resourceToDelete != null)
synchronized (resourceToDelete){


+ 2
- 5
app/src/main/java/de/yannicpunktdee/yoshibot/main/Resources.java View File

@ -6,10 +6,7 @@ import de.yannicpunktdee.yoshibot.utils.Logger.Type;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.*;
import java.util.stream.Collectors;
public class Resources {
@ -127,7 +124,7 @@ public class Resources {
else return null;
}
public static String buildTempAudioFilePath(String name){
return audio_source_directory + (audio_source_directory.endsWith("/")? "" : "/") + "temp/" + name + ".opus";
return System.getProperty("java.io.tmpdir") + "/yoshibot/" + name;
}
public static String getAudioSourceDirectory() {
return audio_source_directory;


+ 30
- 6
app/src/main/java/de/yannicpunktdee/yoshibot/main/SauceProvider.java View File

@ -24,6 +24,8 @@ public class SauceProvider {
private boolean isSauceInit = false;
private static MessageEmbed notFoundEmbed = null;
public SauceProvider(int timer) {
this();
ScheduledExecutorService sauceScheduler = Executors.newScheduledThreadPool(1);
@ -39,17 +41,24 @@ public class SauceProvider {
public static MessageEmbed getSauce(int index) {
String url = BASE_URL + "posts?id=" + index;
JSONObject post = getParsedSauceData(url).getJSONArray("posts").getJSONObject(0);
JSONObject base = getParsedSauceData(url);
if (base.getInt("count") == 0){
return getNotFoundEmbed();
}
JSONObject post = base.getJSONArray("posts").getJSONObject(0);
return makeStringFromJson(post);
}
public static MessageEmbed getRandomSauce(String tags) {
tags = tagsForRest(tags);
tags += String.join("+-", Resources.getGeneralFilterTags());
tags += "+" + String.join("+", Resources.getGeneralFilterTags());
Random rand = new Random();
String url = BASE_URL + "posts?tags=" + String.join("+", tags);
JSONObject baseObj = getParsedSauceData(url);
int amount = baseObj.getInt("count");
if (amount == 0){
return getNotFoundEmbed();
}
int selectedIndex = rand.nextInt(amount);
int page = (selectedIndex / 100) % 100;
int pageIndex = selectedIndex % 100;
@ -85,8 +94,15 @@ public class SauceProvider {
Collections.reverse(postsInternal);
YoshiBot yoshiBot = YoshiBot.getInstance();
for (JSONObject post : postsInternal) {
yoshiBot.jda.getTextChannelsByName(feed.getKey(), true).get(0)
.sendMessage(makeStringFromJson(post)).queue();
List<TextChannel> channels = yoshiBot.jda.getTextChannelsByName(feed.getKey(), true);
if (channels.size() == 0) {
Logger.log("Kein Kanal mit dem Namen " + feed.getKey() + "gefunden", Logger.Type.ERROR);
break;
} else if (!channels.get(0).isNSFW()) {
Logger.log("Kanal " + feed.getKey() + " ist nicht als NSFW markiert!", Logger.Type.ERROR);
break;
}
channels.get(0).sendMessage(makeStringFromJson(post)).queue();
}
Logger.log(String.format("Found %d posts for feed '%s'", postsInternal.size(), feed.getKey()),
Logger.Type.INFO);
@ -95,12 +111,12 @@ public class SauceProvider {
}
private void initSauceProviding() {
YoshiBot yoshiBot = YoshiBot.getInstance();
try {
Thread.sleep(5000);
yoshiBot.jda.awaitReady();
} catch (InterruptedException e) {
e.printStackTrace();
}
YoshiBot yoshiBot = YoshiBot.getInstance();
for (Map.Entry<String, List<String>> entry : Resources.getFeedDetails().entrySet()) {
List<TextChannel> channels = yoshiBot.jda.getTextChannelsByName(entry.getKey(), true);
if (channels.size() > 0) {
@ -143,5 +159,13 @@ public class SauceProvider {
return result;
}
private static MessageEmbed getNotFoundEmbed(){
if (SauceProvider.notFoundEmbed == null){
EmbedBuilder eb = new EmbedBuilder();
eb.setTitle("Could not find any posts matching the filter!");
SauceProvider.notFoundEmbed = eb.build();
}
return SauceProvider.notFoundEmbed;
}
}

+ 1
- 0
app/src/main/java/de/yannicpunktdee/yoshibot/main/YoshiBot.java View File

@ -65,6 +65,7 @@ public class YoshiBot {
System.out.println("Starte YoshiBot.");
jdaBuilder = JDABuilder.createDefault(Resources.getJdaBuilderString());
jdaBuilder.setAutoReconnect(true);
jdaBuilder.addEventListeners(new CommandListener());


Loading…
Cancel
Save