No description
  • Python 76.1%
  • HTML 22.9%
  • Dockerfile 1%
Find a file
Tobias d0dbbfeb6c
Some checks failed
Build & Publish Docker Image / build (push) Failing after 32s
modified: .forgejo/workflows/docker.yml
2026-05-29 22:39:39 +02:00
.forgejo/workflows modified: .forgejo/workflows/docker.yml 2026-05-29 22:39:39 +02:00
.github Docs cleanup and update. 2024-03-27 22:26:01 +01:00
bandcamp_dl Merge pull request #281 from wxifze/master 2026-04-08 22:21:39 -04:00
webui feat: add clear history functionality and update UI for history section 2026-05-29 17:35:20 +02:00
.gitignore feat: update Docker workflow for improved image tagging and publishing 2026-05-29 17:49:25 +02:00
.pypirc Cleanup project structure 2024-07-02 20:26:30 -04:00
AUTHORS.rst Ownership changeover odds & ends 2025-08-29 09:18:45 -04:00
CHANGELOG.rst Docs cleanup and update. 2024-03-27 22:26:01 +01:00
CODE_OF_CONDUCT.md Docs cleanup and update. 2024-03-27 22:26:01 +01:00
docker-compose.yml fix: update Docker workflow to use lowercase repository name for image tagging and adjust service build configuration 2026-05-29 22:34:16 +02:00
Dockerfile fix: update Docker workflow to use lowercase repository name for image tagging and adjust service build configuration 2026-05-29 22:34:16 +02:00
pyproject.toml Merge pull request #281 from wxifze/master 2026-04-08 22:21:39 -04:00
README.md feat: add clear history functionality and update UI for history section 2026-05-29 17:35:20 +02:00
README.rst Ownership changeover odds & ends 2025-08-29 09:18:45 -04:00
UNLICENSE Changes for Poetry + rename license for easier discovery on github 2025-07-16 04:38:34 -04:00

bandcamp-dl (Web UI Fork)

This is a modified fork of bandcamp-dl that adds a simple mobile-friendly web UI and Docker support, making it easy to self-host and run as a service.

Download audio from bandcamp.com


What's added in this fork

  • Web UI — mobile-friendly dark interface, accessible in any browser
  • Real-time progress — track-by-track download status streamed live
  • Download history — persistent log of past downloads
  • Docker support — single container, configurable download volume

Running with Docker

docker run

docker run -d \
  --name bandcamp-dl \
  -p 5000:5000 \
  -v /path/to/your/music:/downloads \
  -e DOWNLOAD_DIR=/downloads \
  --restart unless-stopped \
  git.steltner.cloud/2tap2b/bandcamp-dl-webui:latest

Replace /path/to/your/music with the local directory where you want downloads saved.

docker compose

Create a docker-compose.yml:

services:
  bandcamp-dl:
    image: git.steltner.cloud/2tap2b/bandcamp-dl-webui:latest
    ports:
      - "5000:5000"
    volumes:
      - /path/to/your/music:/downloads
    environment:
      - DOWNLOAD_DIR=/downloads
    restart: unless-stopped

Then start it:

docker compose up -d

Open http://localhost:5000 in your browser.

Build from source

git clone <this-repo>
cd bandcamp-dl
docker compose up -d --build

Original bandcamp-dl

Synopsis

bandcamp-dl URL

Installation (CLI only)

From PyPI:

pip3 install bandcamp-downloader

From source:

git clone https://github.com/evolution0/bandcamp-dl
cd bandcamp-dl
pip install .

[OSX] Homebrew:

brew install bandcamp-dl

[Arch] AUR:

yay -S bandcamp-dl-git

Description

bandcamp-dl is a small command-line app to download audio from bandcamp.com. It requires Python 3.4 or higher and is not platform specific. It is released to the public domain.

Options

Usage:
    bandcamp-dl [options] [URL]

Arguments:
    URL         Bandcamp album/track URL

Options:
  -h, --help            show this help message and exit
  -v, --version         Show version
  -d, --debug           Verbose logging
  --artist ARTIST       Specify an artist's slug to download their full discography
  --track TRACK         Specify a track's slug to download a single track (requires --artist)
  --album ALBUM         Specify an album's slug to download a single album (requires --artist)
  --template TEMPLATE   Output filename template, default: %{artist}/%{album}/%{track} - %{title}
  --base-dir BASE_DIR   Base location of which all files are downloaded
  -f, --full-album      Download only if all tracks are available
  -o, --overwrite       Overwrite tracks that already exist
  -n, --no-art          Skip grabbing album art
  -e, --embed-lyrics    Embed track lyrics (if available)
  -g, --group           Use album/track label as iTunes grouping
  -r, --embed-art       Embed album art (if available)
  --cover-quality {0,10,16}
                        Set cover art quality: 0=source, 10=1200x1200, 16=700x700 (default)
  -y, --no-slugify      Disable slugification of track, album, and artist names
  -c OK_CHARS           Specify allowed chars in slugify, default: -_~
  -s SPACE_CHAR         Specify the char to use in place of spaces, default: -
  -a, --ascii-only      Only allow ASCII characters
  -k, --keep-spaces     Retain whitespace in filenames
  -x {lower,upper,camel,none}
                        Specify char case conversion, default: lower
  --no-confirm          Override confirmation prompts
  --embed-genres        Embed album/track genres
  --truncate-album LEN  Truncate album title to max length (0 = no limit)
  --truncate-track LEN  Truncate track title to max length (0 = no limit)

Filename Template

The --template option allows users to indicate a template for output file names. Templates use tokens with the format %{token}:

Token Description
trackartist The artist name
artist The album artist name
album The album name
track The track number
title The track title
date The album date
label The album label

Default template: %{artist}/%{album}/%{track} - %{title}

Dependencies

Bugs

Report bugs for the original CLI at the upstream issue tracker. For issues specific to the web UI or Docker setup, open an issue in this repository.


bandcamp-dl is released into the public domain by the copyright holders.