media: merge tvdb and trakt languages
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/l3uddz/nabarr/media/trakt"
|
"github.com/l3uddz/nabarr/media/trakt"
|
||||||
|
"github.com/l3uddz/nabarr/util"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -63,6 +64,7 @@ func (c *Client) GetShowInfo(item *FeedItem) (*Item, error) {
|
|||||||
Msg("Item was not found on tvdb")
|
Msg("Item was not found on tvdb")
|
||||||
} else if ti != nil {
|
} else if ti != nil {
|
||||||
mi.Tvdb = *ti
|
mi.Tvdb = *ti
|
||||||
|
mi.Languages = util.StringSliceMergeUnique(mi.Languages, []string{ti.Language})
|
||||||
}
|
}
|
||||||
|
|
||||||
return mi, nil
|
return mi, nil
|
||||||
|
|||||||
@@ -10,3 +10,34 @@ func StringSliceContains(slice []string, val string) bool {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StringSliceMergeUnique(existingSlice []string, mergeSlice []string) []string {
|
||||||
|
// add existing
|
||||||
|
data := make([]string, 0)
|
||||||
|
for _, es := range existingSlice {
|
||||||
|
if es == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
data = append(data, es)
|
||||||
|
}
|
||||||
|
|
||||||
|
// add merge items (unique)
|
||||||
|
for _, ms := range mergeSlice {
|
||||||
|
if ms == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
merge := true
|
||||||
|
for _, es := range data {
|
||||||
|
if strings.EqualFold(es, ms) {
|
||||||
|
merge = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if merge {
|
||||||
|
data = append(data, ms)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
func TestStringSliceContains(t *testing.T) {
|
func TestStringSliceContains(t *testing.T) {
|
||||||
type args struct {
|
type args struct {
|
||||||
@@ -37,3 +40,55 @@ func TestStringSliceContains(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStringSliceMergeUnique(t *testing.T) {
|
||||||
|
type args struct {
|
||||||
|
existingSlice []string
|
||||||
|
mergeSlice []string
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
want []string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "no change",
|
||||||
|
args: args{
|
||||||
|
existingSlice: []string{"test", "test2"},
|
||||||
|
mergeSlice: []string{"test", "Test2"},
|
||||||
|
},
|
||||||
|
want: []string{"test", "test2"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "no change empty",
|
||||||
|
args: args{
|
||||||
|
existingSlice: []string{},
|
||||||
|
mergeSlice: []string{},
|
||||||
|
},
|
||||||
|
want: []string{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "with change",
|
||||||
|
args: args{
|
||||||
|
existingSlice: []string{"test", "test2"},
|
||||||
|
mergeSlice: []string{"test", "Test2", "test3"},
|
||||||
|
},
|
||||||
|
want: []string{"test", "test2", "test3"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "with change no empty",
|
||||||
|
args: args{
|
||||||
|
existingSlice: []string{"", "en"},
|
||||||
|
mergeSlice: []string{"fr", "", "en"},
|
||||||
|
},
|
||||||
|
want: []string{"en", "fr"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := StringSliceMergeUnique(tt.args.existingSlice, tt.args.mergeSlice); !reflect.DeepEqual(got, tt.want) {
|
||||||
|
t.Errorf("StringSliceMergeUnique() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user