Skip to content

Commit f3c5310

Browse files
committed
Working radio
1 parent 28a256e commit f3c5310

4 files changed

Lines changed: 13 additions & 8 deletions

File tree

core/src/main/java/xyz/gianlu/librespot/mercury/model/TrackId.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ public final class TrackId implements SpotifyId {
1717
private final String hexId;
1818

1919
private TrackId(@NotNull String hex) {
20-
this.hexId = hex;
20+
if (hex.length() == 32) this.hexId = hex;
21+
else if (hex.length() == 34 && hex.startsWith("00")) this.hexId = hex.substring(2);
22+
else throw new IllegalArgumentException("Illegal track id: " + hex);
2123
}
2224

2325
@NotNull

core/src/main/java/xyz/gianlu/librespot/player/Player.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,9 @@ public void finishedLoading(@NotNull TrackHandler handler, boolean play) {
218218
}
219219

220220
@Override
221-
public void loadingError(@NotNull TrackHandler handler, @NotNull Exception ex) {
221+
public void loadingError(@NotNull TrackHandler handler, @NotNull TrackId id, @NotNull Exception ex) {
222222
if (handler == trackHandler) {
223-
LOGGER.fatal("Failed loading track!", ex);
223+
LOGGER.fatal(String.format("Failed loading track, gid: %s", Utils.bytesToHex(id.getGid())), ex);
224224
state.setStatus(Spirc.PlayStatus.kPlayStatusStop);
225225
stateUpdated();
226226
} else if (handler == preloadTrackHandler) {

core/src/main/java/xyz/gianlu/librespot/player/StationProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ private void getNextPage() throws IOException {
7171
for (JsonElement elm : tracks) {
7272
JsonObject track = elm.getAsJsonObject();
7373
state.addTrack(Spirc.TrackRef.newBuilder()
74+
.setUri(track.get("uri").getAsString())
7475
.setGid(ByteString.copyFrom(TrackId.fromUri(track.get("uri").getAsString()).getGid()))
7576
.build());
7677
}

core/src/main/java/xyz/gianlu/librespot/player/TrackHandler.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ private void load(@NotNull TrackId id, boolean play, int pos) throws IOException
4242
StreamFeeder.LoadedStream stream = feeder.load(id, new StreamFeeder.VorbisOnlyAudioQuality(conf.preferredQuality()));
4343
track = stream.track;
4444

45-
LOGGER.info(String.format("Loading track, name: '%s', artists: '%s'", track.getName(), Utils.toString(track.getArtistList())));
45+
LOGGER.info(String.format("Loaded track, name: '%s', artists: '%s', gid: %s", track.getName(), Utils.toString(track.getArtistList()), Utils.bytesToHex(id.getGid())));
4646

4747
try {
4848
if (playerRunner != null) playerRunner.stop();
@@ -57,7 +57,7 @@ private void load(@NotNull TrackId id, boolean play, int pos) throws IOException
5757
if (play) playerRunner.play();
5858
} catch (PlayerRunner.PlayerException ex) {
5959
LOGGER.fatal("Failed starting playback!", ex);
60-
listener.loadingError(this, ex);
60+
listener.loadingError(this, id, ex);
6161
}
6262
}
6363

@@ -128,7 +128,7 @@ public enum Command {
128128
public interface Listener {
129129
void finishedLoading(@NotNull TrackHandler handler, boolean play);
130130

131-
void loadingError(@NotNull TrackHandler handler, @NotNull Exception ex);
131+
void loadingError(@NotNull TrackHandler handler, @NotNull TrackId track, @NotNull Exception ex);
132132

133133
void endOfTrack(@NotNull TrackHandler handler);
134134

@@ -145,10 +145,12 @@ public void run() {
145145
CommandBundle cmd = commands.take();
146146
switch (cmd.cmd) {
147147
case Load:
148+
TrackId id = (TrackId) cmd.args[0];
149+
148150
try {
149-
load((TrackId) cmd.args[0], (Boolean) cmd.args[1], (Integer) cmd.args[2]);
151+
load(id, (Boolean) cmd.args[1], (Integer) cmd.args[2]);
150152
} catch (IOException | MercuryClient.MercuryException ex) {
151-
listener.loadingError(TrackHandler.this, ex);
153+
listener.loadingError(TrackHandler.this, id, ex);
152154
}
153155
break;
154156
case Play:

0 commit comments

Comments
 (0)