Skip to content

Commit c8b7346

Browse files
committed
Add playlist name
1 parent e33a4c2 commit c8b7346

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

TestBot/src/main/java/com/shirkanesi/magmaplayer/testbot/discord/SlashCommandListener.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
4242
event.reply("Track enqueued").setEphemeral(true).queue();
4343
} else if (item instanceof YTDLPAudioPlaylist playlist) {
4444
audioPlayer.enqueue(playlist);
45-
event.reply(playlist.getTracks().size() + " tracks enqueued").setEphemeral(true).queue();
45+
event.reply(playlist.getTracks().size() + " tracks enqueued " +
46+
"from playlist '" + playlist.getName() + "'").setEphemeral(true).queue();
4647
}
4748
}
4849
case "skip" -> {
@@ -57,6 +58,8 @@ public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
5758
AudioTrackInformation information = audioTrack.getInformation();
5859
embedBuilder.addField(index + ". Track",
5960
information.getTitle() + " - " + information.getCreator(), false);
61+
if (index == 10)
62+
break;
6063
index++;
6164
}
6265

main/src/main/java/com/shirkanesi/magmaplayer/AbstractAudioPlaylist.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.shirkanesi.magmaplayer;
22

3+
import lombok.Getter;
4+
35
import java.util.ArrayList;
46
import java.util.List;
57

68
public abstract class AbstractAudioPlaylist implements AudioPlaylist {
79

10+
@Getter
11+
protected String name;
812
protected List<AudioTrack> tracks = new ArrayList<>();
913

1014
@Override

main/src/main/java/com/shirkanesi/magmaplayer/ytdlp/YTDLPAudioPlaylist.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.shirkanesi.magmaplayer.AbstractAudioPlaylist;
44
import com.shirkanesi.magmaplayer.exception.AudioTrackPullException;
5+
import com.shirkanesi.magmaplayer.util.FormatUtils;
56

67
import java.io.BufferedReader;
78
import java.io.IOException;
@@ -11,7 +12,8 @@
1112

1213
public class YTDLPAudioPlaylist extends AbstractAudioPlaylist implements YTDLPAudioItem {
1314

14-
private static final String LOAD_PLAYLIST_COMMAND = "yt-dlp --flat-playlist --print \"%(url)s\"";
15+
private static final String[] LOAD_PLAYLIST_COMMAND = {"yt-dlp", "--no-download", "--flat-playlist", "--print",
16+
"\"NAME:%%(playlist_title)s\"", "--print", "\"%%(url)s\"", "\"%s\""};
1517

1618
private final String url;
1719

@@ -22,7 +24,7 @@ public YTDLPAudioPlaylist(String url) {
2224
@Override
2325
public void load() {
2426
try {
25-
List<String> urls = getPlaylistTracks();
27+
List<String> urls = getPlaylistTracksAndSetName();
2628

2729
for (String url : urls) {
2830
tracks.add(new YTDLPAudioTrack(url));
@@ -32,8 +34,9 @@ public void load() {
3234
}
3335
}
3436

35-
private List<String> getPlaylistTracks() throws IOException {
36-
Process process = Runtime.getRuntime().exec(LOAD_PLAYLIST_COMMAND + " " + url);
37+
private List<String> getPlaylistTracksAndSetName() throws IOException {
38+
final String[] args = FormatUtils.format(LOAD_PLAYLIST_COMMAND, this.url);
39+
Process process = Runtime.getRuntime().exec(args);
3740
try {
3841
process.waitFor();
3942
} catch (InterruptedException e) {
@@ -46,6 +49,8 @@ private List<String> getPlaylistTracks() throws IOException {
4649
while ((line = bufferedReader.readLine()) != null) {
4750
if (line.startsWith("http")) {
4851
urls.add(line);
52+
} else if (line.startsWith("NAME:")) {
53+
this.name = line.split("NAME:", 2)[1];
4954
}
5055
}
5156
}

0 commit comments

Comments
 (0)