Add Bandcamp Music Provider (#2871)
authorAlexey ALERT Rubashёff <alexey.rubasheff@gmail.com>
Thu, 15 Jan 2026 07:55:06 +0000 (09:55 +0200)
committerGitHub <noreply@github.com>
Thu, 15 Jan 2026 07:55:06 +0000 (08:55 +0100)
commit177d236840dc45a8ad4c7ad31ba4cd16d8555c30
tree71136eccd79cdcc0c5ce61662470cb9e3ea2d51d
parent2363f582294a09afb9576ccedca4c6c858df4573
Add Bandcamp Music Provider (#2871)

* bandcamp

* mypy, ruff

* fix provider stream details tests

* fix eol for icons

* final touch

* bump bandcamp-async-api to 0.0.3

* add BandcampMustBeLoggedInError support

- bump bandcamp-async-api to 0.0.4

* fix: PR review

- is_streaming_provider is now True
- catching and raising exceptions revamp
- remove redundant stream content type

* requirements_all.txt line endings

* fix: Add error handling for missing streaming links in BandcampProvider.

- Add error handling for missing streaming links in BandcampProvider.
- Enhance error handling and update test assertions for Bandcamp provider.

* fix: typing

* minor: specify the exact cookie name

* PR review fixes

- Remove search limit configuration.
- CONF_TOP_TRACKS_LIMIT moved to advanced config category
- Update test to use `DEFAULT_TOP_TRACKS_LIMIT` constant.

* PR review: reintroduced search limit, set it to 50
13 files changed:
music_assistant/providers/bandcamp/__init__.py [new file with mode: 0644]
music_assistant/providers/bandcamp/converters.py [new file with mode: 0644]
music_assistant/providers/bandcamp/icon.svg [new file with mode: 0644]
music_assistant/providers/bandcamp/icon_monochrome.svg [new file with mode: 0644]
music_assistant/providers/bandcamp/manifest.json [new file with mode: 0644]
requirements_all.txt
tests/providers/bandcamp/__init__.py [new file with mode: 0644]
tests/providers/bandcamp/fixtures/albums/album.json [new file with mode: 0644]
tests/providers/bandcamp/fixtures/artists/artist.json [new file with mode: 0644]
tests/providers/bandcamp/fixtures/tracks/track.json [new file with mode: 0644]
tests/providers/bandcamp/test_converters.py [new file with mode: 0644]
tests/providers/bandcamp/test_init.py [new file with mode: 0644]
tests/providers/bandcamp/test_provider.py [new file with mode: 0644]