From 6e85ec52e31e0a69e4e8e5cff8b93c1cbade621d Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Sun, 29 Jan 2023 06:50:27 -0800 Subject: [PATCH] fix(releases): check for duplicate tags (#681) * fix(releases): don't store duplicate tags * Update release.go --- internal/domain/release.go | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/internal/domain/release.go b/internal/domain/release.go index 53fd834..350f759 100644 --- a/internal/domain/release.go +++ b/internal/domain/release.go @@ -233,8 +233,29 @@ func (r *Release) ParseReleaseTagsString(tags string) { t := ParseReleaseTagString(cleanTags) + f := func(target *[]string, source []string) { + toappend := make([]string, 0, len(source)) + for _, t := range *target { + found := false + norm := rls.MustNormalize(t) + + for _, s := range source { + if rls.MustNormalize(s) == norm { + found = true + break + } + } + + if !found { + toappend = append(toappend, t) + } + } + + *target = append(*target, toappend...) + } + if len(t.Audio) > 0 { - r.Audio = append(r.Audio, t.Audio...) + f(&r.Audio, t.Audio) } if len(t.Bonus) > 0 { if sliceContainsSlice([]string{"Freeleech"}, t.Bonus) { @@ -245,10 +266,10 @@ func (r *Release) ParseReleaseTagsString(tags string) { r.Bonus = append(r.Bonus, t.Bonus...) } if len(t.Codec) > 0 { - r.Codec = append(r.Codec, t.Codec) + f(&r.Codec, append(make([]string, 0, 1), t.Codec)) } if len(t.Other) > 0 { - r.Other = append(r.Other, t.Other...) + f(&r.Other, t.Other) } if r.Origin == "" && t.Origin != "" { r.Origin = t.Origin