use of com.arsenarsen.lavaplayerbridge.player.Playlist in project FlareBot by FlareBot.
the class YouTubeExtractor method process.
@Override
public void process(String input, Player player, Message message, User user) throws Exception {
AudioItem item;
try {
item = GeneralUtils.resolveItem(player, input);
} catch (IllegalArgumentException e) {
MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription("Could not get that video/playlist! Make sure the URL is correct!").setColor(Color.RED), message);
return;
} catch (IllegalStateException e) {
if (e.getMessage().contains("Vevo")) {
MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription("We are blocked from playing this video as it is from Vevo! " + "Sorry for any inconvenience.").setColor(Color.RED), message);
return;
}
MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription("There was a problem with that video!\n" + "If the error continues, join our support discord: " + Constants.INVITE_URL + "\n" + "Input: " + input + "\n" + "Error Message: " + e.getMessage() + "\n" + "Stacktrace: " + MessageUtils.paste(GeneralUtils.getStackTrace(e))).setColor(Color.RED), message);
return;
}
List<AudioTrack> audioTracks = new ArrayList<>();
String name;
if (item instanceof AudioPlaylist) {
AudioPlaylist audioPlaylist = (AudioPlaylist) item;
audioTracks.addAll(audioPlaylist.getTracks());
name = audioPlaylist.getName();
} else {
AudioTrack track = (AudioTrack) item;
/*if (track.getInfo().length == 0 || track.getInfo().isStream) {
EmbedBuilder builder = MessageUtils.getEmbed(user).setDescription("Cannot queue a livestream!");
MessageUtils.editMessage(null, builder, message);
return;
}*/
audioTracks.add(track);
name = track.getInfo().title;
if (track.getInfo().identifier.equals("dQw4w9WgXcQ") && (random.nextInt(1000) + 1) == 1000) {
GeneralUtils.sendImage("https://flarebot.stream/img/rick_roll.jpg", "rick_roll.jpg", user);
Constants.logEG("You can't rick roll me!", null, message.getGuild(), user);
}
}
if (name != null) {
List<Track> tracks = audioTracks.stream().map(Track::new).peek(track -> {
track.getMeta().put("requester", user.getId());
track.getMeta().put("guildId", player.getGuildId());
}).collect(Collectors.toList());
if (tracks.size() > 1) {
// Double `if` https://giphy.com/gifs/ng1xAzwIkDgfm
Playlist p = new Playlist(tracks);
player.queue(p);
} else {
player.queue(tracks.get(0));
}
EmbedBuilder builder = MessageUtils.getEmbed(user);
builder.setDescription(String.format("%s added the %s [`%s`](%s)", user.getAsMention(), audioTracks.size() == 1 ? "song" : "playlist", name.replace("`", "'"), input));
if (audioTracks.size() > 1)
builder.addField("Song count:", String.valueOf(audioTracks.size()), true);
MessageUtils.editMessage(null, builder, message);
}
}
use of com.arsenarsen.lavaplayerbridge.player.Playlist in project FlareBot by FlareBot.
the class SavedPlaylistExtractor method process.
@Override
public void process(String input, Player player, Message message, User user) throws Exception {
input = input.substring(input.indexOf('\u200B') + 1).replaceAll("\\[? ?]?", "");
int i = 0;
ArrayList<Track> playlist = new ArrayList<>();
for (String s : input.split(",")) {
String url = YouTubeExtractor.WATCH_URL + s;
Document doc;
try {
doc = Jsoup.connect(url).get();
} catch (Exception e) {
continue;
}
if (!doc.title().endsWith("YouTube") || doc.title().equals("YouTube")) {
continue;
}
try {
Track track = new Track((AudioTrack) player.resolve(url));
track.getMeta().put("requester", user.getId());
track.getMeta().put("guildId", player.getGuildId());
playlist.add(track);
if (playlist.size() == 10) {
player.queue(new Playlist(playlist));
playlist.clear();
}
i++;
} catch (FriendlyException ignored) {
}
}
if (!playlist.isEmpty()) {
player.queue(new Playlist(playlist));
}
MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription(String.format("*Loaded %s songs!*", i)), message);
}
Aggregations