#bandcamp #sunny #bandcamp-downloader #bandcamp-dl

bin+lib sunny

Tool to download free music from Bandcamp. Automatically organize files to folder, ID3 tags (including album art)

4 releases

0.3.0 Jan 21, 2022
0.2.3 Nov 7, 2021
0.2.2 Nov 7, 2021
0.2.0 Jul 1, 2021

#1877 in Command line utilities

26 downloads per month

MIT/Apache

63KB
822 lines

Welcome to sunny 🌞

Version docs License: MIT

Tool to download freely available music from bandcamp.

Automatically organize files to folder, ID3 tags (including album art).

Demo

Demo

Motivation

Sunny is hugely inspired by SoundScrape, the main motivation for writing this was speed and customizability.

  • SoundScrape downloads sequentially whereas Sunny does parallelly, giving a huge boost of speed.
  • Track format can be customized.

Format

By default files are saved in this structure in current directory if --path option is not passed.

Artist
  ├── Album
  │   ├── 01 - Track.mp3
  │   ├── 02 - Track.mp3
  │   ├── 03 - Track.mp3
  │   ├── 04 - Track.mp3

Install

cargo install sunny

Usage

# whole discography of an artist by url
sunny https://65daysofstatic.bandcamp.com/music

# whole discography just by the name of the artist
sunny 65daysofstatic

# single album
sunny https://clevergirl.bandcamp.com/album/no-drum-and-bass-in-the-jazz-room

# single track
sunny https://65daysofstatic.bandcamp.com/track/twenty-four-twelve-twenty

# specify path to download to
sunny yvetteyoung --path=~/Music

CLI options

USAGE:
    sunny [OPTIONS] <ARTIST | URL>

ARGS:
    <ARTIST | URL>
            Artist's bandcamp username or full url

OPTIONS:
    -p, --path <PATH>

            Directory path where downloads should be saved to.
            By default files are saved in the current directory.

    -t, --track-format <FORMAT>

            Specify track format: default is '{num} - {track}'

            available keys:
                {num} - track number
                {track} - track
                {artist} - artist
                {album} - album

            usage:
                -t='{num} - {track} - {album} {artist}'

            expands to:
                2 - ATrack - SomeAlbum SomeArtist

            note that `.mp3` is appended automatically.

        --dry-run
            Do not do anything; just show what would happen

    -h, --help
            Print help information

    -l, --list-available
            list albums/tracks available to download

    -s, --skip-albums <ALBUMS>...
            Skip downloading these albums, note that albums need to be delimited by ','
            eg: -s 'one,two' or --skip-albums='one,two'

    -V, --version
            Print version information

Contributing

Contributions, issues and feature requests are welcome!

Dependencies

~17–25MB
~442K SLoC