Skip to content

Commit 83b12ba

Browse files
authored
Merge pull request #1317 from AudricV/soundcloud-drm-free-aac-160k
[Soundcloud] Add support for AAC 160k unprotected stream and update Creative Commons stream test
2 parents 9e0fdf9 + 7dc7b06 commit 83b12ba

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,9 @@ private void extractAudioStreams(@Nonnull final JsonArray transcodings,
240240
} else if (preset.contains("opus")) {
241241
builder.setMediaFormat(MediaFormat.OPUS);
242242
builder.setAverageBitrate(64);
243-
builder.setDeliveryMethod(DeliveryMethod.HLS);
243+
} else if (preset.contains("aac_160k")) {
244+
builder.setMediaFormat(MediaFormat.M4A);
245+
builder.setAverageBitrate(160);
244246
} else {
245247
// Unknown format, skip to the next audio stream
246248
return;

extractor/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamExtractorTest.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -141,48 +141,47 @@ public void testRelatedItems() throws Exception {
141141
@Override public String expectedCategory() { return "Dance"; }
142142
}
143143

144-
public static class CreativeCommonsPlaysWellWithOthers extends DefaultStreamExtractorTest {
145-
private static final String ID = "plays-well-with-others-ep-2-what-do-an-army-of-ants-and-an-online-encyclopedia-have-in-common";
144+
static class CreativeCommonsOpenMindsEp21 extends DefaultStreamExtractorTest {
145+
private static final String ID = "open-minds-ep-21-dr-beth-harris-and-dr-steven-zucker-of-smarthistory";
146146
private static final String UPLOADER = SOUNDCLOUD + "wearecc";
147147
private static final int TIMESTAMP = 69;
148148
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
149149
private static StreamExtractor extractor;
150150

151151
@BeforeAll
152-
public static void setUp() throws Exception {
152+
static void setUp() throws Exception {
153153
NewPipe.init(DownloaderTestImpl.getInstance());
154154
extractor = SoundCloud.getStreamExtractor(URL);
155155
extractor.fetchPage();
156156
}
157157

158158
@Override public StreamExtractor extractor() { return extractor; }
159159
@Override public StreamingService expectedService() { return SoundCloud; }
160-
@Override public String expectedName() { return "Plays Well with Others, Ep 2: What Do an Army of Ants and an Online Encyclopedia Have in Common?"; }
161-
@Override public String expectedId() { return "597253485"; }
160+
@Override public String expectedName() { return "Open Minds, Ep 21: Dr. Beth Harris and Dr. Steven Zucker of Smarthistory"; }
161+
@Override public String expectedId() { return "1356023209"; }
162162
@Override public String expectedUrlContains() { return UPLOADER + "/" + ID; }
163163
@Override public String expectedOriginalUrlContains() { return URL; }
164164

165165
@Override public StreamType expectedStreamType() { return StreamType.AUDIO_STREAM; }
166166
@Override public String expectedUploaderName() { return "Creative Commons"; }
167167
@Override public String expectedUploaderUrl() { return UPLOADER; }
168-
@Override public List<String> expectedDescriptionContains() { return Arrays.asList("Stigmergy is a mechanism of indirect coordination",
169-
"All original content in Plays Well with Others is available under a Creative Commons BY license."); }
170-
@Override public long expectedLength() { return 1400; }
168+
@Override public List<String> expectedDescriptionContains() {
169+
return Arrays.asList("Smarthistory is a center for public art history",
170+
"experts who want to share their knowledge with learners around the world",
171+
"Available for use under the CC BY 3.0 license"); }
172+
@Override public long expectedLength() { return 1500; }
171173
@Override public long expectedTimestamp() { return TIMESTAMP; }
172-
@Override public long expectedViewCountAtLeast() { return 27000; }
173-
@Nullable @Override public String expectedUploadDate() { return "2019-03-28 13:36:18.000"; }
174-
@Nullable @Override public String expectedTextualUploadDate() { return "2019-03-28 13:36:18"; }
175-
@Override public long expectedLikeCountAtLeast() { return 25; }
174+
@Override public long expectedViewCountAtLeast() { return 15000; }
175+
@Nullable @Override public String expectedUploadDate() { return "2022-10-03 18:49:49.000"; }
176+
@Nullable @Override public String expectedTextualUploadDate() { return "2022-10-03 18:49:49"; }
177+
@Override public long expectedLikeCountAtLeast() { return 10; }
176178
@Override public long expectedDislikeCountAtLeast() { return -1; }
179+
@Override public boolean expectedHasRelatedItems() { return false; }
177180
@Override public boolean expectedHasVideoStreams() { return false; }
178181
@Override public boolean expectedHasSubtitles() { return false; }
179182
@Override public boolean expectedHasFrames() { return false; }
180183
@Override public int expectedStreamSegmentsCount() { return 0; }
181184
@Override public String expectedLicence() { return "cc-by"; }
182-
@Override public String expectedCategory() { return "Podcast"; }
183-
@Override public List<String> expectedTags() {
184-
return Arrays.asList("ants", "collaboration", "creative commons", "stigmergy", "storytelling", "wikipedia");
185-
}
186185

187186
@Override
188187
@Test
@@ -205,7 +204,7 @@ public void testAudioStreams() throws Exception {
205204
if (deliveryMethod == DeliveryMethod.PROGRESSIVE_HTTP) {
206205
// Assert it's a MP3 128 kbps media URL which comes from a progressive
207206
// SoundCloud CDN
208-
ExtractorAsserts.assertContains("-media.sndcdn.com/bKOA7Pwbut93.128.mp3",
207+
ExtractorAsserts.assertContains("-media.sndcdn.com/cyaz0oXJYbdt.128.mp3",
209208
mediaUrl);
210209
} else if (deliveryMethod == DeliveryMethod.HLS) {
211210
// Assert it's a MP3 128 kbps media HLS playlist URL which comes from an HLS

0 commit comments

Comments
 (0)