From c0351759a343b8581bc4368736afaaa6876ea3b2 Mon Sep 17 00:00:00 2001 From: Alexander Ignatov Date: Sat, 19 Sep 2020 09:50:45 +0300 Subject: [PATCH 1/2] Fix #24 --- src/main/java/co/moosic/music/TrackScheduler.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/co/moosic/music/TrackScheduler.java b/src/main/java/co/moosic/music/TrackScheduler.java index f091fd1..7cede1e 100644 --- a/src/main/java/co/moosic/music/TrackScheduler.java +++ b/src/main/java/co/moosic/music/TrackScheduler.java @@ -24,6 +24,7 @@ public class TrackScheduler extends AudioEventAdapter { private AudioPlayerManager playerManager; private List AutoPlay = new ArrayList<>(); private final Random RANDOM = new Random(); + private int lastSongIngex = -1; TrackScheduler(AudioPlayer player, AudioPlayerManager playerManager) { try (Scanner scanner = new Scanner(new File("songs.txt"))) { @@ -110,7 +111,13 @@ public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) private String getRandomSong() { synchronized (RANDOM) { - return AutoPlay.get(RANDOM.nextInt(AutoPlay.size())); + int newIndex = RANDOM.nextInt(AutoPlay.size()); + while (newIndex == lastSongIngex && AutoPlay.size() > 1) { + newIndex = RANDOM.nextInt(AutoPlay.size()); + } + + lastSongIngex = newIndex; + return AutoPlay.get(newIndex); } } @@ -153,4 +160,4 @@ public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason nextTrack(); } } -} \ No newline at end of file +} From b3b6c4103c7077fac23575f3beb798e42e690b12 Mon Sep 17 00:00:00 2001 From: Alexander Ignatov Date: Sat, 19 Sep 2020 14:51:16 +0300 Subject: [PATCH 2/2] Perform change suggested by issue commenter --- .../java/co/moosic/music/TrackScheduler.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/co/moosic/music/TrackScheduler.java b/src/main/java/co/moosic/music/TrackScheduler.java index 7cede1e..57a5807 100644 --- a/src/main/java/co/moosic/music/TrackScheduler.java +++ b/src/main/java/co/moosic/music/TrackScheduler.java @@ -23,6 +23,7 @@ public class TrackScheduler extends AudioEventAdapter { AudioPlayer player; private AudioPlayerManager playerManager; private List AutoPlay = new ArrayList<>(); + private List AutoDone = new ArrayList<>(); private final Random RANDOM = new Random(); private int lastSongIngex = -1; @@ -111,13 +112,18 @@ public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) private String getRandomSong() { synchronized (RANDOM) { - int newIndex = RANDOM.nextInt(AutoPlay.size()); - while (newIndex == lastSongIngex && AutoPlay.size() > 1) { - newIndex = RANDOM.nextInt(AutoPlay.size()); + if (AutoPlay.isEmpty()) { + System.out.println("Copying songs back into queue for next cycle"); + for (String nextTrack : AutoDone) { + AutoPlay.add(nextTrack); + } + AutoDone.clear(); } - - lastSongIngex = newIndex; - return AutoPlay.get(newIndex); + int trackPicked = RANDOM.nextInt(AutoPlay.size()); + String pickedTrack = AutoPlay.get(trackPicked); + AutoDone.add(pickedTrack); + AutoPlay.remove(trackPicked); + return pickedTrack; } }