diff --git a/main/src/main/java/com/github/topi314/lavasrc/mirror/DefaultMirroringAudioTrackResolver.java b/main/src/main/java/com/github/topi314/lavasrc/mirror/DefaultMirroringAudioTrackResolver.java index 1c684302..320543c8 100644 --- a/main/src/main/java/com/github/topi314/lavasrc/mirror/DefaultMirroringAudioTrackResolver.java +++ b/main/src/main/java/com/github/topi314/lavasrc/mirror/DefaultMirroringAudioTrackResolver.java @@ -3,6 +3,7 @@ import com.github.topi314.lavasrc.applemusic.AppleMusicSourceManager; import com.github.topi314.lavasrc.spotify.SpotifySourceManager; import com.sedmelluq.discord.lavaplayer.track.AudioItem; +import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist; import com.sedmelluq.discord.lavaplayer.track.AudioReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,7 +25,6 @@ public DefaultMirroringAudioTrackResolver(String[] providers) { @Override public AudioItem apply(MirroringAudioTrack mirroringAudioTrack) { - AudioItem track = AudioReference.NO_TRACK; for (var provider : providers) { if (provider.startsWith(SpotifySourceManager.SEARCH_PREFIX)) { log.warn("Can not use spotify search as search provider!"); @@ -46,19 +46,22 @@ public AudioItem apply(MirroringAudioTrack mirroringAudioTrack) { } provider = provider.replace(MirroringAudioSourceManager.QUERY_PATTERN, getTrackTitle(mirroringAudioTrack)); + + AudioItem item; try { - track = mirroringAudioTrack.loadItem(provider); - } - catch (Exception e) { + item = mirroringAudioTrack.loadItem(provider); + } catch (Exception e) { log.error("Failed to load track from provider \"{}\"!", provider, e); continue; } - if (track != AudioReference.NO_TRACK) { - break; + // If the track is an empty playlist, skip the provider + if (item instanceof AudioPlaylist && ((AudioPlaylist) item).getTracks().isEmpty() || item == AudioReference.NO_TRACK) { + continue; } + return item; } - return track; + return AudioReference.NO_TRACK; } public String getTrackTitle(MirroringAudioTrack mirroringAudioTrack) { diff --git a/main/src/main/java/com/github/topi314/lavasrc/mirror/MirroringAudioTrack.java b/main/src/main/java/com/github/topi314/lavasrc/mirror/MirroringAudioTrack.java index f3915809..899d7a3b 100644 --- a/main/src/main/java/com/github/topi314/lavasrc/mirror/MirroringAudioTrack.java +++ b/main/src/main/java/com/github/topi314/lavasrc/mirror/MirroringAudioTrack.java @@ -45,7 +45,7 @@ public void process(LocalAudioTrackExecutor executor) throws Exception { if (track instanceof AudioPlaylist) { var tracks = ((AudioPlaylist) track).getTracks(); if (tracks.isEmpty()) { - throw new TrackNotFoundException(); + throw new TrackNotFoundException("No tracks found in playlist or search result for track"); } track = tracks.get(0); } @@ -55,7 +55,7 @@ public void process(LocalAudioTrackExecutor executor) throws Exception { processDelegate(internalTrack, executor); return; } - throw new TrackNotFoundException(); + throw new TrackNotFoundException("No mirror found for track"); } @Override diff --git a/main/src/main/java/com/github/topi314/lavasrc/mirror/TrackNotFoundException.java b/main/src/main/java/com/github/topi314/lavasrc/mirror/TrackNotFoundException.java index c59a10db..b2a2a11b 100644 --- a/main/src/main/java/com/github/topi314/lavasrc/mirror/TrackNotFoundException.java +++ b/main/src/main/java/com/github/topi314/lavasrc/mirror/TrackNotFoundException.java @@ -6,8 +6,8 @@ public class TrackNotFoundException extends FriendlyException { private static final long serialVersionUID = 6550093849278285754L; - public TrackNotFoundException() { - super("Playlist is empty", FriendlyException.Severity.COMMON, null); + public TrackNotFoundException(String msg) { + super(msg, FriendlyException.Severity.COMMON, null); } }