fix: a duplicate fold never deletes a lossless copy for a lossy one, nor folds two versions (M498)
release / govulncheck (push) Successful in 14s
release / web (push) Successful in 1m21s
release / go (push) Successful in 1m31s
release / android (push) Successful in 4m58s
release / integration (push) Successful in 5m0s
release / Build signed APK (releases and dev) (push) Successful in 5m7s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 15s
release / Verify release artifacts (tag releases only) (push) Skipped
release / govulncheck (push) Successful in 14s
release / web (push) Successful in 1m21s
release / go (push) Successful in 1m31s
release / android (push) Successful in 4m58s
release / integration (push) Successful in 5m0s
release / Build signed APK (releases and dev) (push) Successful in 5m7s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 15s
release / Verify release artifacts (tag releases only) (push) Skipped
The first album-copy fold pass on 2026-10-20 removed five FLACs (Måneskin Rush!, Weezer 2016) in favour of mp3s whose only edge was a recording MBID, and an explicit "Suite-Pee" for its clean version. ProposeSurvivor now ranks lossless before tag fit; tag fit still outranks file size, which is what the Humanz rips needed. The fold keys copies by their version words (title and file name), so a clean, live or instrumental copy holding the same title tag is linked, not folded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -244,7 +244,10 @@ func ResolveDuplicatesWith(
|
||||
|
||||
// foldAlbumCopies merges, in each cross-release group, the extra copies one
|
||||
// album holds of the song into the best of that album's copies: the one that
|
||||
// is not a video rip when only one is not, else ProposeSurvivor's choice. The
|
||||
// is not a video rip when only one is not, else ProposeSurvivor's choice.
|
||||
// Copies whose title or file name name different versions (versionWords) are
|
||||
// not folded: "Suite-Pee" and "Suite-Pee (Clean Version)" carried one title tag
|
||||
// on 2026-10-20, and the explicit copy went. The
|
||||
// copies on other releases stay and are linked as one song. At most budget
|
||||
// copies go. It returns how many went and the songs they were, and drops them
|
||||
// from their groups.
|
||||
@@ -260,7 +263,8 @@ func foldAlbumCopies(
|
||||
}
|
||||
onAlbum := map[string][]int{}
|
||||
for i, m := range g.members {
|
||||
k := syncpkg.FormatUUID(m.AlbumID) + "\x00" + MatchTitleKey(m.Title, m.ArtistName)
|
||||
k := syncpkg.FormatUUID(m.AlbumID) + "\x00" + MatchTitleKey(m.Title, m.ArtistName) +
|
||||
"\x00" + versionWords(m.Title, m.FilePath)
|
||||
onAlbum[k] = append(onAlbum[k], i)
|
||||
}
|
||||
gone := map[int]bool{}
|
||||
|
||||
Reference in New Issue
Block a user