aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/audio/Music.java30
-rw-r--r--src/main/java/utility/URLChecker.java5
-rw-r--r--src/main/java/utility/WebAPI.java33
3 files changed, 64 insertions, 4 deletions
diff --git a/src/main/java/audio/Music.java b/src/main/java/audio/Music.java
index f6ed128..999c3f3 100644
--- a/src/main/java/audio/Music.java
+++ b/src/main/java/audio/Music.java
@@ -58,6 +58,7 @@ public class Music extends ListenerAdapter {
private final Map<Long, GuildMusicManager> musicManagers;
private final SpotifyAPI spotifyAPI = new SpotifyAPI();
private final EmbedMaker embedMaker = new EmbedMaker();
+ private final WebAPI webAPI = new WebAPI();
private final int MAX_SP_PLAYLIST_SIZE = 40; // Maximum Spotify playlist size to queue. This is to prevent spamming the queue with too many songs
// Bot owners should make adjustments to this value depending on their needs
@@ -246,11 +247,34 @@ public class Music extends ListenerAdapter {
loadAndPlay((TextChannel) event.getChannel(), videoURL, false);
}
break;
+ case "snd":
+ event.reply("Found Soundcloud Track: " + userQuery).queue();
+ loadAndPlay((TextChannel) event.getChannel(), userQuery, false);
+ break;
+ case "txt-playlist":
+ event.deferReply().queue();
+ String[] urls = webAPI.getURLsFromSite(userQuery);
+
+ if(urls == null || urls.length == 0){
+ event.getHook().sendMessage("Error: Could not find any URLs in the text file").queue();
+ return;
+ }
+ else if(urls.length > MAX_SP_PLAYLIST_SIZE){
+ String[] slicedPlaylist = Arrays.copyOfRange(urls, 0, MAX_SP_PLAYLIST_SIZE);
+ event.getHook().sendMessage("Text Playlist Detected! But its too long, queueing the first " + MAX_SP_PLAYLIST_SIZE + " songs").queue();
+ urls = slicedPlaylist;
+ }
+ else{
+ event.getHook().sendMessage("Text Playlist Detected! Queueing " + urls.length + " songs").queue();
+ }
+ for (String url : urls) {
+ loadAndPlay((TextChannel) event.getChannel(), url, false);
+ }
+ break;
default:
System.out.println(urlCheck.getURLType(userQuery) + " was not handled");
- String top_video = youtubeAPI.returnTopVideoURL(userQuery);
- event.reply("Found Video: " + top_video).queue();
- loadAndPlay((TextChannel) event.getChannel(), top_video, true);
+ event.reply("Trying to directly queue URL: " + userQuery).queue();
+ loadAndPlay((TextChannel) event.getChannel(), userQuery, true);
break;
}
} catch (IOException e) {
diff --git a/src/main/java/utility/URLChecker.java b/src/main/java/utility/URLChecker.java
index 499cca9..99eb651 100644
--- a/src/main/java/utility/URLChecker.java
+++ b/src/main/java/utility/URLChecker.java
@@ -19,7 +19,10 @@ public class URLChecker {
} else if (url.split("\\?si=")[0].matches("^(https?://)?(www.)?(open.)?spotify.com/(user/[a-zA-Z0-9]+|artist/[a-zA-Z0-9]+|album/[a-zA-Z0-9]+|track/[a-zA-Z0-9]+|playlist/[a-zA-Z0-9]+)$")) {
return url.split("\\?si=")[0].matches("^(https?://)?(www.)?(open.)?spotify.com/playlist/[a-zA-Z0-9]+$") ? "spotify-playlist" : "spotify";
}
- return "unknown";
+ else if(url.endsWith(".txt")){
+ return "txt-playlist";
+ }
+ return "unknown";
}
diff --git a/src/main/java/utility/WebAPI.java b/src/main/java/utility/WebAPI.java
new file mode 100644
index 0000000..9724760
--- /dev/null
+++ b/src/main/java/utility/WebAPI.java
@@ -0,0 +1,33 @@
+package utility;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+
+public class WebAPI {
+ public String[] getURLsFromSite(String urlString) {
+ try {
+ System.out.println("Getting URLs from " + urlString);
+ try (InputStream is = new URL(urlString).openStream();
+ BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
+ StringBuilder sb = new StringBuilder();
+ int cb;
+ while ((cb = br.read()) != -1) {
+ sb.append((char) cb);
+ }
+ return sb.toString().split("\n");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ catch (Exception e){
+ System.out.println("Error: " + e.getMessage());
+ return null;
+ }
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage