Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bc

Bandcamp in your terminal — browse, discover, and stream music without leaving the command line.

Rust License: MIT Platform

Install · CLI · TUI · Auth · Last.fm · License


Install

cargo install --git https://github.com/kfcafe/bc

Requires mpv for audio playback. Album art renders natively in Kitty, iTerm2, and Sixel terminals — falls back to Unicode half-blocks elsewhere.

Build from source
git clone https://github.com/kfcafe/bc.git
cd bc
cargo install --path .

CLI

Run subcommands directly without entering the TUI:

bc search "Aphex Twin"           # Search Bandcamp
bc album <url>                   # View album details + tracklist
bc artist <url>                  # View artist info + discography
bc play <url>                    # Stream an album or track via mpv
bc play <url> --track 3          # Stream a specific track
bc discover                      # Browse top releases
bc discover --genre electronic   # Filter by genre
bc discover --options            # List available genres/sorts
bc daily                         # Bandcamp Daily headlines
bc daily --read <url>            # Read an article
bc download <url>                # Download a free/name-your-price album
bc download <url> -f flac        # Download in FLAC format
bc download <url> -o ~/Downloads # Download to specific directory
bc tag ambient                   # Find related tags
bc collection                    # Browse purchased music
bc wishlist                      # View wishlist
bc queue                         # List the playback queue
bc queue rm 3 5                  # Remove tracks 3 and 5
bc queue clear                   # Clear the entire queue

TUI

Launch with bc (no arguments). A full Bandcamp browser with four tabs, drill-down views, a playback queue, and a live progress bar.

Tabs

Key Tab Description
1 Daily Bandcamp Daily articles
2 Discover Browse by genre and sort
3 Collection Your purchased music (requires auth)
4 Wishlist Your wishlist (requires auth)

Switch tabs with Tab / Shift+Tab or press 1–4 directly.

Navigation

Key Action
j / k Move down / up
gg Jump to top
G Jump to bottom
Ctrl+d / Ctrl+u Half-page down / up
Enter / l / Open selected item
Esc / h / Go back
/ Search
? Help overlay
q Quit

Playback

Key Action
p Play / pause
n Next track
N Previous track
a Add selected to queue
Q Open queue view
x Remove track (in queue view)
c Clear queue (press twice to confirm)

The now-playing bar shows track name, elapsed/total time, and a progress bar. Tracks auto-advance through the queue.

The queue is persistent — saved to ~/.config/bc/queue.json and restored on relaunch.

Purchasing

In the album detail view:

Key Action
d Download free/name-your-price album (saved to ~/Music/bc/)
b Open in browser to purchase

Albums show a pricing badge: FREE, Name Your Price, or the price (e.g. $7.00 USD). Purchased albums show ✓ Purchased.

Discover Filtering

Key Action
f Genre filter popup
s Sort popup

Views

  • Album Detail — Album info, tags, and description on the left; tracklist on the right. Play individual tracks with Enter, queue the whole album with a.
  • Artist Detail — Bio and location on the left; discography on the right. Select a release to open it.
  • Queue — Full-screen queue. Jump to any track with Enter, remove with x, clear with c.

Authentication

For collection and wishlist access, export your identity cookie from bandcamp.com:

bc auth --set "identity=<your-cookie-value>"

Last.fm Scrobbling

Scrobble what you listen to in bc to your Last.fm profile.

Setup

  1. Create a Last.fm API account at https://www.last.fm/api/account/create
  2. Authenticate:
bc lastfm auth --api-key <KEY> --api-secret <SECRET>

This opens your browser to authorize bc. Your session is saved to ~/.config/bc/config.toml. You can also set LASTFM_API_KEY and LASTFM_API_SECRET as environment variables.

How it works

  • Now Playing — sent when a track starts so it appears on your profile in real-time.
  • Scrobble — logged after listening to ≥50% of a track (or 4 minutes, whichever comes first). Tracks shorter than 30 seconds are skipped per Last.fm rules.

Scrobbling works automatically in the TUI.

bc lastfm status   # Check connection status
bc lastfm logout   # Disconnect Last.fm

Stack

Rust · tokio · reqwest · scraper · ratatui · crossterm · mpv IPC · clap

License

MIT

About

Bandcamp terminal client — browse, discover, and stream music from your terminal

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages