Skip to content

Draft of Bandcamp Sync#238

Closed
subdavis wants to merge 5 commits intopSpitzner:mainfrom
subdavis:main
Closed

Draft of Bandcamp Sync#238
subdavis wants to merge 5 commits intopSpitzner:mainfrom
subdavis:main

Conversation

@subdavis
Copy link

@subdavis subdavis commented Dec 3, 2025

fixes #237 (See the demo video)

This is just a draft, so please don't mind the mess. It's mainly to give you an idea of the scale and type of changes. IMO they're pretty well isolated from the rest of the code.

It looks like a lot, but there are only a couple of files with any real substance

  • backend/beets_flask/bandcamp/sync.py (This one is by far the most important and complex)
  • backend/beets_flask/server/routes/bandcamp.py
  • backend/beets_flask/server/websocket/pubsub.py

Frontend

  • frontend/src/components/bandcamp/BandcampSyncModal.tsx
  • frontend/src/routes/inbox/index.tsx

@github-actions
Copy link

github-actions bot commented Dec 3, 2025

Thank you for the PR! The changelog has not been updated, so here is a friendly reminder to check if you need to add an entry.

title="Total Runtime"
icon={<TimerIcon />}
value={humanizeDuration(libraryStats.runtime)}
value={humanizeDuration(libraryStats.runtime ?? 0)}
Copy link
Author

Choose a reason for hiding this comment

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

This was a bug on startup: runtime is nullable.

@semohr
Copy link
Collaborator

semohr commented Dec 3, 2025

Hi Brandon,

Thank you so much for your contribution!

I’ll take a closer look over the weekend. At first glance, it looks very promising. We might consider generalizing and abstracting some of the ideas here to enable more potential plugin integrations in the future.

Overall, we’re definitely not against this and are genuinely happy when people make our project their own. Your effort is much appreciated!

@pSpitzner
Copy link
Owner

Hi Brandon,

wanted to chime in, thanks for the praise and the PR <3
I just talked to @semohr, and we'd love to merge this once it is ready.

Likely after the 2.0 release is a good time, once we have the config schema validation in place #224 and switched to the debian base image #219. We will think a bit more about plugin architecture until then.

best,
p

@subdavis
Copy link
Author

subdavis commented Dec 6, 2025

After a bit more consideration, I've decided that I think this will be better to keep separate. I extracted my desired feature to its own standalone service: https://github.com/subdavis/bandcamp-sync-flask

That way beets-flask can focus on being a really good diretory-to-beets import tool.

@subdavis subdavis closed this Dec 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Demo: Bandcamp purchase integration in beets-flask

3 participants