OPERON(1)

πŸ“¦
version 4.7.1 Β· 2 versions
, in arch rolling, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, ubuntu stonking

🎡 OPERON(1) β€” operon, bestie πŸ’–

okay so. hi. you're here because you want a command line music tagger and honestly? iconic choice. operon is the girl who fixes your messy tags while you're busy being a main character. let's get into it πŸ’…


✨ SYNOPSIS ✨

operon [--version] [--help] [-v | --verbose] <command> [<argument>...]
operon help <command>

that's the whole vibe. command first, arguments after, slay.


πŸŽ€ OPTIONS πŸŽ€

these ones go before your command, they're the global girlies ✨

  • -h, --help β€” shows you the help and dips out. no notes πŸ’–
  • --version β€” prints the program version, so you know exactly which era you're in πŸ‘‘
  • -v, --verbose β€” verbose mode. she's talking. a lot. we love her for it πŸ—£οΈ

🌈 COMMAND-OVERVIEW 🌈

here's the whole roster, organized by mood πŸ’«

πŸ’œ Edit Tags

  • add β€” Add a tag value
  • remove β€” Remove a tag value
  • set β€” Set a tag and remove existing values
  • clear β€” Remove tags
  • copy β€” Copy tags from one file to another
  • edit β€” Edit tags in a text editor
  • fill β€” Fill tags based on the file path

πŸ¦‹ Show file metadata

  • list β€” List tags
  • info β€” List file information
  • print β€” Print tags based on the given pattern

🌸 Edit Embedded Images

  • image-extract β€” Extract embedded images
  • image-set β€” Set embedded image
  • image-clear β€” Remove embedded images

⭐ Miscellaneous

  • tags β€” List all common tags
  • help β€” Display help information

πŸ’… EDIT TAGS πŸ’…

πŸ“ add

adds a brand new tag <tag> with the value <value> to all the files you point at. every single one. she's thorough like that ✨

operon add [-h] <tag> <value> <file>...
  • -h, --help β€” Display help and exit

Example:

operon add artist 'The Beatles' song1.ogg song2.ogg

look at her go 🫢

πŸ“ remove

removes all values from the tag <tag> that match either <value> or the regular expression <pattern>, from all files. yes, regex. she's that girl 😌

operon remove [-h] [--dry-run] <tag> (-e <pattern> | <value>) <file>...
  • -h, --help β€” Display help and exit
  • --dry-run β€” Print the results without changing any files
  • -e,--regexp <regexp> β€” Remove all tag values that match the given regular expression

Example:

operon remove artist 'The Beatles' song.ogg

πŸ“ set

replaces all values of the tag <tag> with <value> in all files. out with the old, in with the new, periodt πŸ’…

operon set [-h] [--dry-run] <tag> <value> <file>...
  • -h, --help β€” Display help and exit
  • --dry-run β€” Print the results without changing any files

Example:

operon set artist 'The Beatles' song.ogg

πŸ“ clear

removes all tags that match <tag> or the regular expression <pattern> from all files. and if you pass --all? every known tag gets removed. full reset energy πŸ’€

operon clear [-h] [--dry-run] (-a | -e <pattern> | <tag>) <file>...
  • -h, --help β€” Display help and exit
  • --dry-run β€” Print the results without changing any files
  • -a, --all β€” Remove all tags
  • -e,--regexp <regexp> β€” Remove all tags that match the given regular expression

Example:

operon clear -a song.ogg

operon clear -e 'musicbrainz_.*' song.ogg

operon clear date song.ogg

three whole moods, pick your fighter 🌈

πŸ“ copy

copies all tags from the file <source> to <dest>. here's the tea though β€” all tags already in <dest> will be preserved (she's not a monster). and listen: in case the destination format doesn't support setting a tag from source, no tags will be copied. none. zero. the whole operation just doesn't happen 😭

if you want to ignore the tags that aren't supported by the destination format, pass --ignore-errors. that's the lowkey fix ✨

operon copy [-h] [--dry-run] [--ignore-errors] <source> <dest>
  • -h, --help β€” Display help and exit
  • --dry-run β€” Print the results without changing any files
  • --ignore-errors β€” Skip tags which the target file does not support

Example:

operon copy song.flac song.ogg

πŸ“ edit

shows all your tags in a text editor and then applies whatever changes you made to the text back onto the tags. yes it's giving "editing a text file but it's secretly your music library" ✨

