Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Music Reorder, rer.

A Go tool for automatically renaming music files to match official track listings from MusicBrainz.

Overview

This project consists of two complementary tools:

  1. main - Renames audio files in a directory based on MusicBrainz metadata
  2. mbfind - Searches MusicBrainz to find release IDs for an artist/album

Usage

the files in the releases/ directory probably wont work as of right now. oh well!
use go run . from a git clone instead for now

Finding Release IDs

Use mbfind to search for an album and get its MusicBrainz IDs:

go run ./mbfind -artist "Michael Jackson" -album "Dangerous"

This outputs a ranked list of matching releases with their:

  • Release Group ID (rgid)
  • Release ID (mbid)
  • Type (Album, Single, etc.)
  • First release date

Renaming Files

Once you have a release ID, use the main tool to rename your files:

# Using a release ID (most accurate)
go run . -mbid <release-mbid> -dir "/path/to/music/folder"# Using a release group ID (tool picks best release)
go run . -rgid <release-group-mbid> -dir "/path/to/music/folder"

Example

$ go run . -rgid d6b52521-0dfa-390f-970f-790174c22752 -dir "/path/to/Michael Jackson - Dangerous/"
Using release ae5efacd-f75f-432a-9f22-b35d3169d21f: Dangerous
01: "Michael Jackson - Jam.flac" ->"01. Jam.flac"
02: "Michael Jackson - Why You Wanna Trip On Me.flac" ->"02. Why You Wanna Trip on Me.flac"
03: "Michael Jackson - In The Closet.flac" ->"03. In the Closet.flac"
...
14: "Michael Jackson - Dangerous.flac" ->"14. Dangerous.flac"

Features

  • Fuzzy matching - Intelligently matches existing filenames to track titles
  • Safe renaming - Sanitizes filenames to remove problematic characters
  • Multi-disc support - Handles albums spanning multiple discs
  • Preserves extensions - Keeps original file extensions (.flac, .mp3, etc.)
  • Smart release selection - When using rgid, prioritizes official releases from preferred regions

Flags

main

  • -mbid - MusicBrainz Release MBID (recommended for accuracy)
  • -rgid - MusicBrainz Release Group MBID (script selects best release)
  • -dir - Directory containing audio files (default: current directory)
  • --artist-in-filename - Add artist name prefix to filenames

mbfind

  • -artist - Artist name (required)
  • -album - Album title (required)
  • -limit - Number of results to display (default: 10)

How It Works

  1. Queries the MusicBrainz API for official track listings
  2. Scans your directory for audio files
  3. Matches files to tracks using normalized title comparison
  4. Renames files to format: ## Track Title.ext

Requirements

  • Go 1.16 or higher
  • Internet connection (for MusicBrainz API access)

Notes

  • The tool skips hidden files (starting with .)
  • If file count doesn't match track count, it proceeds with a warning
  • Original file extensions are preserved
  • Windows-incompatible characters are replaced with safe alternatives

License

GNU GPLv3
Contact: decbrks@pm.me

About

Indexing albums can be a nightmare.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages