Importer: Resolve duplicate tracks in a single directory with different format/quality
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 31
Description
As a beets user with a large library of music, I want to import albums that have duplicate tracks in varying formats and bitrates. When using silent mode, I want beets to import only the highest quality copy into the library. This is so that my re-organized library will have the best sound quality available to me.
I'd like to be able to define rules that state a hierarchy of formats to prefer when importing duplicates - i.e. something like FLAC > AAC > MP3.
Within a given lossy format, I would like to be able to specify that beets import the highest resolution copy - i.e. import a 320 kbps MP3 instead of a 128 kbps MP3 of the same track.
If this were to be done with metadata only - one way to define duplicates robustly might be:
If artist, album artist, title, and track title match exactly for all tracks in an album folder, AND there are an even multiple of tracks that the album should have relative to the musicbrainz/discogs entry (i.e. 2x the number of tracks, 3x the number of tracks etc.) then import the preferred format as set by user configuration, and import the highest bitrate copy within that preferred format.
Chromaprint might be used to fingerprint tracks to detect exactly duplicates as well.
Contributor guide
Research direction
Begin with the importer’s duplicate-track handling and silent-mode configuration mentioned in the issue; inspect how metadata matching and format/bitrate preferences could fit before considering Chromaprint. Done means the scope and acceptance criteria are clear for selecting among duplicate formats and qualities during silent imports.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100