~rensoliemans/flacfixer

b102836b — Rens Oliemans 8 months ago
Version 1.0
43c6966c — Rens Oliemans 8 months ago
Rename to flacfixer
ed6c4e9b — Rens Oliemans 1 year, 8 months ago
test: clarify test with unknown format

clone

read-only
https://git.sr.ht/~rensoliemans/flacfixer
read/write
git@git.sr.ht:~rensoliemans/flacfixer

You can also use your local clone with git send-email.

#flacfixer

A program to automatically manage the filenames of your music directory.

builds.sr.ht status

#Install

git clone https://git.sr.ht/~rensoliemans/flacfixer
pip install .

Or, if you'd like to run linters,

pip install .[dev]

Or, if you want an editable install,

pip install -e .

#Run

$ flacfixer --help
usage: flacfixer [-h] (-a | -f) [-n] [-r RECURSE_LEVELS] [-v]

Fix filenames in my music dir

options:
  -h, --help            show this help message and exit
  -a, --albums          Fixes album names (directories) in PWD
  -f, --filenames       Fixes filenames in PWD
  -n, --dry-run         Perform dry run and output what would be changed
  -r RECURSE_LEVELS, --recurse-levels RECURSE_LEVELS
                        Levels to recurse into. Defaults to 0, current level
  -v, --verbose         Be verbose. Pass multiple times to increase verbosity

This is specific to my music library and preferences:

#Filenames

flacfixer -f changes the filenames of music files. Only flac is currently supported. The target is {tracknumber} - {title}.flac, where tracknumber always has length 2. tracknumber and title are extracted from metadata.

Example: 01 - Rosalyn.flac

#Albums

flacfixer -a changes the directory names into the following format: {album name} [{year}]. Since a directory itself can't have any metadata, it attempts to parse the title and year from the current directory format. See test_album_fixer.py.

Example: Tripping with Nils Frahm [2020]

#Contributions

#Code style

Code style:black

This project uses black, ruff and pre-commit. They are all installed when you do pip install -e .[dev].

Install pre-commit hooks with

pre-commit install

make commands:

  • make lint: executes black and ruff. This is also more or less what pre-commit does.

  • make analyse: make lint and mypy

  • make test: unittests

  • make check: make analyse and make test (everything)

#Contributing

I'm new to mailing lists with git, but please send patches to ~rensoliemans/flacfixer@lists.sr.ht.