operon will use the editor specified in the VISUAL or EDITOR environment variables, and if those are not set she falls back to 'nano'. she has a default, she's prepared πŸ’–

operon edit [-h] [--dry-run] <file>...
  • -h, --help β€” Display help and exit
  • --dry-run β€” Print the results without changing any files

Example:

VISUAL=vi operon edit song.flac

πŸ“ fill

fills tags based on file paths and a given pattern. detective mode πŸ”

operon fill [-h] [--dry-run] <pattern> <file>...
  • -h, --help β€” show this help message and exit
  • --dry-run β€” show changes, don't apply them

Example:

operon fill --dry-run "<tracknumber>. <title>" "01. Was Ist
Ist.flac"

(yeah the filename wraps like that in the original, no we're not fixing it, it's canon πŸ’€)


πŸ‘‘ SHOW FILE METADATA πŸ‘‘

🧚 list

lists all tags, values, and a description of each tag, in a table. organized. aesthetic. obsessed πŸŽ€

operon list [-h] [-a] [-t] [-c <c1>,<c2>...] <file>
  • -h, --help β€” Display help and exit
  • -a, --all β€” Also list programmatic tags
  • -t, --terse β€” Output is terse and suitable for script processing
  • -c, --columns <name>,... β€” Defines which columns should be printed and in which order

Example:

operon list -a song.flac

operon list -t -c tag,value song.ogg

🧚 info

lists non-tag metadata like length, size and format. the stats, the lore, the numbers πŸ“Š

operon info [-h] [-t] [-c <c1>,<c2>...] <file>
  • -h, --help β€” Display help and exit
  • -t, --terse β€” Output is terse and suitable for script processing
  • -c, --columns <name>,... β€” Defines which columns should be printed and in which order

Example:

operon info a.ogg

🧚 print

prints information per file built from tag values. the pattern can be customized by passing a pattern string β€” and psst, see quodlibet(1) for the pattern format πŸ‘€

operon print [-h] [-p <pattern>] <file>...
  • -h, --help β€” Display help and exit
  • -p,--pattern <pattern> β€” Use a custom pattern

Example:

operon print -p "<album> - <artist>" a.ogg

πŸ–ΌοΈ EDIT EMBEDDED IMAGES πŸ–ΌοΈ

πŸ’– image-extract

extracts all embedded images to the current working directory, or to the destination directory you specify. album art liberation ✨

operon image-extract [-h] [--dry-run] [--primary] [-d <destination>]
<file>...
  • -h, --help β€” Display help and exit
  • --dry-run β€” Print the found images and resulting file paths but don't save them
  • --primary β€” Only extract the primary images for each file
  • -d,--destination <destination> β€” Save all images to the specified destination

Example:

operon image-extract asong.mp3 anotherone.ogg

πŸ’– image-set

sets the provided image as the primary embedded image and removes all other embedded images. one cover to rule them all πŸ‘‘

operon image-set <image-file> <file>...
  • -h, --help β€” Display help and exit

Example:

operon image-set cover.jpg song.mp3

πŸ’– image-clear

removes all embedded images from all the specified files. gone. dust. bye πŸ‘‹

operon image-clear <file>...
  • -h, --help β€” Display help and exit

Example:

operon image-clear song.mp3

🌟 MISCELLANEOUS 🌟

🌸 tags

lists all common tags. the full menu, the whole alphabet, the tag bible πŸ“–

operon tags [-h] [-a] [-t] [-c <c1>,<c2>...]
  • -h, --help β€” Display help and exit
  • -a, --all β€” Also list programmatic tags
  • -t, --terse β€” Output is terse and suitable for script processing
  • -c, --columns <name>,... β€” Defines which columns should be printed and in which order

Example:

operon tags -a

operon tags -t -c tag

🌸 help

the girl you call when you're lost. no shame in it, bestie 🫢

operon help [<command>]

Example:

operon help list

πŸ”— SEE ALSO πŸ”—

go read them, they're family πŸ’œ


⚠️ heads up: copy really does bail entirely if the destination format can't handle a tag from the source β€” unless you pass --ignore-errors. and always --dry-run first if you're nervous. she won't judge, she'll just print πŸ’…

okay that's the whole page!! this is operon, part of the quodlibet/exfalso universe πŸŒˆπŸ’– thanks for coming to my ted talk, go tag something pretty ✨ periodt πŸŽ€πŸ¦‹πŸŒΈ