Skip to content

Commit 8e6c000

Browse files
authored
Merge pull request #1388 from mjsir911/m/on-soundcloud-fixes
on.soundcloud fixes
2 parents 39b9482 + 5108cdd commit 8e6c000

34 files changed

Lines changed: 667 additions & 201 deletions

.mailmap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Marceline Sirabella <m@sirabella.org> <marco@sirabella.org>

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/linkHandler/SoundcloudStreamLinkHandlerFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ public final class SoundcloudStreamLinkHandlerFactory extends LinkHandlerFactory
1212
private static final SoundcloudStreamLinkHandlerFactory INSTANCE
1313
= new SoundcloudStreamLinkHandlerFactory();
1414

15+
private static final String ON_URL_PATTERN = "^https?://on\\.soundcloud\\.com/[0-9a-zA-Z]+$";
1516
private static final Pattern URL_PATTERN = Pattern.compile(
16-
"^https?://(?:www\\.|m\\.|on\\.)?"
17+
"^https?://(?:www\\.|m\\.)?"
1718
+ "soundcloud.com/[0-9a-z_-]+"
1819
+ "/(?!(?:tracks|albums|sets|reposts|followers|following)/?$)[0-9a-z_-]+/?(?:[#?].*)?$"
20+
+ "|" + ON_URL_PATTERN
1921
);
2022

2123
private static final Pattern API_URL_PATTERN = Pattern.compile(

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ void getIdForInvalidUrls(final String invalidUrl) {
4646
"309689103,https://soundcloud.com/liluzivert/15-ysl",
4747
"309689082,https://www.soundcloud.com/liluzivert/15-luv-scars-ko",
4848
"309689035,http://soundcloud.com/liluzivert/15-boring-shit",
49+
"309689035,http://m.soundcloud.com/liluzivert/15-boring-shit",
4950
"259273264,https://soundcloud.com/liluzivert/ps-qs-produced-by-don-cannon/",
5051
"294488599,http://www.soundcloud.com/liluzivert/secure-the-bag-produced-by-glohan-beats",
5152
"245710200,HtTpS://sOuNdClOuD.cOm/lIeuTeNaNt_rAe/bOtS-wAs-wOlLeN-wIr-tRinKeN",
@@ -54,7 +55,8 @@ void getIdForInvalidUrls(final String invalidUrl) {
5455
"294487684,https://soundcloud.com/liluzivert/blonde-brigitte-produced-manny-fresh#t=1:9",
5556
"294487428,https://soundcloud.com/liluzivert/today-produced-by-c-note#t=1m9s",
5657
"294487157,https://soundcloud.com/liluzivert/changed-my-phone-produced-by-c-note#t=1m09s",
57-
"44556776,https://soundcloud.com/kechuspider-sets-1/last-days"
58+
"44556776,https://soundcloud.com/kechuspider-sets-1/last-days",
59+
"1171484959,https://on.soundcloud.com/Z8uNsRy7lABhSBiGgq"
5860
})
5961
void getId(final String expectedId, final String url) throws ParsingException {
6062
assertEquals(expectedId, linkHandler.fromUrl(url).getId());
@@ -66,13 +68,15 @@ void getId(final String expectedId, final String url) throws ParsingException {
6668
"https://soundcloud.com/liluzivert/15-ysl",
6769
"https://www.soundcloud.com/liluzivert/15-luv-scars-ko",
6870
"http://soundcloud.com/liluzivert/15-boring-shit",
71+
"http://m.soundcloud.com/liluzivert/15-boring-shit",
6972
"http://www.soundcloud.com/liluzivert/secure-the-bag-produced-by-glohan-beats",
7073
"HtTpS://sOuNdClOuD.cOm/LiLuZiVeRt/In-O4-pRoDuCeD-bY-dP-bEaTz",
7174
"https://soundcloud.com/liluzivert/fresh-produced-by-zaytoven#t=69",
7275
"https://soundcloud.com/liluzivert/threesome-produced-by-zaytoven#t=1:09",
7376
"https://soundcloud.com/liluzivert/blonde-brigitte-produced-manny-fresh#t=1:9",
7477
"https://soundcloud.com/liluzivert/today-produced-by-c-note#t=1m9s",
75-
"https://soundcloud.com/liluzivert/changed-my-phone-produced-by-c-note#t=1m09s"
78+
"https://soundcloud.com/liluzivert/changed-my-phone-produced-by-c-note#t=1m09s",
79+
"https://on.soundcloud.com/Z8uNsRy7lABhSBiGgq"
7680
})
7781
void testAcceptUrl(final String url) throws ParsingException {
7882
assertTrue(linkHandler.acceptUrl(url));

extractor/src/test/resources/mocks/v1/org/schabi/newpipe/extractor/services/soundcloud/soundcloudstreamlinkhandlerfactory/generated_mock_0.json

Lines changed: 24 additions & 24 deletions
Large diffs are not rendered by default.

extractor/src/test/resources/mocks/v1/org/schabi/newpipe/extractor/services/soundcloud/soundcloudstreamlinkhandlerfactory/generated_mock_1.json

Lines changed: 46 additions & 19 deletions
Large diffs are not rendered by default.

extractor/src/test/resources/mocks/v1/org/schabi/newpipe/extractor/services/soundcloud/soundcloudstreamlinkhandlerfactory/generated_mock_10.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"request": {
33
"httpMethod": "GET",
4-
"url": "https://api-widget.soundcloud.com/resolve?url\u003dhttps%3A%2F%2Fsoundcloud.com%2Flieutenant_rae%2Fbots-was-wollen-wir-trinken\u0026format\u003djson\u0026client_id\u003dMoLbAg35TuqjYwWVtNIKyRPFScQGMOBY",
4+
"url": "https://api-widget.soundcloud.com/resolve?url\u003dhttps%3A%2F%2Fsoundcloud.com%2Fliluzivert%2Fps-qs-produced-by-don-cannon\u0026format\u003djson\u0026client_id\u003dMoLbAg35TuqjYwWVtNIKyRPFScQGMOBY",
55
"headers": {
66
"Accept-Language": [
77
"en-GB, en;q\u003d0.9"
@@ -26,7 +26,7 @@
2626
"application/json; charset\u003dutf-8"
2727
],
2828
"date": [
29-
"Sat, 12 Jul 2025 10:24:17 GMT"
29+
"Tue, 14 Oct 2025 11:59:26 GMT"
3030
],
3131
"referrer-policy": [
3232
"no-referrer"
@@ -41,13 +41,13 @@
4141
"Origin"
4242
],
4343
"via": [
44-
"1.1 3fc67c60d4a1440649d83c01918a9054.cloudfront.net (CloudFront)"
44+
"1.1 60b4a5085a39ab80fa3602a95fb5aa9e.cloudfront.net (CloudFront)"
4545
],
4646
"x-amz-cf-id": [
47-
"It3_L2XmgYjG8HNiXXZ5dQDh185tytf8zFNsBAcdFivCdAIKF67_Cg\u003d\u003d"
47+
"VQvNPic5wFWLEodWMtO76rV5sWu8JiV2U7iuvkeam3xm_U__SF1hCA\u003d\u003d"
4848
],
4949
"x-amz-cf-pop": [
50-
"FRA50-P2"
50+
"FRA60-P12"
5151
],
5252
"x-cache": [
5353
"Miss from cloudfront"
@@ -62,7 +62,7 @@
6262
"noindex"
6363
]
6464
},
65-
"responseBody": "{\"artwork_url\":\"https://i1.sndcdn.com/artworks-000146088343-lf04u1-large.jpg\",\"caption\":null,\"commentable\":true,\"comment_count\":78,\"created_at\":\"2016-02-06T09:41:04Z\",\"description\":\"I decided to upload something, might as well be this whew \",\"downloadable\":false,\"download_count\":0,\"duration\":308116,\"full_duration\":308116,\"embeddable_by\":\"all\",\"genre\":\"\",\"has_downloads_left\":false,\"id\":245710200,\"kind\":\"track\",\"label_name\":null,\"last_modified\":\"2022-05-05T13:13:03Z\",\"license\":\"all-rights-reserved\",\"likes_count\":1821,\"permalink\":\"bots-was-wollen-wir-trinken\",\"permalink_url\":\"https://soundcloud.com/lieutenant_rae/bots-was-wollen-wir-trinken\",\"playback_count\":178969,\"public\":true,\"publisher_metadata\":{\"id\":245710200,\"urn\":\"soundcloud:tracks:245710200\"},\"purchase_title\":null,\"purchase_url\":null,\"release_date\":null,\"reposts_count\":27,\"secret_token\":null,\"sharing\":\"public\",\"state\":\"finished\",\"streamable\":true,\"tag_list\":\"\",\"title\":\"Bots - Was Wollen Wir Trinken\",\"uri\":\"https://api.soundcloud.com/tracks/245710200\",\"urn\":\"soundcloud:tracks:245710200\",\"user_id\":124609575,\"visuals\":null,\"waveform_url\":\"https://wave.sndcdn.com/FJSbIfXLMZJu_m.json\",\"display_date\":\"2016-02-06T09:41:04Z\",\"media\":{\"transcodings\":[{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:245710200/ba217754-ed44-4b16-bc13-30052167cf91/stream/hls\",\"preset\":\"abr_sq\",\"duration\":308116,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/mpegurl\"},\"quality\":\"sq\",\"is_legacy_transcoding\":false},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:245710200/720408b0-7575-4756-b3a8-8df9af21a499/stream/hls\",\"preset\":\"mp3_0_0\",\"duration\":308116,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/mpeg\"},\"quality\":\"sq\",\"is_legacy_transcoding\":true},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:245710200/720408b0-7575-4756-b3a8-8df9af21a499/stream/progressive\",\"preset\":\"mp3_0_0\",\"duration\":308116,\"snipped\":false,\"format\":{\"protocol\":\"progressive\",\"mime_type\":\"audio/mpeg\"},\"quality\":\"sq\",\"is_legacy_transcoding\":true},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:245710200/5629a779-6291-4819-887e-b933d685fd8f/stream/hls\",\"preset\":\"opus_0_0\",\"duration\":308116,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/ogg; codecs\u003d\\\"opus\\\"\"},\"quality\":\"sq\",\"is_legacy_transcoding\":true}]},\"station_urn\":\"soundcloud:system-playlists:track-stations:245710200\",\"station_permalink\":\"track-stations:245710200\",\"track_authorization\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJnZW8iOiJERSIsInN1YiI6IiIsInJpZCI6ImQxOTA4MWYwLTYwZjQtNGQyOC04MWM3LTdmMzFlZjhlNDYxMyIsImlhdCI6MTc1MjMxNTg1N30.gbN2m9ngaYCllpT01oip4HUfbm5cRT_V929HRfdZCFU\",\"monetization_model\":\"BLACKBOX\",\"policy\":\"MONETIZE\",\"user\":{\"avatar_url\":\"https://i1.sndcdn.com/avatars-000562551450-6x6ccd-large.jpg\",\"city\":null,\"comments_count\":0,\"country_code\":null,\"created_at\":\"2014-11-24T23:13:44Z\",\"creator_subscriptions\":[{\"product\":{\"id\":\"free\"}}],\"creator_subscription\":{\"product\":{\"id\":\"free\"}},\"description\":null,\"followers_count\":40,\"followings_count\":79,\"first_name\":\"\",\"full_name\":\"\",\"groups_count\":0,\"id\":124609575,\"kind\":\"user\",\"last_modified\":\"2019-01-07T19:12:11Z\",\"last_name\":\"\",\"likes_count\":150,\"playlist_likes_count\":20,\"permalink\":\"lieutenant_rae\",\"permalink_url\":\"https://soundcloud.com/lieutenant_rae\",\"playlist_count\":1,\"reposts_count\":null,\"track_count\":2,\"uri\":\"https://api.soundcloud.com/users/124609575\",\"urn\":\"soundcloud:users:124609575\",\"username\":\"lieutenant_rae\",\"verified\":false,\"visuals\":{\"urn\":\"soundcloud:users:124609575\",\"enabled\":true,\"visuals\":[{\"urn\":\"soundcloud:visuals:6776510\",\"entry_time\":0,\"visual_url\":\"https://i1.sndcdn.com/visuals-000124609575-dNMnIc-original.jpg\"}],\"tracking\":null},\"badges\":{\"pro\":false,\"creator_mid_tier\":false,\"pro_unlimited\":false,\"verified\":false},\"station_urn\":\"soundcloud:system-playlists:artist-stations:124609575\",\"station_permalink\":\"artist-stations:124609575\",\"date_of_birth\":null}}",
66-
"latestUrl": "https://api-widget.soundcloud.com/resolve?url\u003dhttps%3A%2F%2Fsoundcloud.com%2Flieutenant_rae%2Fbots-was-wollen-wir-trinken\u0026format\u003djson\u0026client_id\u003dMoLbAg35TuqjYwWVtNIKyRPFScQGMOBY"
65+
"responseBody": "{\"artwork_url\":\"https://i1.sndcdn.com/artworks-000158348578-eh3zyq-large.jpg\",\"caption\":null,\"commentable\":true,\"comment_count\":5681,\"created_at\":\"2016-04-15T19:04:16Z\",\"description\":\"\",\"downloadable\":false,\"download_count\":0,\"duration\":221584,\"full_duration\":221617,\"embeddable_by\":\"all\",\"genre\":\"Hip-hop \u0026 Rap\",\"has_downloads_left\":false,\"id\":259273264,\"kind\":\"track\",\"label_name\":\"\",\"last_modified\":\"2024-01-22T02:55:01Z\",\"license\":\"all-rights-reserved\",\"likes_count\":1090235,\"permalink\":\"ps-qs-produced-by-don-cannon\",\"permalink_url\":\"https://soundcloud.com/liluzivert/ps-qs-produced-by-don-cannon\",\"playback_count\":96401369,\"public\":true,\"publisher_metadata\":{\"id\":259273264,\"urn\":\"soundcloud:tracks:259273264\",\"album_title\":\"\",\"publisher\":\"\",\"iswc\":\"\",\"upc_or_ean\":\"\",\"isrc\":\"USAT21601723\",\"p_line\":\"\",\"p_line_for_display\":\"℗ \",\"writer_composer\":\"\",\"release_title\":\"\"},\"purchase_title\":null,\"purchase_url\":null,\"release_date\":null,\"reposts_count\":54629,\"secret_token\":null,\"sharing\":\"public\",\"state\":\"finished\",\"streamable\":true,\"tag_list\":\"liluzi liluzivert generationnow cannon\",\"title\":\"Ps \u0026 Qs [Produced By Don Cannon]\",\"uri\":\"https://api.soundcloud.com/tracks/soundcloud%3Atracks%3A259273264\",\"urn\":\"soundcloud:tracks:259273264\",\"user_id\":10494998,\"visuals\":null,\"waveform_url\":\"https://wave.sndcdn.com/C2tvH3tSqxtp_m.json\",\"display_date\":\"2016-04-15T19:05:26Z\",\"media\":{\"transcodings\":[{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:259273264/2678886d-d654-4bd1-af28-e85f6326b2c8/stream/hls\",\"preset\":\"aac_160k\",\"duration\":221584,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/mp4; codecs\u003d\\\"mp4a.40.2\\\"\"},\"quality\":\"sq\",\"is_legacy_transcoding\":false},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:259273264/d07ef1f7-43f9-48d0-b55c-ba42f52de01c/stream/hls\",\"preset\":\"abr_sq\",\"duration\":221584,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/mpegurl\"},\"quality\":\"sq\",\"is_legacy_transcoding\":false},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:259273264/4dd37d74-fb8e-4c80-bbbd-5c290c3638f2/stream/hls\",\"preset\":\"mp3_0_1\",\"duration\":221571,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/mpeg\"},\"quality\":\"sq\",\"is_legacy_transcoding\":true},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:259273264/4dd37d74-fb8e-4c80-bbbd-5c290c3638f2/stream/progressive\",\"preset\":\"mp3_0_1\",\"duration\":221571,\"snipped\":false,\"format\":{\"protocol\":\"progressive\",\"mime_type\":\"audio/mpeg\"},\"quality\":\"sq\",\"is_legacy_transcoding\":true},{\"url\":\"https://api-widget.soundcloud.com/media/soundcloud:tracks:259273264/0893630c-6d7e-40d2-94f1-b3b4da9aedc0/stream/hls\",\"preset\":\"opus_0_0\",\"duration\":221545,\"snipped\":false,\"format\":{\"protocol\":\"hls\",\"mime_type\":\"audio/ogg; codecs\u003d\\\"opus\\\"\"},\"quality\":\"sq\",\"is_legacy_transcoding\":true}]},\"station_urn\":\"soundcloud:system-playlists:track-stations:259273264\",\"station_permalink\":\"track-stations:259273264\",\"track_authorization\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJnZW8iOiJERSIsInN1YiI6IiIsInJpZCI6IjM5NjdkZmViLWQ3NjYtNDdlNi04NDY5LTAxZDdlNjI1MmU2NyIsImlhdCI6MTc2MDQ0MzE2Nn0.iaKGSArrNfY24ps6GLt25PLp8Mmm3ptbUT-MoMi2Sx8\",\"monetization_model\":\"AD_SUPPORTED\",\"policy\":\"MONETIZE\",\"user\":{\"avatar_url\":\"https://i1.sndcdn.com/avatars-HHg5lbrLjzXE6lwk-NgFMAQ-large.jpg\",\"city\":\"PHILADELPHIA\",\"comments_count\":0,\"country_code\":\"US\",\"created_at\":\"2012-01-05T21:22:15Z\",\"creator_subscriptions\":[{\"product\":{\"id\":\"free\"}}],\"creator_subscription\":{\"product\":{\"id\":\"free\"}},\"description\":\"http://uzi.lnk.to/EA2\",\"followers_count\":3190773,\"followings_count\":0,\"first_name\":\"\",\"full_name\":\"\",\"groups_count\":0,\"id\":10494998,\"kind\":\"user\",\"last_modified\":\"2025-07-09T00:00:02Z\",\"last_name\":\"\",\"likes_count\":1,\"playlist_likes_count\":0,\"permalink\":\"liluzivert\",\"permalink_url\":\"https://soundcloud.com/liluzivert\",\"playlist_count\":27,\"reposts_count\":null,\"track_count\":325,\"uri\":\"https://api.soundcloud.com/users/soundcloud%3Ausers%3A10494998\",\"urn\":\"soundcloud:users:10494998\",\"username\":\"Lil Uzi Vert\",\"verified\":true,\"visuals\":{\"urn\":\"soundcloud:users:10494998\",\"enabled\":true,\"visuals\":[{\"urn\":\"soundcloud:visuals:227723214\",\"entry_time\":0,\"visual_url\":\"https://i1.sndcdn.com/visuals-000010494998-CibQJ6-original.jpg\"}],\"tracking\":null},\"badges\":{\"pro\":false,\"creator_mid_tier\":false,\"pro_unlimited\":false,\"verified\":true},\"station_urn\":\"soundcloud:system-playlists:artist-stations:10494998\",\"station_permalink\":\"artist-stations:10494998\",\"date_of_birth\":null}}",
66+
"latestUrl": "https://api-widget.soundcloud.com/resolve?url\u003dhttps%3A%2F%2Fsoundcloud.com%2Fliluzivert%2Fps-qs-produced-by-don-cannon\u0026format\u003djson\u0026client_id\u003dMoLbAg35TuqjYwWVtNIKyRPFScQGMOBY"
6767
}
6868
}

0 commit comments

Comments
 (0)