beets-bandcamp-sync
A beets plugin that finds albums missing from your local
library, downloads them from your Bandcamp collection, and imports them through
beets. Metadata is provided by the
beetcamp plugin.
This project uses Bandcamp's undocumented web endpoints and may need updates if Bandcamp changes them.
Requirements
- Python 3.10 or later
- beets 2.4 or later
- A Bandcamp account with downloadable album purchases
Installation
Install the plugin and its dependencies from PyPI into the same Python
environment as beets. With uv:
uv pip install beets-bandcamp-sync
Or with pip:
python -m pip install beets-bandcamp-sync
Enable both plugins and configure your Bandcamp username and cookie file in your beets configuration:
plugins: bandcamp bandcamp_sync
bandcamp_sync:
username: your_bandcamp_username
cookies: ~/.config/beets/bandcamp-cookies.txt
format: flac
The cookie file must use the Netscape cookies.txt format. Export cookies for
bandcamp.com from a browser session in which you are signed in. This file
contains authentication credentials: do not share or commit it, and restrict
its permissions where supported, for example with
chmod 600 ~/.config/beets/bandcamp-cookies.txt.
The configured format must be one Bandcamp offers for the release, such as
flac, mp3-320, or aiff-lossless.
Usage
Preview albums that would be imported:
beet bandcamp-sync --pretend
Download and import missing albums:
beet bandcamp-sync
The plugin considers an album present when its Bandcamp release URL is already stored as the album ID, or when beets identifies a strong local metadata match.
Development
Create a virtual environment with uv and install the project in editable mode:
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
ruff check .
ruff format --check .
pytest
python -m build
License
Distributed under the MIT License.
Metadata
Release files for beets-bandcamp-sync 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| beets_bandcamp_sync-0.1.2.tar.gz | 8.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| beets_bandcamp_sync-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.5 kB
Release files / beets_bandcamp_sync-0.1.2.tar.gz
| Download URL | beets_bandcamp_sync-0.1.2.tar.gz |
|---|---|
| Size | 8.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9fd00d75757d2d50fab34768a6e3c761897a8441ad90db7042a43b4e81e8d048
|
|
BLAKE2b-256 checksum How to use checksums |
2963a03fbe7f3415c7536044160d9f2979f3fa62274b59899f0832242c1a2872
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / beets_bandcamp_sync-0.1.2-py3-none-any.whl
| Download URL | beets_bandcamp_sync-0.1.2-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ccf6d5236ee13a0300728b7cfdca6ed07faefffa3a0bac8752e9de01c27763e
|
|
BLAKE2b-256 checksum How to use checksums |
bed64d93acb356dbb101da8904a7abd767e2f7b49acc62390159716012b3adfc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency log