Metadata-Version: 2.1
Name: mfbatch
Version: 0.4.0
Summary: MetaFlac batch editor
Home-page: https://github.com/iluvcapra/mfbatch
License: MIT
Keywords: flac,metadata,audio,multimedia,console,scripting
Author: Jamie Hardt
Author-email: jamiehardt@me.com
Requires-Python: >=3.9,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Sound/Audio :: Editors
Requires-Dist: tqdm (>=4.66.4,<5.0.0)
Project-URL: Repository, https://github.com/iluvcapra/mfbatch.git
Description-Content-Type: text/markdown

# mfbatch

`mfbatch` is a command-line tool for batch-editing FLAC audio file metadata. 
It reads a directory of FLAC files, extracts the existing metadata to an 
intelligent text file format that the user can modify to update a large number
of files and dynamic per-file metadata with a minimal number of edits.

`mfbatch` is a front-end for `metaflac(1)` which must be installed on the
system.

## Motivation

I've been reorganzing my sound effects library recently and have had to edit a 
large number of FLAC files, adding and editing descriptions, normalizing 
fields etc. and this is one of the tools I've come up with for updating a large
number of FLAC files in an easy way quickly. It works completely in the command
line and is designed to be used with your favorite text editor.

## Workflow

### 1) Create a new `MFBATCH_LIST` file for a directory of FLAC files.

```sh 
$ cd path/to/my/flacs 
$ mfbatch -c 
```

`mfbatch` will scan the current working directory and 
all subdirectories recursively. You can use a `-p` option 
to switch to another directory before scanning.

### 2) Edit the `MFBATCH_LIST` file in your `$EDITOR`.
```sh 
$ mfbatch --edit
```

The `MFBATCH_LIST` file will contain a transcript of all of the flac files 
in the selected folder along with their current metadata.

```sh 
:set ALBUM 'Test Album 1'
:set ARTIST 'Test Artist'
:set DESCRIPTION 'Tone file #1, test tone 440Hz'
:setp TITLE DESCRIPTION "^Tone file #(\d+).*" 'Tone \1'
./tone1.flac

:set DESCRIPTION 'Tone file #2, also 440Hz'
./tone2.flac
:unset DESCRIPTION

:set DESCRIPTION 'Tone file #3'
./tone3.flac

```

The `MFBATCH_LIST` format allows you to set metadata once and then write values
to a run of files all at once. Several commands are available to manipulate
the metadata written to the files.

### 3) After you've made the changes you want to make, write them to the files.

```sh 
$ mfbatch -W
```

Writing metadata is interactive, `mfbatch` will display the
metdata to be written to each file and metadata can be
edited interactively at a prompt before writing.

## Limitations

* Does not support newlines in field values. This is mostly by choice, newlines
  don't offer any benefit in my preferred sound library programs but this
  wouldn't be a tough feature to add if anyone needed it.
* Does not support multiple artwork types, everything is stored as type `3`/
  (album artwork-front).
* Can only store unique field keys, field values of the same key overwrite old
  values. This is also something that is tailored to my use-case and could be
  changed if there was interest in doing so.

