use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project lavaplayer by sedmelluq.
the class NicoAudioSourceManager method loadTrack.
private AudioTrack loadTrack(String videoId) {
checkLoggedIn();
try (HttpInterface httpInterface = getHttpInterface()) {
try (CloseableHttpResponse response = httpInterface.execute(new HttpGet("http://ext.nicovideo.jp/api/getthumbinfo/" + videoId))) {
int statusCode = response.getStatusLine().getStatusCode();
if (!HttpClientTools.isSuccessWithContent(statusCode)) {
throw new IOException("Unexpected response code from video info: " + statusCode);
}
Document document = Jsoup.parse(response.getEntity().getContent(), StandardCharsets.UTF_8.name(), "", Parser.xmlParser());
return extractTrackFromXml(videoId, document);
}
} catch (IOException e) {
throw new FriendlyException("Error occurred when extracting video info.", SUSPICIOUS, e);
}
}
use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project lavaplayer by sedmelluq.
the class MpegAudioTrack method process.
@Override
public void process(LocalAudioTrackExecutor localExecutor) {
MpegFileLoader file = new MpegFileLoader(inputStream);
file.parseHeaders();
MpegTrackConsumer trackConsumer = loadAudioTrack(file, localExecutor.getProcessingContext());
try {
MpegFileTrackProvider fileReader = file.loadReader(trackConsumer);
if (fileReader == null) {
throw new FriendlyException("Unknown MP4 format.", SUSPICIOUS, null);
}
accurateDuration.set(fileReader.getDuration());
localExecutor.executeProcessingLoop(fileReader::provideFrames, fileReader::seekToTimecode);
} finally {
trackConsumer.close();
}
}
use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project lavaplayer by sedmelluq.
the class Main method loadAndPlay.
private void loadAndPlay(TextChannel channel, final String trackUrl) {
GuildMusicManager musicManager = getGuildAudioPlayer(channel.getGuild().block());
playerManager.loadItemOrdered(musicManager, trackUrl, new AudioLoadResultHandler() {
@Override
public void trackLoaded(AudioTrack track) {
sendMessageToChannel(channel, "Adding to queue " + track.getInfo().title);
play(channel.getGuild().block(), 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().block(), 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());
}
});
}
use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project lavaplayer by sedmelluq.
the class LocalAudioTrackExecutor method handlePlaybackInterrupt.
private boolean handlePlaybackInterrupt(InterruptedException interruption, SeekExecutor seekExecutor) {
Thread.interrupted();
if (checkStopped()) {
markerTracker.trigger(STOPPED);
return false;
}
SeekResult seekResult = checkPendingSeek(seekExecutor);
if (seekResult != SeekResult.NO_SEEK) {
// Double-check, might have received a stop request while seeking
if (checkStopped()) {
markerTracker.trigger(STOPPED);
return false;
} else {
return seekResult == SeekResult.INTERNAL_SEEK;
}
} else if (interruption != null) {
Thread.currentThread().interrupt();
throw new FriendlyException("The track was unexpectedly terminated.", SUSPICIOUS, interruption);
} else {
return true;
}
}
use of com.sedmelluq.discord.lavaplayer.tools.FriendlyException in project lavaplayer by sedmelluq.
the class DefaultAudioPlayerManager method handleLoadRejected.
private Future<Void> handleLoadRejected(String identifier, AudioLoadResultHandler resultHandler, RejectedExecutionException e) {
FriendlyException exception = new FriendlyException("Cannot queue loading a track, queue is full.", SUSPICIOUS, e);
ExceptionTools.log(log, exception, "queueing item " + identifier);
resultHandler.loadFailed(exception);
return ExecutorTools.COMPLETED_VOID;
}
Aggregations