{"id":16724883,"url":"https://github.com/kaworu/tagutil","last_synced_at":"2025-03-21T21:30:59.071Z","repository":{"id":7039340,"uuid":"8316066","full_name":"kaworu/tagutil","owner":"kaworu","description":"scriptable music files tags tool and editor","archived":false,"fork":false,"pushed_at":"2025-01-14T09:48:11.000Z","size":2055,"stargazers_count":31,"open_issues_count":7,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-18T05:12:38.029Z","etag":null,"topics":["command-line-tool","flac","mp3","music-files","ogg-vorbis","taglib","vorbis-comments"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaworu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-02-20T15:40:21.000Z","updated_at":"2025-01-14T09:48:09.000Z","dependencies_parsed_at":"2024-10-28T11:34:29.838Z","dependency_job_id":"c1ca4fce-a8a9-4e3c-8a79-f2fe274ad1fa","html_url":"https://github.com/kaworu/tagutil","commit_stats":{"total_commits":521,"total_committers":11,"mean_commits":47.36363636363637,"dds":0.5489443378119002,"last_synced_commit":"f5d7137e65ce79f4d5a48261bfb212884960ac7d"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Ftagutil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Ftagutil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Ftagutil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaworu%2Ftagutil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaworu","download_url":"https://codeload.github.com/kaworu/tagutil/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244874154,"owners_count":20524576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line-tool","flac","mp3","music-files","ogg-vorbis","taglib","vorbis-comments"],"created_at":"2024-10-12T22:47:08.833Z","updated_at":"2025-03-21T21:30:58.512Z","avatar_url":"https://github.com/kaworu.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[\u003cimg src=\"https://travis-ci.org/kAworu/tagutil.svg?branch=master\" /\u003e](https://travis-ci.org/kAworu/tagutil)\n\nTagutil - CLI music files tags editor\n=====================================\n\n`tagutil(1)` is a CLI tool to edit music file's tag. It aims to provide both an\neasy-to-script interface and ease of use interactively. Unlike most other tag\ntools out there, it fully support _Vorbis Comments_ for both ogg/vorbis files\nand FLAC. _Vorbis Comments_ are sexy, because you can set tags with any\nkey/value without much restrictions (you can even have more than one value for\na key).\n\nInstallation\n============\n\nRequired Dependencies:\n----------------------\n\n- pkg-config (build dep)\n- cmake \u003e= 2.6 (build dep)\n- libyaml\n\nOptionals Dependencies:\n----------------------\n\nOptionals dependencies are detected by cmake. If you want to override the\ndetection you can define `WITHOUT_$LIB` to avoid tagutil to link against\n`$LIB`.\n\n- JSON: jansson\n    JSON output format.\n- FLAC: libFLAC\n    If you want the flac files to be handled by libFLAC.\n- OGGVORBIS: libvorbis\n    If you want the ogg/vorbis files to be handled by libvorbis.\n- TAGLIB: TagLib (\u003e=1.5)\n    Generic backend. Can handle a lot of different file type, but only a\n    limited set of tags (artist, title, album, tracknumber, date, genre and\n    comment).\n- ID3V1:\n    A stock ID3v1.1 TAG backend. ID3v1 is only used by very old mp3 files and\n    has a lot of limitation including: limited set of tags, limited length (30\n    characters at the most), genre has to be part of the ID3v1 list (this\n    backend support the Winamp extended list though) etc.\n\n\nBuilding:\n---------\n\ntype `make`, it'll create the build/ directory and call cmake and make to\nconfigure and build tagutil. Or if you want to gives some arguments to\ncmake do (for example):\n```\nmkdir build \u0026\u0026 cd build\ncmake -DWITHOUT_TAGLIB=yes ../src\nmake\n```\n\nInstallation:\n-------------\n\n### From Source:\n\nbuild tagutil, then `cd build \u0026\u0026 make install`. You might need root access\nto call `make install`.\n\n### From Arch Linux:\n\nA [package](https://aur.archlinux.org/packages/tagutil/) is provided in the\n[AUR](https://wiki.archlinux.org/index.php/AUR). Use your favorite [AUR\nhelper](https://wiki.archlinux.org/index.php/AUR_helpers)\nto install it or download the AUR tarball and run `makepkg -si` to build and\ninstall the package.\n\nUsage\n=====\n\nreading tags\n------------\nUse the **print** action. Since it is the default action, you can omit it from\nthe command line:\n\n```\n% tagutil fearless.flac\n# fearless.flac\n---\n- album: Meddle\n- artist: Pink Floyd\n- date: 1971\n- title: Fearless\n- tracknumber: 03\n- genre: Progressive Rock\n```\n\nediting tags\n------------\nThere are commands for basic editing stuff like **clear**, **add** and **set**.\nIf you need to do something more complex, the **edit** action let you use your\nfavourite `$EDITOR`.\n\nrenaming files\n--------------\nOne powerful feature of **tagutil** is the **rename** action. It rename the\nmusic files after inferring the new name from a rename pattern. In the rename\npattern, `%{name}` is replaced by the `name` tag. You can also use the simpler\nform `%name` if the tag is only composed of alphanumeric characters. Example:\n\n```\n% tagutil -p rename:\"[%date] %artist/%tracknumber - %title\" fearless.flac\nrename `fearless.flac' to `[1971] Pink Floyd/03 - Fearless.flac'? [y/n]\n```\n\nscripting\n---------\n**tagutil** can easily be scripted. Basic scripts can use the editing actions\nwhile more complex scripts can use **print**, parse the output, do some\nmodifications and then use **load**. There are two examples in the _scripts/_\ndirectory:\n\n* _scripts/tagutil-track_: this simple Perl script will take a tag name and\n  some files as arguments, and will set `01` for the first file, `02` for the\n  second and so on. Useful to set the track number of an album.\n* _scripts/tagutil-trim_: this Ruby script is a bit more complex and is an\n  example using YAML parsing. What is does is very simple though, it just trim\n  every tags of leading and trailing white space(s).\n\nfull --help\n-----------\n\n```\n% tagutil -h\ntagutil v3.0\n\nusage: tagutil [OPTION]... [ACTION:ARG]... [FILE]...\nModify or display music file's tag.\n\nOptions:\n  -h     show this help\n  -p     create destination directories if needed (used by rename)\n  -F fmt use the fmt format for print, edit and load actions (see Formats)\n  -Y     answer yes to all questions\n  -N     answer no  to all questions\n\nActions:\n  print            print tags (default action)\n  backend          print the backend used (see Backend)\n  clear:TAG        clear all tag TAG. If TAG is empty, all tags are cleared\n  add:TAG=VALUE    add a TAG=VALUE pair\n  set:TAG=VALUE    set TAG to VALUE\n  edit             prompt for editing\n  load:PATH        load PATH yaml tag file\n  rename:PATTERN   rename to PATTERN\n\nFormats:\n         yml: YAML - YAML Ain't Markup Language\n        json: JSON - JavaScript Object Notation\n\nBackends:\n     libFLAC: Free Lossless Audio Codec (FLAC) files format\n   libvorbis: Ogg/Vorbis files format\n      TagLib: various file format but limited set of tags\n```\n\nTest\n====\n```\n% gem install bundler\n% make test\n```\n\nLICENSE\n=======\nIt is a BSD 2-Clause license, see LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaworu%2Ftagutil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaworu%2Ftagutil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaworu%2Ftagutil/lists"}