Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ public void onPlaybackResumed(@NotNull Player player, long trackTime) {
dispatch(obj);
}

@Override
public void onPlaybackFailed(@NotNull Player player, Exception e) {
JsonObject obj = new JsonObject();
obj.addProperty("event", "playbackFailed");
obj.addProperty("exception", e.getMessage());
dispatch(obj);
}

@Override
public void onTrackSeeked(@NotNull Player player, long trackTime) {
JsonObject obj = new JsonObject();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ public ShellEvents.Configuration toEventsShell() {
.setOnPlaybackEnded(config.get("shell.onPlaybackEnded"))
.setOnPlaybackPaused(config.get("shell.onPlaybackPaused"))
.setOnPlaybackResumed(config.get("shell.onPlaybackResumed"))
.setOnPlaybackFailed(config.get("shell.onPlaybackFailed"))
.setOnTrackSeeked(config.get("shell.onTrackSeeked"))
.setOnMetadataAvailable(config.get("shell.onMetadataAvailable"))
.setOnVolumeChanged(config.get("shell.onVolumeChanged"))
Expand Down
12 changes: 12 additions & 0 deletions player/src/main/java/xyz/gianlu/librespot/player/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,7 @@ public void finishedLoading(@NotNull MetadataWrapper metadata) {

@Override
public void loadingError(@NotNull Exception ex) {
events.playbackFailed(ex);
if (ex instanceof PlayableContentFeeder.ContentRestrictedException) {
LOGGER.error("Can't load track (content restricted).", ex);
} else {
Expand Down Expand Up @@ -871,6 +872,8 @@ public interface EventsListener {

void onPlaybackResumed(@NotNull Player player, long trackTime);

void onPlaybackFailed(@NotNull Player player, Exception e);

void onTrackSeeked(@NotNull Player player, long trackTime);

void onMetadataAvailable(@NotNull Player player, @NotNull MetadataWrapper metadata);
Expand Down Expand Up @@ -1001,6 +1004,10 @@ public void onPlaybackResumed(@NotNull Player player, long trackTime) {
onMetadataAvailable(player, metadata);
}

@Override
public void onPlaybackFailed(@NotNull Player player, Exception e) {
}

@Override
public void onTrackSeeked(@NotNull Player player, long trackTime) {
dacpPipe.sendPipeFlush();
Expand Down Expand Up @@ -1075,6 +1082,11 @@ void playbackResumed() {
executorService.execute(() -> l.onPlaybackResumed(Player.this, trackTime));
}

void playbackFailed(Exception ex) {
for (EventsListener l : new ArrayList<>(listeners))
executorService.execute(() -> l.onPlaybackFailed(Player.this, ex));
}

void contextChanged() {
String uri = state.getContextUri();
if (uri == null) return;
Expand Down
17 changes: 15 additions & 2 deletions player/src/main/java/xyz/gianlu/librespot/player/ShellEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@ public void onPlaybackResumed(@NotNull Player player, long trackTime) {
exec(conf.onPlaybackResumed, "POSITION=" + trackTime);
}

@Override
public void onPlaybackFailed(@NotNull Player player, Exception e) {
exec(conf.onPlaybackFailed, "EXCEPTION=" + e.getMessage());
}

@Override
public void onTrackSeeked(@NotNull Player player, long trackTime) {
exec(conf.onTrackSeeked, "POSITION=" + trackTime);
Expand Down Expand Up @@ -147,6 +152,7 @@ public static class Configuration {
public final String onPlaybackEnded;
public final String onPlaybackPaused;
public final String onPlaybackResumed;
public final String onPlaybackFailed;
public final String onTrackSeeked;
public final String onMetadataAvailable;
public final String onVolumeChanged;
Expand All @@ -158,7 +164,7 @@ public static class Configuration {
public final String onFinishedLoading;

public Configuration(boolean enabled, boolean executeWithBash, String onContextChanged, String onTrackChanged, String onPlaybackEnded, String onPlaybackPaused,
String onPlaybackResumed, String onTrackSeeked, String onMetadataAvailable, String onVolumeChanged,
String onPlaybackResumed, String onPlaybackFailed, String onTrackSeeked, String onMetadataAvailable, String onVolumeChanged,
String onInactiveSession, String onPanicState, String onConnectionDropped, String onConnectionEstablished,
String onStartedLoading, String onFinishedLoading) {
this.enabled = enabled;
Expand All @@ -168,6 +174,7 @@ public Configuration(boolean enabled, boolean executeWithBash, String onContextC
this.onPlaybackEnded = onPlaybackEnded;
this.onPlaybackPaused = onPlaybackPaused;
this.onPlaybackResumed = onPlaybackResumed;
this.onPlaybackFailed = onPlaybackFailed;
this.onTrackSeeked = onTrackSeeked;
this.onMetadataAvailable = onMetadataAvailable;
this.onVolumeChanged = onVolumeChanged;
Expand All @@ -187,6 +194,7 @@ public static class Builder {
private String onPlaybackEnded = "";
private String onPlaybackPaused = "";
private String onPlaybackResumed = "";
private String onPlaybackFailed = "";
private String onTrackSeeked = "";
private String onMetadataAvailable = "";
private String onVolumeChanged = "";
Expand Down Expand Up @@ -235,6 +243,11 @@ public Builder setOnPlaybackResumed(String command) {
return this;
}

public Builder setOnPlaybackFailed(String command) {
this.onPlaybackFailed = command;
return this;
}

public Builder setOnTrackSeeked(String command) {
this.onTrackSeeked = command;
return this;
Expand Down Expand Up @@ -283,7 +296,7 @@ public Builder setOnFinishedLoading(String onFinishedLoading) {
@NotNull
public Configuration build() {
return new Configuration(enabled, executeWithBash, onContextChanged, onTrackChanged, onPlaybackEnded, onPlaybackPaused, onPlaybackResumed,
onTrackSeeked, onMetadataAvailable, onVolumeChanged, onInactiveSession, onPanicState, onConnectionDropped, onConnectionEstablished,
onPlaybackFailed, onTrackSeeked, onMetadataAvailable, onVolumeChanged, onInactiveSession, onPanicState, onConnectionDropped, onConnectionEstablished,
onStartedLoading, onFinishedLoading);
}
}
Expand Down
1 change: 1 addition & 0 deletions player/src/main/resources/default.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ onTrackChanged = ""
onPlaybackEnded = ""
onPlaybackPaused = ""
onPlaybackResumed = ""
onPlaybackFailed = ""
onTrackSeeked = ""
onMetadataAvailable = ""
onVolumeChanged = ""
Expand Down