Help us shape the future of Go! Take the 2026 Go Developer Survey

bandcamper

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2026 License: MIT

README

Bandcamper logo

Bandcamper

A fast, lightweight, cross-platform Bandcamp downloader written in Go, inspired by the feature set of Otiel/BandcampDownloader.

Bandcamper is a single-binary CLI capable of resolving Bandcamp artist, album, and track URLs, downloading audio streams concurrently, embedding complete ID3v2 metadata (including cover artwork and lyrics), and generating playlists.


Features

  • URL Resolution: Automatic classification and normalization for:
    • Bandcamp artist pages (https://artist.bandcamp.com or https://artist.bandcamp.com/music)
    • Bandcamp album pages (https://artist.bandcamp.com/album/example-album)
    • Bandcamp track pages (https://artist.bandcamp.com/track/example-track)
  • Resilient Metadata Extraction: Decodes embedded JSON (TralbumData), JSON-LD (application/ld+json), and OpenGraph metadata.
  • Concurrent Downloads: Configurable worker pool for downloading multiple tracks simultaneously.
  • Robust Network Handling: Exponential backoff retry for transient network errors and rate limits (408, 429, 500, 502, 503, 504).
  • Graceful Cancellation: Cancel active downloads cleanly using Ctrl+C.
  • Safe Storage: Atomic downloads via temporary .part files to prevent partial or corrupted files.
  • Duplicate Protection: Skip existing files with --skip-existing or overwrite with --overwrite.
  • ID3v2 Metadata & Lyrics: Embeds Title, Artist, Album, Album Artist, Track Number/Total, Year, Genre, Comment, and synchronized/unsynchronized lyrics.
  • Embedded & Saved Artwork: High-resolution cover artwork is embedded into every MP3 and saved alongside the album as cover.jpg.
  • Custom Templates: Fully customizable output directory and filename patterns (e.g. {artist}/{album}/{tracknumber} - {title}.mp3).
  • Playlists: Generates M3U, PLS, WPL, and ZPL playlists automatically.
  • Dry-Run Mode: Inspect metadata and output paths without downloading anything.
  • Zero Heavy Runtimes: Compiled directly to a single native binary (no Python, Node.js, or .NET required).

Installation

Pre-compiled Packages & Binaries

Download from GitHub Releases:

Debian / Ubuntu (.deb):

sudo dpkg -i bandcamper_*.deb

Fedora / RHEL / CentOS (.rpm):

sudo rpm -i bandcamper-*.rpm

Standalone Tarball (.tar.gz):

tar -xzf bandcamper-linux-amd64.tar.gz
sudo ./install.sh
From Source
git clone https://github.com/lnoxsian/bandcamper.git
cd bandcamper
go build -o bandcamper ./cmd/bandcamper
Or using go install
go install github.com/lnoxsian/bandcamper/cmd/bandcamper@latest

Usage

Basic Commands

Download an entire album:

bandcamper https://artist.bandcamp.com/album/example-album

Download a single track:

bandcamper https://artist.bandcamp.com/track/example-track

Download all releases by an artist (entire discography):

bandcamper https://artist.bandcamp.com

Download multiple URLs (space-separated or comma-separated):

bandcamper https://artist.bandcamp.com/album/one https://artist.bandcamp.com/album/two
bandcamper https://artist.bandcamp.com/album/one,https://artist.bandcamp.com/album/two

Download URLs from a text file:

bandcamper --file urls.txt

CLI Options

Flag Shorthand Default Description
--output <dir> -o ~/Music Output root directory
--jobs <n> -j 4 Number of concurrent download workers
--retry <n> 3 Maximum retry attempts for transient failures

Bandcamper

Bandcamper is a lightweight, cross-platform Bandcamp downloader written in Go. It resolves public artist, album, and track pages, downloads available MP3 streams, writes metadata and artwork, and can generate playlists.

Quick start

Build from source:

go build -o bandcamper ./cmd/bandcamper

Download an album:

./bandcamper https://artist.bandcamp.com/album/example-album

Preview the resolved metadata and output paths without downloading:

./bandcamper --dry-run https://artist.bandcamp.com/album/example-album

Documentation

See the documentation index for the complete guides:

Highlights

  • Concurrent downloads with retry handling and cancellation.
  • Atomic file storage with existing-file protection.
  • ID3v2 tags, lyrics, embedded artwork, and saved cover art.
  • M3U, PLS, WPL, and ZPL playlist generation.
  • Configurable output directories and filename templates.
  • Native binaries for Linux, macOS, and Windows on amd64 and arm64.

Bandcamper does not bypass authentication, DRM, purchase restrictions, or other access controls. Downloads remain subject to Bandcamp's terms and the rights held by the artist or label.

License

MIT License. See LICENSE for details.

Credits

Bandcamper was inspired by the feature set and overall idea of Otiel/BandcampDownloader. Credit and thanks to its author, Otiel, for the original project. Bandcamper can be configured using a config.toml file.

Directories

Path Synopsis
cmd
bandcamper command
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL