Search in sources :

Example 41 with FriendlyException

use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project lavaplayer by sedmelluq.

the class YoutubeMixProvider method loadTracksAsynchronously.

private AudioPlaylist loadTracksAsynchronously(List<String> videoIds, String selectedVideoId) {
    ExecutorCompletionService<AudioItem> completion = new ExecutorCompletionService<>(mixLoadingExecutor);
    List<AudioTrack> tracks = new ArrayList<>();
    for (final String videoId : videoIds) {
        completion.submit(() -> sourceManager.loadTrackWithVideoId(videoId, true));
    }
    try {
        fetchTrackResultsFromExecutor(completion, tracks, videoIds.size());
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
    AudioTrack selectedTrack = sourceManager.findSelectedTrack(tracks, selectedVideoId);
    if (tracks.isEmpty()) {
        throw new FriendlyException("No tracks from the mix loaded succesfully.", SUSPICIOUS, null);
    } else if (selectedTrack == null) {
        throw new FriendlyException("The selected track of the mix failed to load.", SUSPICIOUS, null);
    }
    return new BasicAudioPlaylist("YouTube mix", tracks, selectedTrack, false);
}
Also used : BasicAudioPlaylist(com.sedmelluq.discord.lavaplayer.track.BasicAudioPlaylist) ArrayList(java.util.ArrayList) ExecutorCompletionService(java.util.concurrent.ExecutorCompletionService) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) AudioItem(com.sedmelluq.discord.lavaplayer.track.AudioItem) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException)

Example 42 with FriendlyException

use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project FlareBot by FlareBot.

the class RandomExtractor method process.

@Override
public void process(String input, Player player, Message message, User user) throws Exception {
    int i = 0;
    for (String s : input.split(",")) {
        try {
            AudioItem probablyATrack = player.resolve(s);
            if (probablyATrack == null)
                continue;
            Track track = new Track((AudioTrack) probablyATrack);
            track.getMeta().put("requester", user.getId());
            track.getMeta().put("guildId", player.getGuildId());
            player.queue(track);
            i++;
        } catch (FriendlyException ignored) {
        }
    }
    MessageUtils.editMessage(null, MessageUtils.getEmbed().setDescription("Added " + i + " random songs to the playlist!"), message);
}
Also used : AudioItem(com.sedmelluq.discord.lavaplayer.track.AudioItem) Track(com.arsenarsen.lavaplayerbridge.player.Track) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException)

Example 43 with FriendlyException

use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException 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);
}
Also used : Playlist(com.arsenarsen.lavaplayerbridge.player.Playlist) ArrayList(java.util.ArrayList) Document(org.jsoup.nodes.Document) Track(com.arsenarsen.lavaplayerbridge.player.Track) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException)

Example 44 with FriendlyException

use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project Ardent by adamint.

the class Music method loadAndPlay.

static void loadAndPlay(Message message, User user, Command command, final TextChannel channel, String trackUrl, final VoiceChannel voiceChannel, boolean search, boolean useEmbedSelect) {
    if (trackUrl.contains("spotify.com")) {
        String[] parsed = trackUrl.split("/track/");
        if (parsed.length == 2) {
            final TrackRequest request = spotifyApi.getTrack(parsed[1]).build();
            try {
                trackUrl = request.get().getName();
            } catch (Exception e) {
                new BotException(e);
            }
        }
    }
    Guild guild = channel.getGuild();
    GuildMusicManager musicManager = getGuildAudioPlayer(channel.getGuild(), channel);
    String finalTrackUrl = trackUrl;
    GuildUtils.getShard(guild).playerManager.loadItemOrdered(musicManager, trackUrl, new AudioLoadResultHandler() {

        @Override
        public void trackLoaded(AudioTrack track) {
            if (!UserUtils.hasTierTwoPermissions(user) && !EntityGuild.get(guild).isPremium()) {
                try {
                    if (!shouldContinue(user, guild, channel, track)) {
                        return;
                    }
                } catch (Exception e) {
                    new BotException(e);
                }
            }
            try {
                command.sendTranslatedMessage("Adding {0} to the queue".replace("{0}", track.getInfo().title) + " " + getDuration(track), channel, user);
            } catch (Exception e) {
                new BotException(e);
            }
            play(user, guild, voiceChannel, musicManager, track, channel);
        }

        @Override
        public void playlistLoaded(AudioPlaylist playlist) {
            List<AudioTrack> tracks = playlist.getTracks();
            if (playlist.isSearchResult()) {
                try {
                    if (!useEmbedSelect) {
                        AudioTrack[] possible;
                        if (playlist.getTracks().size() >= 5)
                            possible = playlist.getTracks().subList(0, 5).toArray(new AudioTrack[5]);
                        else
                            possible = playlist.getTracks().toArray(new AudioTrack[playlist.getTracks().size()]);
                        ArrayList<String> names = new ArrayList<>();
                        for (AudioTrack audioTrack : possible) {
                            names.add(audioTrack.getInfo().title);
                        }
                        Message embed = command.sendEmbed(command.chooseFromList("Choose Song", guild, user, command, names.toArray(new String[5])), channel, user);
                        interactiveOperation(channel, message, selectionMessage -> {
                            try {
                                AudioTrack selected = possible[Integer.parseInt(selectionMessage.getContent()) - 1];
                                if (!UserUtils.hasTierTwoPermissions(user) && !EntityGuild.get(guild).isPremium()) {
                                    try {
                                        if (!shouldContinue(user, guild, channel, selected)) {
                                            return;
                                        }
                                    } catch (Exception e) {
                                        new BotException(e);
                                    }
                                }
                                try {
                                    embed.delete().queue();
                                    selectionMessage.delete().queue();
                                } catch (Exception ignored) {
                                }
                                play(user, guild, voiceChannel, musicManager, selected, channel);
                                command.sendTranslatedMessage("Adding {0} to the queue".replace("{0}", selected.getInfo().title) + " " + getDuration(selected), channel, user);
                            } catch (Exception e) {
                                command.sendTranslatedMessage("Invalid response", channel, user);
                            }
                        });
                    } else {
                        AudioTrack track = playlist.getTracks().get(0);
                        play(user, guild, voiceChannel, musicManager, track, channel);
                        command.sendTranslatedMessage("Adding {0} to the queue".replace("{0}", track.getInfo().title) + " " + getDuration(track), channel, user);
                    }
                } catch (Exception e) {
                    new BotException(e);
                }
            } else {
                if (!UserUtils.hasTierTwoPermissions(user) && !EntityGuild.get(guild).isPremium()) {
                    try {
                        if (!shouldContinue(user, guild, channel, 1)) {
                            return;
                        }
                    } catch (Exception e) {
                        new BotException(e);
                    }
                }
                try {
                    command.sendTranslatedMessage("Adding {0} songs to the queue".replace("{0}", String.valueOf(tracks.size())), channel, user);
                } catch (Exception e) {
                    new BotException(e);
                }
                for (AudioTrack track : tracks) {
                    play(user, guild, voiceChannel, musicManager, track, channel);
                }
            }
        }

        @Override
        public void noMatches() {
            if (!search) {
                loadAndPlay(message, user, command, channel, "ytsearch: " + finalTrackUrl, voiceChannel, true, useEmbedSelect);
            } else {
                try {
                    command.sendTranslatedMessage("I couldn't find a song with that name", channel, user);
                } catch (Exception e) {
                    new BotException(e);
                }
            }
        }

        @Override
        public void loadFailed(FriendlyException exception) {
            try {
                sendTo(channel, guild).sendMessage("I wasn't able to play that track... **Reason: **" + exception.getLocalizedMessage()).queue();
            } catch (Exception e) {
                new BotException(e);
            }
        }
    });
}
Also used : AudioLoadResultHandler(com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler) AudioPlayer(com.sedmelluq.discord.lavaplayer.player.AudioPlayer) TrackRequest(com.wrapper.spotify.methods.TrackRequest) MessageUtils(tk.ardentbot.utils.discord.MessageUtils) MusicSettingsModel(tk.ardentbot.rethink.models.MusicSettingsModel) Database.r(tk.ardentbot.rethink.Database.r) AudioPlaylist(com.sedmelluq.discord.lavaplayer.track.AudioPlaylist) ArrayList(java.util.ArrayList) EntityGuild(tk.ardentbot.utils.rpg.EntityGuild) PermissionException(net.dv8tion.jda.core.exceptions.PermissionException) GuildUtils(tk.ardentbot.utils.discord.GuildUtils) SQLException(java.sql.SQLException) Permission(net.dv8tion.jda.core.Permission) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException) Region(net.dv8tion.jda.core.Region) ShardManager(tk.ardentbot.main.ShardManager) Command(tk.ardentbot.core.executor.Command) net.dv8tion.jda.core.entities(net.dv8tion.jda.core.entities) UserUtils(tk.ardentbot.utils.discord.UserUtils) Subcommand(tk.ardentbot.core.executor.Subcommand) AudioManager(net.dv8tion.jda.core.managers.AudioManager) BaseCommand(tk.ardentbot.core.executor.BaseCommand) BotException(tk.ardentbot.core.misc.logging.BotException) Shard(tk.ardentbot.main.Shard) AudioLoadResultHandler(com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) Ardent.spotifyApi(tk.ardentbot.main.Ardent.spotifyApi) Database.connection(tk.ardentbot.rethink.Database.connection) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) Pair(tk.ardentbot.utils.javaAdditions.Pair) WordUtils(org.apache.commons.lang.WordUtils) ArrayList(java.util.ArrayList) EntityGuild(tk.ardentbot.utils.rpg.EntityGuild) PermissionException(net.dv8tion.jda.core.exceptions.PermissionException) SQLException(java.sql.SQLException) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException) BotException(tk.ardentbot.core.misc.logging.BotException) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException) TrackRequest(com.wrapper.spotify.methods.TrackRequest) BotException(tk.ardentbot.core.misc.logging.BotException) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) ArrayList(java.util.ArrayList) List(java.util.List) AudioPlaylist(com.sedmelluq.discord.lavaplayer.track.AudioPlaylist)

