Skip to content

seed Bandcamp relationship types for recording URLs #95

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
UltimateRiff opened this issue Mar 21, 2025 · 4 comments
Open

seed Bandcamp relationship types for recording URLs #95

UltimateRiff opened this issue Mar 21, 2025 · 4 comments
Labels
Bandcamp feature New feature or request seeding MusicBrainz seeding

Comments

@UltimateRiff
Copy link

UltimateRiff commented Mar 21, 2025

related to #37, it'd be great to seed relationship types for Bandcamp URLs (stream for free, download for free, and purchase for download), if the Bandcamp API allows for it.

if you need some examples:

@UltimateRiff
Copy link
Author

extra example, tracks can be paid only even when the release is free or paid, like https://painesvillesquarerecords.bandcamp.com/track/no-game

@kellnerd kellnerd added feature New feature or request Bandcamp seeding MusicBrainz seeding labels Mar 21, 2025
@kellnerd
Copy link
Owner

For the other providers it is much easier to fill the link types automatically (for recordings as well as artists and labels), because there is usually only one option available (for Deezer, Spotify, Tidal) or one option which is always correct (for Apple Music, Beatport).
So strictly speaking, the user still has to check whether Apple Music / Beatport links should have the download type in addition to the streaming type, but there isn't really a meaningful way to do this of which I'm aware.

Bandcamp on the other hand has its own special link type "bandcamp" for artists and labels, while it offers the three choices for recordings and releases. While it is technically possible to fill these correctly, it would require doing one additional request per track for accurate results.
Since Bandcamp doesn't provide an API, this would mean scraping more HTML pages which is very unlikely to become a default behavior as it would significantly slow down the release actions page.

Maybe we could have it behind an option, but I'm not convinced this is worth it just for the link types, the only additional data which we can only get from track pages are ISRCs (which would be useful if there is no other provider) and stuff like lyrics or download links which we shouldn't use.

@UltimateRiff
Copy link
Author

if we have to rely on HTML scraping, we could prolly just scrape on the release page then? at least for stream for free, possibly for the other two too. on the The Heavy example, it only has play buttons for the streamable tracks (at least on desktop, mobile does have different formatting, tho I think it's still the same HTML page)

https://the-heavy.bandcamp.com/album/the-house-that-dirt-built

there's also buy links that show up on a hover, I'm away from my PC right now, so I don't know if similar is true for free download only releases like this one: https://papercranecollective.bandcamp.com/album/paper-crane-vol-1

either way, it should be simple for single track releases (/track/ URLs), since the data has already been scraped for the MusicBrainz release (tho this is of course the easiest situation to just do it manually, lol)

I'll take a look on my Bandcamp artist to see if there's any other combinations (like free download only tracks on a pay what you want release or something)

@Aerozol
Copy link

Aerozol commented May 10, 2025

Rather than scraping the pages we could let the user pre-set the option/s, on the Harmony page.

For instance (if Bandcamp is detected as one of the providers):

Image

Note: I also added a "Recording Actions" title for the section, which seems the tidiest way to show what the options relate to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bandcamp feature New feature or request seeding MusicBrainz seeding
Projects
None yet
Development

No branches or pull requests

3 participants