Skip to content

Commit 90a53e6

Browse files
committed
Added env variables to shell events (#368)
1 parent cf0774a commit 90a53e6

1 file changed

Lines changed: 15 additions & 9 deletions

File tree

player/src/main/java/xyz/gianlu/librespot/player/ShellEvents.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ public ShellEvents(@NotNull Configuration conf) {
4040
this.conf = conf;
4141
}
4242

43-
private void exec(String command) {
43+
private void exec(String command, String... envp) {
4444
if (!this.conf.enabled)
4545
return;
4646

4747
if (command == null || command.trim().isEmpty())
4848
return;
4949

5050
try {
51-
int exitCode = runtime.exec(command.trim()).waitFor();
51+
int exitCode = runtime.exec(command.trim(), envp).waitFor();
5252
LOGGER.trace("Executed shell command: {} -> {}", command, exitCode);
5353
} catch (IOException | InterruptedException ex) {
5454
LOGGER.error("Failed executing command: {}", command, ex);
@@ -57,12 +57,16 @@ private void exec(String command) {
5757

5858
@Override
5959
public void onContextChanged(@NotNull Player player, @NotNull String newUri) {
60-
exec(conf.onContextChanged);
60+
exec(conf.onContextChanged, "CONTEXT_URI=" + newUri);
6161
}
6262

6363
@Override
6464
public void onTrackChanged(@NotNull Player player, @NotNull PlayableId id, @Nullable MetadataWrapper metadata) {
65-
exec(conf.onTrackChanged);
65+
exec(conf.onTrackChanged, "TRACK_URI=" + id.toSpotifyUri(),
66+
"NAME=" + (metadata == null ? "" : metadata.getName()),
67+
"ARTIST=" + (metadata == null ? "" : metadata.getArtist()),
68+
"ALBUM=" + (metadata == null ? "" : metadata.getAlbumName()),
69+
"DURATION=" + (metadata == null ? "" : metadata.duration()));
6670
}
6771

6872
@Override
@@ -72,22 +76,24 @@ public void onPlaybackEnded(@NotNull Player player) {
7276

7377
@Override
7478
public void onPlaybackPaused(@NotNull Player player, long trackTime) {
75-
exec(conf.onPlaybackPaused);
79+
exec(conf.onPlaybackPaused, "POSITION=" + trackTime);
7680
}
7781

7882
@Override
7983
public void onPlaybackResumed(@NotNull Player player, long trackTime) {
80-
exec(conf.onPlaybackResumed);
84+
exec(conf.onPlaybackResumed, "POSITION=" + trackTime);
8185
}
8286

8387
@Override
8488
public void onTrackSeeked(@NotNull Player player, long trackTime) {
85-
exec(conf.onTrackSeeked);
89+
exec(conf.onTrackSeeked, "POSITION=" + trackTime);
8690
}
8791

8892
@Override
8993
public void onMetadataAvailable(@NotNull Player player, @NotNull MetadataWrapper metadata) {
90-
exec(conf.onMetadataAvailable);
94+
exec(conf.onMetadataAvailable, "TRACK_URI=" + metadata.id.toSpotifyUri(),
95+
"NAME=" + metadata.getName(), "ARTIST=" + metadata.getArtist(),
96+
"ALBUM=" + metadata.getAlbumName(), "DURATION=" + metadata.duration());
9197
}
9298

9399
@Override
@@ -101,7 +107,7 @@ public void onInactiveSession(@NotNull Player player, boolean timeout) {
101107

102108
@Override
103109
public void onVolumeChanged(@NotNull Player player, @Range(from = 0, to = 1) float volume) {
104-
exec(conf.onVolumeChanged);
110+
exec(conf.onVolumeChanged, "VOLUME=" + Math.round(volume * 100f));
105111
}
106112

107113
@Override

0 commit comments

Comments
 (0)