Skip to content

Conversation

Lioncat6
Copy link

@Lioncat6 Lioncat6 commented Oct 13, 2025

#5
#35

SoundCloud currently implements the following:

  • Looking up releases as a set/playlist or track
    • Unlike Bandcamp, there is no way to determine if a track has a parent playlist/album with the v1 API
  • Getting track ISRC, duration, author, and region information (Though, I haven't found a track, yet that has a set region restriction)
  • Track/Playlist publish date, falling back to the creation date if not present
  • Track and album artwork
  • Getting playlist type
  • Determining playlist label from tracks

@Lioncat6
Copy link
Author

Lioncat6 commented Oct 13, 2025

Looking at #35, and I should see about adding CC license detection

As for GTINs, those are only available when using the v2 API, which requires a user oath and client ID, as opposed to an application auth. At the moment, this implementation only uses the public v1 API, lacking support for proper label, copyright, and barcode information.

@Lioncat6
Copy link
Author

I also still need to add tests to SoundCloud, it seems.

image

@Lioncat6
Copy link
Author

I have also determined that some releases simply can not be fetched with the v1 API, for example: https://soundcloud.com/stevie-wonder-official/sets/so-what-the-fuss-3

@kellnerd kellnerd added feature New feature or request provider Metadata provider labels Oct 14, 2025
Copy link
Owner

@kellnerd kellnerd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for looking into SoundCloud!
Although this is still a draft and I haven't made an account to obtain API credentials yet, I couldn't resist to review the code once.
I have left a few comments but I guess there will be more once I get to play with the v1 (and maybe v2) API.

P.S. CI is complaining about code formatting, see here how to reproduce that locally.

Comment on lines +52 to +65
readonly supportedUrls = new URLPattern({
hostname: 'soundcloud.com',
pathname: '/:artist/sets/:title',
});

readonly trackUrlPattern = new URLPattern({
hostname: 'soundcloud.com',
pathname: '/:artist/:title',
});

readonly artistUrlPattern = new URLPattern({
hostname: 'soundcloud.com',
pathname: '/:artist',
});
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once we have test cases for URL extraction, we can try to combine these URL patterns.

Comment on lines +140 to +141
// MB has special handling for Bandcamp artist URLs
return ['discography page'];
Copy link
Owner

@kellnerd kellnerd Oct 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to check which link types MB uses for SC, but this looks like a leftover from BC? (special URL handling is here)

Comment on lines +233 to +235
constructReleaseApiUrl(): URL | undefined {
return undefined;
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method should contain parts of the logic which are currently included in getRawRelease.
It is also used to construct the API URL which is shown in the provider section of the release lookup page.

parseSoundcloudTimestamp(timestamp: string): Date | undefined {
const segments = timestamp.split(' ');
if (segments.length === 3) {
// Convert "2025/07/30 07:13:31 +0000" to "2025-07-30T07:13:31+00:00"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to look at some examples, but if these are always in UTC we could simply extract day, month and year and don't have to worry about the rest.

};

override readonly features: FeatureQualityMap = {
'cover size': 500,
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was able to obtain bigger images (about 1500px) with Image Max URL, so we should check that again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request provider Metadata provider

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants