Frequently Asked Questions¶
How do I change the update frequency?¶
Two settings control this:
- launchctl interval —
StartIntervalin plist (seconds between runs) - Incremental filter —
incremental_interval_minutesin config.yaml (skip tracks not modified recently)
Example: Run every hour, but only process tracks modified in last 30 minutes:
- plist:
<integer>3600</integer>(1 hour) - config:
incremental_interval_minutes: 30
See Automation for detailed launchctl setup.
How can I see what was changed?¶
Check <logs_base_dir>/csv/changes_report.csv. It contains:
- Track ID, name, artist, album
- Old and new values for genre/year
- Timestamp of change
Use this file with revert_years command to undo changes:
Can I exclude specific artists or albums?¶
Yes, add to exceptions.track_cleaning in your config file:
exceptions:
track_cleaning:
- artist: "Weird Al Yankovic" # Skip all albums
- artist: "Pink Floyd"
album: "The Wall" # Skip specific album only
Why are some years wrong?¶
Year determination uses scoring from 3 APIs (MusicBrainz, Discogs, iTunes). Sometimes:
- APIs disagree on the release year
- Remastered versions have different years
- Regional releases vary
To fix:
- Use
revert_yearsto restore the original year - Add the album to exceptions if it keeps getting the wrong year
- Use
restore_release_yearsto use Apple's built-in release year data
# Revert specific album
uv run python main.py revert_years --artist "Pink Floyd" --album "The Wall"
# Restore from Apple's release_year field
uv run python main.py restore_release_years --artist "Pink Floyd"
Is it safe to run on my library?¶
Yes, with caveats:
- Always run
--dry-runfirst to preview changes - Changes sync to iCloud immediately and cannot be undone via Time Machine
- Use
revert_yearswithchanges_report.csvto undo year changes - Genre changes have no built-in revert (restore from backup if needed)
Important
If you use iCloud Music Library, changes propagate immediately to all devices. There is no "undo" button.
How does genre determination work?¶
The app uses the "dominant genre" concept:
- For each artist, find the earliest added album in your library
- Use that album's genre as the "dominant" genre
- Apply it to all tracks by that artist
Why earliest album? The assumption is that your first album by an artist has the genre you intended when you added it to your library.
Set the right genre first
Before running, make sure your earliest album for each artist has the correct genre. All other albums will inherit it.
What APIs does it use for year lookup?¶
Three external APIs:
| API | What it provides |
|---|---|
| MusicBrainz | Original release year, high accuracy |
| Discogs | Release year, good for vinyl/reissues |
| iTunes Search | Apple's own release data |
The app queries all three and uses a scoring system to pick the most likely correct year.
Can I run it headless (without GUI)?¶
Yes, via launchctl daemon. See Automation for setup.
Requirements:
- Music.app must be running (even in background)
- Terminal/script must have Automation permissions
How do I update the app?¶
```bash test="skip" cd /path/to/GenreUpdater git pull uv sync # or pip install -e .