Skip to content

Commit 82d1138

Browse files
authored
Merge pull request #607 from TeamNewPipe/bandcamp_radio_segments
[Bandcamp] Add Radio stream segments
2 parents 55e0f8e + 318cec7 commit 82d1138

3 files changed

Lines changed: 34 additions & 0 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
22

3+
import com.grack.nanojson.JsonArray;
34
import com.grack.nanojson.JsonObject;
45
import com.grack.nanojson.JsonParser;
56
import com.grack.nanojson.JsonParserException;
@@ -15,6 +16,7 @@
1516
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
1617
import org.schabi.newpipe.extractor.stream.AudioStream;
1718
import org.schabi.newpipe.extractor.stream.Description;
19+
import org.schabi.newpipe.extractor.stream.StreamSegment;
1820

1921
import javax.annotation.Nonnull;
2022
import javax.annotation.Nullable;
@@ -123,6 +125,23 @@ public List<AudioStream> getAudioStreams() {
123125
return list;
124126
}
125127

128+
@Nonnull
129+
@Override
130+
public List<StreamSegment> getStreamSegments() throws ParsingException {
131+
final JsonArray tracks = showInfo.getArray("tracks");
132+
final List<StreamSegment> segments = new ArrayList<>(tracks.size());
133+
for (final Object t : tracks) {
134+
final JsonObject track = (JsonObject) t;
135+
final StreamSegment segment = new StreamSegment(
136+
track.getString("title"), track.getInt("timecode"));
137+
// "track art" is the track's album cover
138+
segment.setPreviewUrl(getImageUrl(track.getLong("track_art_id"), true));
139+
segment.setChannelName(track.getString("artist"));
140+
segments.add(segment);
141+
}
142+
return segments;
143+
}
144+
126145
@Nonnull
127146
@Override
128147
public String getLicence() {

extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamSegment.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ public class StreamSegment implements Serializable {
1010
*/
1111
private String title;
1212

13+
/**
14+
* The channel or creator linked to this segment
15+
*/
16+
private String channelName;
17+
1318
/**
1419
* Timestamp of the starting point in seconds
1520
*/
@@ -49,6 +54,15 @@ public void setStartTimeSeconds(final int startTimeSeconds) {
4954
this.startTimeSeconds = startTimeSeconds;
5055
}
5156

57+
@Nullable
58+
public String getChannelName() {
59+
return channelName;
60+
}
61+
62+
public void setChannelName(@Nullable final String channelName) {
63+
this.channelName = channelName;
64+
}
65+
5266
@Nullable
5367
public String getUrl() {
5468
return url;

extractor/src/test/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampRadioStreamExtractorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public void testGettingCorrectStreamExtractor() throws ExtractionException {
5454
@Override public StreamType expectedStreamType() { return StreamType.AUDIO_STREAM; }
5555
@Override public StreamingService expectedService() { return Bandcamp; }
5656
@Override public String expectedUploaderName() { return "Andrew Jervis"; }
57+
@Override public int expectedStreamSegmentsCount() { return 30; }
5758

5859
@Test(expected = ContentNotSupportedException.class)
5960
public void testGetUploaderUrl() throws ParsingException {

0 commit comments

Comments
 (0)