:toc: macro :toclevels: 5 :figure-caption!:

FLACsmith

⚠️ *This gem is deprecated and will be fully destroyed on 2023-02-01.* ⚠️

This gem is a Ruby wrapper for https://xiph.org/flac[FLAC] metadata. FLACsmith aids in listing/rebuilding metadata for a music collection, artist, album, or track. Having metadata information that reflects the directory/file structure makes organizing and managing large music collections easier. This can be especially useful with tools like https://iina.io[IINA].

toc::[]

Features

Requirements

. A UNIX-based system. . https://www.ruby-lang.org[Ruby]. . https://xiph.org/flac[FLAC].

Setup

To install, run:

source,bash

gem install flacsmith


Usage

From the command line, type: ‘flacsmith –help`

.… FLACsmith - A command line interface for managing FLAC metadata.

USAGE:

-e, --encode SOURCE_DIR,TARGET_DIR       Encode source audio as FLAC audio.
-h, --help                               Show this message.
-l, --list SOURCE_DIR                    List track metadata for source directory.
-r, --rebuild SOURCE_DIR                 Rebuild track metadata for source directory.
-v, --version                            Show gem version.

ENCODE OPTIONS:

-i, --image PATH                         Album image file path.

.…

The following directory structure is assumed: ‘/<artist>/<album>/<tracknumber> <title>.flac`. This is important because metadata for a file is always rebuilt by inspecting the absolute path to the file which assumes that a song is nested within an artist and album folder and has a track number followed by a title. This convention over configuration technique allows metadata to be rebuilt by inspecting the absolute path of the file. This also means that the `–rebuild` option can be applied to a single song, album, artist, or a complete music collection.

The following is an example of potential workflows:

  • Convert AIFF files to FLAC files:

** Run: ‘flacsmith –encode “<source_dir>,<target_dir>” –image “<image_path>”`

  • List metadata for an artist:

** Run: ‘flacsmith –list “<artist>”`

  • List metadata for an album:

** Run: ‘flacsmith –list “<artist>/<album>”`

  • List metadata for collection:

** Run: ‘flacsmith –list .`

  • Rebuild metadata for a new album:

** Copy the album to ‘<collecton>/<artist>/<album>` ** Run: `flacsmith –rebuild “<collecton>/<artist>/<album>”`

  • Rebuild metadata for a song:

** Change directory to ‘<collecton>/<artist></album>` ** Run: `mv <old name>.flac` to `<new name>.flac` ** Run: `flacsmith –rebuild “<new name>.flac”`

  • Rebuild metadata for an entire music collection:

** Run: ‘flacsmith –rebuild .`

Development

To contribute, run:

source,bash

git clone github.com/bkuhlmann/flacsmith cd flacsmith bin/setup


You can also use the IRB console for direct access to all objects:

source,bash

bin/console


Tests

To test, run:

source,bash

bundle exec rake


Credits