From 4fe931bf1f1eaa5783d5081b9beb2f47b35d0259 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Tue, 12 Dec 2023 20:26:28 -0800 Subject: Add support for any .txt playlists via /play - Have a newline delimited file of URLs of valid urls - Bot will attempt to queue up to MAX_LIMIT of them Signed-off-by: Pinapelz --- src/main/java/utility/URLChecker.java | 5 ++++- src/main/java/utility/WebAPI.java | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/java/utility/WebAPI.java (limited to 'src/main/java/utility') 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; + } + } +} -- cgit v1.2.3