@Override public String toString() { return "RemoteExec " + executorId + ", " + track.getIdentifier(); } }
@Override public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) { logger.error("track {} stuck with thresholdMs {}", track.getIdentifier(), thresholdMs); } }
@Override public void onTrackStart(AudioPlayer player, AudioTrack track) { log.debug("Received start event from delegate player for track {}.", track.getIdentifier()); }
/** * @param tracks List of tracks to search from. * @param selectedVideoId Selected track identifier. * @return The selected track from the track list, or null if it is not present. */ public AudioTrack findSelectedTrack(List<AudioTrack> tracks, String selectedVideoId) { if (selectedVideoId != null) { for (AudioTrack track : tracks) { if (selectedVideoId.equals(track.getIdentifier())) { return track; } } } return null; }
@Override public void trackLoaded(AudioTrack track) { if (condition.test(track) && !track.getIdentifier().equals(identifier)) { synchronized (streams) { resolutionCache.put(identifier, track.getIdentifier()); } } delegate.trackLoaded(track); }
private static int getSortPosition(Map<String, Integer> positions, AudioTrack track) { return DataFormatTools.defaultOnNull(positions.get(track.getIdentifier()), Integer.MAX_VALUE); }
private void sendQueueData(List<Track> tracks) { JsonArray array = new JsonArray(); for (Track t : tracks) { JsonObject object = new JsonObject(); object.addProperty("title", t.getTrack().getInfo().title); object.addProperty("id", t.getTrack().getIdentifier()); array.add(object); } //FlareBot.getInstance().postToApi("updatePlaylistData", "playlist", array); } }
public StreamInstance.Cursor openTrack(AudioTrack track, Consumer<StreamInstance.Cursor> detachListener) { synchronized (streams) { StreamInstance instance = streams.get(track.getIdentifier()); if (instance != null) { StreamInstance.Cursor cursor = instance.createCursor(detachListener); if (cursor != null) { return cursor; } else { streams.remove(track.getIdentifier()); } } if (!condition.test(track)) { return null; } instance = new StreamInstance(track, super.createPlayer(), streamFrameCount); streams.put(track.getIdentifier(), instance); return instance.createCursor(detachListener); } }
public static String getLink(Track track) { String name = String.valueOf(track.getTrack().getInfo().title).replace("`", "'"); String link = YouTubeExtractor.WATCH_URL + track.getTrack().getIdentifier(); return String.format("[`%s`](%s)", name, link); }
/** * Send the specified exception as an event to the active state listener. * @param exception Exception to send */ public void dispatchException(FriendlyException exception) { TrackStateListener currentListener = activeListener; ExceptionTools.log(log, exception, track.getIdentifier()); if (currentListener != null) { trackException = exception; currentListener.onTrackException(track, exception); } }
/** * Clear the track from this node. * @param executor Executor of the track * @param notifyNode Whether it is necessary to notify the node */ public void trackEnded(RemoteAudioTrackExecutor executor, boolean notifyNode) { if (playingTracks.remove(executor.getExecutorId()) != null) { log.info("Track {} removed from node {} (context {})", executor.getTrack().getIdentifier(), nodeAddress, executor.getExecutorId()); if (notifyNode) { log.info("Notifying node {} of track stop for {} (context {})", nodeAddress, executor.getTrack().getIdentifier(), executor.getExecutorId()); queuedMessages.add(new TrackStoppedMessage(executor.getExecutorId())); } executor.detach(); } }
private boolean loadFromStream(String identifier, AudioLoadResultHandler resultHandler) { try { StreamInstance stream; synchronized (streams) { String finalIdentifier = defaultOnNull(resolutionCache.get(identifier), identifier); stream = streams.get(finalIdentifier); } if (stream != null) { AudioTrack track = stream.getTrack().makeClone(); log.debug("Track {} (originally {}) loaded using existing stream.", track.getIdentifier(), identifier); resultHandler.trackLoaded(track); return true; } } catch (Exception e) { log.error("Error when checking streams for identifier {}.", identifier); } return false; }
/** * Start playing a track through this remote node. * @param executor The executor of the track */ public void startPlaying(RemoteAudioTrackExecutor executor) { AudioTrack track = executor.getTrack(); if (playingTracks.putIfAbsent(executor.getExecutorId(), executor) == null) { long position = executor.getNextInputTimecode(); log.info("Sending request to play {} {} from position {}", track.getIdentifier(), executor.getExecutorId(), position); queuedMessages.add(new TrackStartRequestMessage(executor.getExecutorId(), track.getInfo(), playerManager.encodeTrackDetails(track), executor.getVolume(), executor.getConfiguration(), position)); } }
private void send(TextChannel channel, Member sender) { PlayerManager manager = FlareBot.instance().getMusicManager(); Track currentTrack = manager.getPlayer(channel.getGuild().getId()).getPlayingTrack(); if (!manager.getPlayer(channel.getGuild().getId()).getPlaylist().isEmpty() || currentTrack != null) { List<String> songs = new ArrayList<>(); songs.add("Current Song: " + String.format("[`%s`](%s) | Requested by <@!%s>\n", currentTrack.getTrack().getInfo().title, YouTubeExtractor.WATCH_URL + currentTrack.getTrack().getIdentifier(), currentTrack.getMeta().get("requester"))); AtomicInteger i = new AtomicInteger(1); manager.getPlayer(channel.getGuild().getId()).getPlaylist().forEach(track -> songs.add(String.format("%s. [`%s`](%s) | Requested by <@!%s>\n", i.getAndIncrement(), track.getTrack().getInfo().title, YouTubeExtractor.WATCH_URL + track.getTrack().getIdentifier(), track.getMeta().get("requester")))); PagedEmbedBuilder pe = new PagedEmbedBuilder<>(PaginationUtil.splitStringToList(songs.stream() // 21 for 10 per page. 2 new lines per song and 1 more because it's annoying .collect(Collectors.joining("\n")) + "\n", PaginationUtil.SplitMethod.NEW_LINES, 21)) .setTitle("Queued Songs"); PaginationUtil.sendEmbedPagedMessage(pe.build(), 0, channel, sender.getUser(), ButtonGroupConstants.QUEUE); } else { MessageUtils.sendErrorMessage(MessageUtils.getEmbed().setDescription("No songs in the playlist!"), channel); } }
public Songs(Track track) { title = track.getTrack().getInfo().title; identifier = track.getTrack().getIdentifier(); requester = track.getMeta().getOrDefault("requester", "Unknown").toString(); length = track.getTrack().getDuration(); progress = track.getTrack().getPosition(); User user = Getters.getUserById(requester); if (user != null) { discrim = user.getDiscriminator(); name = user.getName(); avatar = user.getEffectiveAvatarUrl(); } }
.map(track -> track .getTrack() .getIdentifier()).collect(Collectors.toList()); if (currentlyPlaying != null) { tracks.add(currentlyPlaying.getTrack().getIdentifier());
.addField("Next up", playlist.isEmpty() ? "Nothing" : SongCommand.getLink(playlist.peek()), false) .setImage("https://img.youtube.com/vi/" + track.getTrack().getIdentifier() + "/hqdefault.jpg") .build()).queue(); } else {
public static void updateSongMessage(User sender, Message message, TextChannel channel) { Track track = FlareBot.instance().getMusicManager().getPlayer(channel.getGuild().getId()).getPlayingTrack(); if (track == null) return; EmbedBuilder eb = MessageUtils.getEmbed(sender) .addField("Current Song", getLink(track), false) .setThumbnail("https://img.youtube.com/vi/" + track.getTrack().getIdentifier() + "/hqdefault.jpg"); if (track.getTrack().getInfo().isStream) eb.addField("Amount Played", "Issa livestream ;)", false); else eb.addField("Amount Played", GeneralUtils.getProgressBar(track), true) .addField("Time", String.format("%s / %s", FormatUtils.formatDuration(track.getTrack().getPosition()), FormatUtils.formatDuration(track.getTrack().getDuration())), false); message.editMessage(eb.build()).queue(); }
eb.setThumbnail("https://img.youtube.com/vi/"+track.getIdentifier()+"/mqdefault.jpg");
EmbedBuilder eb = MessageUtils.getEmbed(sender) .addField("Current Song", getLink(track), false) .setThumbnail("https://img.youtube.com/vi/" + track.getTrack().getIdentifier() + "/hqdefault.jpg"); if (track.getTrack().getInfo().isStream) eb.addField("Amount Played", "Issa livestream ;)", false);