LinuxCommandLibrary

beet

Manage and organize music libraries

TLDR

Add music from a specific directory to the library, attempting to get correct tags for it from MusicBrainz

$ beet import [path/to/directory]
copy

Add a single song to the library, attempting to get correct tags for it from MusicBrainz
$ beet import [[-s|--singletons]] [path/to/file]
copy

Query library
$ beet list [query]
copy

Show entire library statistics
$ beet stats
copy

Show statistics for a specific query
$ beet stats [query]
copy

SYNOPSIS

beet [options] command [arguments]

PARAMETERS

-h, --help
    Show this help message and exit.

-v, --version
    Show version number and exit.

-c CONFIG, --config=CONFIG
    Path to config file (default: ~/.config/beets/config.yaml).

-d DIR, --directory=DIR
    Library directory (default: ~/Music).

-l DB, --library=DB
    Path to SQLite library database (default: library.db in directory).

--verbose
    Increase log verbosity.

--debug
    Print debug output.

-C, --no-colors
    Disable colored output.

-p PLUGIN, --plugin=PLUGIN
    Load plugin (repeatable).

--format-item=FORMAT
    Template string for displaying items.

--format-album=FORMAT
    Template string for displaying albums.

DESCRIPTION

beet is the command-line tool for beets, a Python-based music management system for audio collectors. It automatically tags, organizes, and queries music libraries using metadata from sources like MusicBrainz. Import new files with fuzzy matching to identify tracks and albums, rewrite tags, fetch artwork, and embed lyrics. Files are moved into an artist/album structure defined in config.

Query your library with SQL-like syntax: beet ls artist:"Led Zeppelin" year:>1975. Edit tags in bulk, update database from files, or convert formats via plugins like convert. Supports plugins for Discogs, Spotify, Chromaprint fingerprinting, and web UI.

Beets stores metadata in a SQLite database separate from files, allowing flexible querying and reporting. Highly customizable via YAML config for paths, matching thresholds, and formats. Ideal for large collections needing organization and accurate tagging beyond basic tools.

CAVEATS

Requires beets Python package (pip install beets). Writable library directory needed. Initial setup involves config.yaml editing for paths and preferences. Plugins may require extra dependencies like ffmpeg.

COMMON COMMANDS

beet import [path] - Autotag and add music.
beet ls [query] - List items/albums.
beet modify [query] field=value - Batch edit tags.
beet update [query] - Refresh database from files.

QUERIES

Use SQL-like syntax: artist:"Pink Floyd" album:dark genre:rock year:1973.. Paths with path:, paths with ~ for regex.

HISTORY

Created by Adrian Sampson in 2010 as a music geek's tool. First stable 1.0 in 2013. Evolved with plugin ecosystem; version 2.0 (2024) added async operations and improved matching.

SEE ALSO

ffmpeg(1), sqlite3(1), mutagen-inspect(1)

Copied to clipboard