/** * Creates a player and a track scheduler. * @param manager Audio player manager to use for creating the player. */ public GuildMusicManager(AudioPlayerManager manager) { player = manager.createPlayer(); scheduler = new TrackScheduler(player); player.addListener(scheduler); }
manager.loadItemOrdered(name, items.get(i), new AudioLoadResultHandler()
/** * Registers the local file source manager to the specified player manager. * * @param playerManager Player manager to register the source manager to * @param containerRegistry Media container registry to be used by the local source. */ public static void registerLocalSource(AudioPlayerManager playerManager, MediaContainerRegistry containerRegistry) { playerManager.registerSourceManager(new LocalAudioSourceManager()); } }
public AudioPlayerManager getPlayerManager() { if (playerManager == null) { playerManager = registerSourceManagers(new DefaultAudioPlayerManager()); playerManager.getConfiguration().setResamplingQuality( AudioConfiguration.ResamplingQuality.valueOf( avaire.getConfig().getString("audio-quality.resampling", "medium").toUpperCase() ) ); playerManager.getConfiguration().setOpusEncodingQuality( avaire.getConfig().getInt("audio-quality.encoding", AudioConfiguration.OPUS_QUALITY_MAX) ); if (LavalinkManager.LavalinkManagerHolder.lavalink.isEnabled()) { playerManager.enableGcMonitoring(); } playerManager.setFrameBufferDuration(1000); playerManager.setItemLoaderThreadPoolSize(500); AudioSourceManagers.registerRemoteSources(playerManager); AudioSourceManagers.registerLocalSource(playerManager); } return playerManager; }
public static AudioTrack loadTrack(AudioPlayerManager manager, String identifier) throws Exception { CompletableFuture<AudioTrack> result = new CompletableFuture<>(); manager.loadItem(identifier, new FunctionalResultHandler( result::complete, (playlist) -> result.completeExceptionally(new IllegalArgumentException()), () -> result.completeExceptionally(new NoSuchElementException()), result::completeExceptionally )); return result.get(10, TimeUnit.SECONDS); }
public static String encode(AudioPlayerManager playerManager, AudioTrack track) throws IOException { ByteArrayOutputStream stream = new ByteArrayOutputStream(); playerManager.encodeTrack(new MessageOutput(stream), track); byte[] encoded = Base64.getEncoder().encode(stream.toByteArray()); return new String(encoded); }
public static AudioTrack decode(AudioPlayerManager playerManager, String encoded) throws IOException { byte[] bytes = Base64.getDecoder().decode(encoded.getBytes()); ByteArrayInputStream stream = new ByteArrayInputStream(bytes); return playerManager.decodeTrack(new MessageInput(stream)).decodedTrack; } }
@Override public void noMatches() { if (verbose) { if (isSearch) { context.reply("No song matches found! Usage: `{{prefix}}play <link or youtube video title>` or " + "`{{prefix}}soundcloud <soundcloud song title>`"); if (context.getEvent().getGuild().getAudioManager().isConnected() && musicManager.getPlayer().getPlayingTrack() == null && musicManager.getScheduler().getQueue().isEmpty()) { musicManager.getConnector().closeConnection(); } } else if (allowSearch) { this.isSearch = true; playerManager.loadItem("ytsearch: " + String.join(" ", context.getArgs()), this); } } }
private void loadAndPlay(final TextChannel channel, final String trackUrl) { GuildMusicManager musicManager = getGuildAudioPlayer(channel.getGuild()); playerManager.loadItemOrdered(musicManager, trackUrl, new AudioLoadResultHandler() { @Override public void trackLoaded(AudioTrack track) { channel.sendMessage("Adding to queue " + track.getInfo().title).queue(); play(channel.getGuild(), musicManager, track); } @Override public void playlistLoaded(AudioPlaylist playlist) { AudioTrack firstTrack = playlist.getSelectedTrack(); if (firstTrack == null) { firstTrack = playlist.getTracks().get(0); } channel.sendMessage("Adding to queue " + firstTrack.getInfo().title + " (first track of playlist " + playlist.getName() + ")").queue(); play(channel.getGuild(), musicManager, firstTrack); } @Override public void noMatches() { channel.sendMessage("Nothing found by " + trackUrl).queue(); } @Override public void loadFailed(FriendlyException exception) { channel.sendMessage("Could not play: " + exception.getMessage()).queue(); } }); }
/** * Registers all built-in remote audio sources to the specified player manager. Local file audio source must be * registered separately. * * @param playerManager Player manager to register the source managers to * @param containerRegistry Media container registry to be used by any probing sources. */ public static void registerRemoteSources(AudioPlayerManager playerManager, MediaContainerRegistry containerRegistry) { playerManager.registerSourceManager(new YoutubeAudioSourceManager(true)); playerManager.registerSourceManager(new SoundCloudAudioSourceManager()); playerManager.registerSourceManager(new BandcampAudioSourceManager()); playerManager.registerSourceManager(new VimeoAudioSourceManager()); playerManager.registerSourceManager(new TwitchStreamAudioSourceManager()); playerManager.registerSourceManager(new BeamAudioSourceManager()); playerManager.registerSourceManager(new HttpAudioSourceManager()); }
/** * Creates a player and a track scheduler. * @param manager Audio player manager to use for creating the player. */ public GuildMusicManager(AudioPlayerManager manager) { player = manager.createPlayer(); scheduler = new TrackScheduler(player); player.addListener(scheduler); }
playerManager.loadItem(song, handler);
private void loadAndPlay(final IChannel channel, final String trackUrl) { GuildMusicManager musicManager = getGuildAudioPlayer(channel.getGuild()); playerManager.loadItemOrdered(musicManager, trackUrl, new AudioLoadResultHandler() { @Override public void trackLoaded(AudioTrack track) { sendMessageToChannel(channel, "Adding to queue " + track.getInfo().title); play(channel.getGuild(), musicManager, track); } @Override public void playlistLoaded(AudioPlaylist playlist) { AudioTrack firstTrack = playlist.getSelectedTrack(); if (firstTrack == null) { firstTrack = playlist.getTracks().get(0); } sendMessageToChannel(channel, "Adding to queue " + firstTrack.getInfo().title + " (first track of playlist " + playlist.getName() + ")"); play(channel.getGuild(), musicManager, firstTrack); } @Override public void noMatches() { sendMessageToChannel(channel, "Nothing found by " + trackUrl); } @Override public void loadFailed(FriendlyException exception) { sendMessageToChannel(channel, "Could not play: " + exception.getMessage()); } }); }
public AudioPlayerManager registerSourceManagers(AudioPlayerManager manager) { manager.registerSourceManager(new PlaylistImportSourceManager()); YoutubeAudioSourceManager youtubeAudioSourceManager = new YoutubeAudioSourceManager(); youtubeAudioSourceManager.configureRequests(config -> RequestConfig.copy(config) .setCookieSpec(CookieSpecs.IGNORE_COOKIES) .build()); manager.registerSourceManager(youtubeAudioSourceManager); manager.registerSourceManager(new SoundCloudAudioSourceManager()); manager.registerSourceManager(new TwitchStreamAudioSourceManager()); manager.registerSourceManager(new BandcampAudioSourceManager()); manager.registerSourceManager(new VimeoAudioSourceManager()); manager.registerSourceManager(new BeamAudioSourceManager()); manager.registerSourceManager(new LocalAudioSourceManager()); manager.registerSourceManager(new HttpAudioSourceManager()); return manager; }
/** * Creates the music player for the given guild ID, if Lavalink is enabled a player * will be created on a remote node that can be used to play music remotely, if * Lavalink is disabled a internal Lavaplayer player will be created instead. * * @param guildId The ID of the guild to create the audio player for. * @return The player interface that can be used to communicate with the player. */ IPlayer createPlayer(String guildId) { return isEnabled() ? lavalink.getLink(guildId).getPlayer() : new LavaplayerPlayerWrapper(AudioHandler.getDefaultAudioHandler().getPlayerManager().createPlayer()); }
playerManager.loadItem(url, handler);
@Override public AudioItem loadItem(DefaultAudioPlayerManager manager, AudioReference ar) { String[] parsed = parse(ar.identifier); if (parsed == null) return null; String serviceName = parsed[0]; String pasteId = parsed[1]; if (pasteId == null || "".equals(pasteId) || !PasteServiceConstants.pasteServiceUrl.containsKey(serviceName)) { return null; } List<String> trackIds = loadAndParseTrackIds(serviceName, pasteId); PasteServiceAudioResultHandler handler = new PasteServiceAudioResultHandler(); Future<Void> lastFuture = null; for (String id : trackIds) { lastFuture = privateManager.loadItemOrdered(handler, id, handler); } if (lastFuture == null) { return null; } try { lastFuture.get(); } catch (InterruptedException | ExecutionException ex) { throw new FriendlyException("Failed loading playlist item", FriendlyException.Severity.FAULT, ex); } return new BasicAudioPlaylist(pasteId, handler.getLoadedTracks(), null, false); }
@Override public void run() { Message message = channel.sendMessage("Processing..").complete(); try { if (extractor == null) for (Class<? extends Extractor> clazz : extractors) { Extractor extractor = clazz.newInstance(); if (!extractor.valid(url)) continue; this.extractor = extractor; break; } if (extractor == null) { MessageUtils.editMessage(message, "Could not find a way to process that.."); return; } if (managers.add(extractor.getSourceManagerClass())) manager.getManager().registerSourceManager(extractor.newSourceManagerInstance()); extractor.process(url, manager.getPlayer(channel.getGuild().getId()), message, user); } catch (Exception e) { FlareBot.LOGGER.warn(("Could not init extractor for '{}'. Guild ID: " + channel.getGuild().getId()).replace("{}", url), e); FlareBot.reportError(channel, "Something went wrong while searching for the video!", e); } }
GuildAudioController(MusicBot bot, Guild guild, long textChannelId, AudioPlayerManager playerManager, ExecutorService executorService) { this.playerManager = playerManager; this.state = new GuildAudioControllerState(); this.connector = new GuildAudioControllerConnector(bot.getShardManager(), state, executorService, guild.getIdLong()); this.player = playerManager.createPlayer(); this.scheduler = new TrackScheduler(bot, this, this.player, textChannelId); this.player.addListener(scheduler); AudioPlayerSendHandler sendHandler = new AudioPlayerSendHandler(this.player); guild.getAudioManager().setSendingHandler(sendHandler); }
playerManager.loadItem(String.join(" ", context.getArgs()), handler); if (!musicManager.getState().isConnectionOpen()) { musicManager.getConnector().openConnection(channel, context.getEvent().getAuthor());