Example 45 with FriendlyException

use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project Ardent by adamint.

the class TrackScheduler method onTrackStuck.

@Override
public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) {
    manager.nextTrack();
    onException(player, track, new FriendlyException("Track got stuck", FriendlyException.Severity.COMMON, new Exception()));
}
Also used : FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException) BotException(tk.ardentbot.core.misc.logging.BotException) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException)

Aggregations

FriendlyException (com.sedmelluq.discord.lavaplayer.tools.FriendlyException)62 IOException (java.io.IOException)23 AudioTrack (com.sedmelluq.discord.lavaplayer.track.AudioTrack)18 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)13 AudioLoadResultHandler (com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler)12 JsonBrowser (com.sedmelluq.discord.lavaplayer.tools.JsonBrowser)12 AudioPlaylist (com.sedmelluq.discord.lavaplayer.track.AudioPlaylist)12 ArrayList (java.util.ArrayList)10 HttpGet (org.apache.http.client.methods.HttpGet)10 List (java.util.List)7 HttpInterface (com.sedmelluq.discord.lavaplayer.tools.io.HttpInterface)6 BasicAudioPlaylist (com.sedmelluq.discord.lavaplayer.track.BasicAudioPlaylist)5 URI (java.net.URI)4 URISyntaxException (java.net.URISyntaxException)4 MediaContainerHints (com.sedmelluq.discord.lavaplayer.container.MediaContainerHints)3 PersistentHttpStream (com.sedmelluq.discord.lavaplayer.tools.io.PersistentHttpStream)3 AudioReference (com.sedmelluq.discord.lavaplayer.track.AudioReference)3 AudioTrackInfo (com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo)3 Document (org.jsoup.nodes.Document)3 Track (com.arsenarsen.lavaplayerbridge.player.Track)2