From 7dbf7dc9793e3422806ba0cbd81d2d2fe98093d2 Mon Sep 17 00:00:00 2001 From: Anthony Date: Fri, 23 Mar 2018 07:55:44 -0400 Subject: [PATCH] Added youtube search with play command --- .../command/music/PlayCommand.java | 8 +++++++- .../java/netneutrality/music/MusicManager.java | 16 +++++++++++----- .../java/netneutrality/music/SourceFinder.java | 17 ++++++++++++++--- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main/java/netneutrality/command/music/PlayCommand.java b/src/main/java/netneutrality/command/music/PlayCommand.java index 78ae10f..76d1068 100644 --- a/src/main/java/netneutrality/command/music/PlayCommand.java +++ b/src/main/java/netneutrality/command/music/PlayCommand.java @@ -55,7 +55,13 @@ public class PlayCommand extends AbstractCommand { if (player.isConnected()) { if (player.isConnectedTo(vChannel)) { event.getMessage().delete().queue(); - player.play(args.split(" ")[0], event.getTextChannel(), false); + + if (args.startsWith("ytsearch:")) { + player.play(args, event.getTextChannel(), false); + } else { + player.play(args.split(" ")[0], event.getTextChannel(), false); + } + } else event.getTextChannel().sendMessage("Not in your voice channel").queue(); } else { diff --git a/src/main/java/netneutrality/music/MusicManager.java b/src/main/java/netneutrality/music/MusicManager.java index f7427ab..25f8091 100644 --- a/src/main/java/netneutrality/music/MusicManager.java +++ b/src/main/java/netneutrality/music/MusicManager.java @@ -108,11 +108,12 @@ public class MusicManager { public synchronized void play(String url, TextChannel channel, boolean silent ) { - String youtubeCode = SourceFinder.getIdentifier(url); + String identifier = SourceFinder.getIdentifier(url, channel); + System.out.println(identifier); scheduler.setTextChannel(channel); - if (youtubeCode != null) { - playerManager.loadItem(youtubeCode, new AudioLoadResultHandler() { + if (identifier != null) { + playerManager.loadItem(identifier, new AudioLoadResultHandler() { @Override public void trackLoaded(AudioTrack audioTrack) { if (!silent) @@ -124,8 +125,13 @@ public class MusicManager { @Override public void playlistLoaded(AudioPlaylist playlist) { - for (AudioTrack track : playlist.getTracks()) { - scheduler.queue(track); + + if (identifier.startsWith("ytsearch:")) { + scheduler.queue(playlist.getTracks().get(0)); + } else { + for (AudioTrack track : playlist.getTracks()) { + scheduler.queue(track); + } } } diff --git a/src/main/java/netneutrality/music/SourceFinder.java b/src/main/java/netneutrality/music/SourceFinder.java index 19cf393..47a1ad7 100644 --- a/src/main/java/netneutrality/music/SourceFinder.java +++ b/src/main/java/netneutrality/music/SourceFinder.java @@ -1,5 +1,7 @@ package netneutrality.music; +import net.dv8tion.jda.core.entities.TextChannel; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -13,6 +15,7 @@ enum SourceEnum { Soundcloud, Bandcamp, Vimeo, + YTSearch, Nothing } @@ -30,18 +33,26 @@ public class SourceFinder { if (youtubeMatcher.find()) return SourceEnum.Youtube; + if (url.startsWith("ytsearch:")) + return SourceEnum.YTSearch; + return SourceEnum.Nothing; } - public static String getIdentifier(String url) { - String identifier = ""; + public static String getIdentifier(String url, TextChannel channel) { + String identifier = null; switch (getSource(url)) { case Youtube: - return youtubeMatcher.group(1); + identifier = youtubeMatcher.group(1); + break; + case YTSearch: + identifier = url; + break; case Nothing: identifier = null; + channel.sendMessage("No source found to play the given url").queue(); break; }