Skip to main content

CLI tool for musical directors to classify and organise audio stem exports by instrument category.

Project description

Setlist Organiser

CLI tool for classifying audio stem filenames into categories and organising them into folder structure via copy or move operations.

What it does

  • Scans a source folder for audio files
  • Classifies each file by filename keywords (e.g. DRUMS, BASS, VOX)
  • Copies or moves files to OUTPUT_ROOT/<CATEGORY>/...
  • Supports dry-run, recursive scan, custom keyword config, and interactive review for OTHER files

Requirements

  • Python >=3.11

Install

From the project root:

python -m venv .venv
source .venv/bin/activate
pip install -e .

This exposes the command:

setlist-organiser --help

Basic usage

setlist-organiser SOURCE_DIR OUTPUT_ROOT

Example:

setlist-organiser ../../AUDIO_FILES_FOR_TESTING output

For paths with spaces, quote them:

setlist-organiser "/path/with spaces/Stems '24" output

Common flags

  • --dry-run
    Show what would be copied without writing files.
  • --quiet
    Suppress per-file listing.
  • --summary-only
    Print category counts.
  • --show-other
    Print files currently classified as OTHER.
  • --recursive
    Scan nested folders.
  • --config PATH
    Load extra keyword mappings from a JSON config file.
  • --review
    Interactively review files in OTHER before execution.
  • --move
    Move files instead of copying them.

Interactive review mode

Use review mode to handle uncertain files before copying:

setlist-organiser SOURCE_DIR OUTPUT_ROOT --review

For each OTHER file:

  • Press Enter to keep as OTHER
  • Type a category name (e.g. DRUMS, VOX, KEYS) to reassign
  • Type s to skip the file

Config file format

Config adds extra keywords per category (it does not remove built-in defaults).

Example test_config.json:

{
  "keywords": {
    "DRUMS": ["room", "hh"],
    "VOX": ["adlib_fx"]
  }
}

Run with config:

setlist-organiser SOURCE_DIR OUTPUT_ROOT --config test_config.json

Move mode

Use move mode when you want files relocated from source to destination:

setlist-organiser SOURCE_DIR OUTPUT_ROOT --move

Preview move operations without changing files:

setlist-organiser SOURCE_DIR OUTPUT_ROOT --move --dry-run

Output behavior

  • --dry-run: no files are copied or moved
  • normal run: files are copied by default (metadata-preserving copy)
  • --move: files are moved instead of copied
  • destination collisions are suffixed (_2, _3, ...)

Development

Run tests:

pytest -v

Or use Makefile shortcuts:

make test
make dry-run
make move-dry
make review
make summary

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

setlist_organiser-0.1.0.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

setlist_organiser-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file setlist_organiser-0.1.0.tar.gz.

File metadata

  • Download URL: setlist_organiser-0.1.0.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for setlist_organiser-0.1.0.tar.gz
Algorithm Hash digest
SHA256 138769767be3cf9ca320d78aeb6fafe0dcdbf55be7217997004e115555250384
MD5 7bd275d65f411bf599a0e05fc2502417
BLAKE2b-256 02f751ace8870f908528afe3132d02aaa291382a76827282662cdc225517701a

See more details on using hashes here.

File details

Details for the file setlist_organiser-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for setlist_organiser-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc4af84119b4e1ca48851c7c4dc796a8313caae45faedecb3060b834b132b2b0
MD5 66fd6e9ad365eeed8432f33b183e33d1
BLAKE2b-256 5d0eee1d322f99f22f3fbab98407f2b6596bcb90c1940c37a728000a9d7a90df

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page