feat(filters): add music filters (#91)

* feat(filters): add music filters

* feat: improve parsing and filtering

* feat: add red api support
This commit is contained in:
Ludvig Lundgren 2022-01-19 18:50:04 +01:00 committed by GitHub
parent 30c11d4ef1
commit 00bc8298ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 1053 additions and 52 deletions

View file

@ -158,6 +158,8 @@ func TestRelease_Parse(t *testing.T) {
ReleaseTags: "FLAC / Lossless / Log / 100% / Cue / CD",
Group: "",
Audio: "FLAC",
Format: "FLAC",
Quality: "Lossless",
Source: "CD",
HasCue: true,
HasLog: true,
@ -178,9 +180,9 @@ func TestRelease_Parse(t *testing.T) {
Tags: []string{"house, techno, tech.house, electro.house, future.house, bass.house, melodic.house"},
ReleaseTags: "MP3 / 320 / Cassette",
Group: "",
Audio: "MP3",
Format: "MP3",
Source: "Cassette",
Bitrate: "320",
Quality: "320",
},
wantErr: false,
},
@ -195,7 +197,8 @@ func TestRelease_Parse(t *testing.T) {
Clean: "The artist (ザ・フリーダムユニティ) Long album name",
ReleaseTags: "MP3 / V0 (VBR) / CD",
Group: "",
Audio: "MP3",
Format: "MP3",
Quality: "V0 (VBR)",
Source: "CD",
},
wantErr: false,
@ -212,6 +215,29 @@ func TestRelease_Parse(t *testing.T) {
ReleaseTags: "FLAC / Lossless / Log / 100% / Cue / CD",
Group: "",
Audio: "FLAC",
Format: "FLAC",
Quality: "Lossless",
Source: "CD",
HasCue: true,
HasLog: true,
LogScore: 100,
},
wantErr: false,
},
{
name: "parse_music_5",
fields: Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / 24bit Lossless / Log / 100% / Cue / CD",
},
want: Release{
TorrentName: "Artist - Albumname",
Clean: "Artist Albumname",
ReleaseTags: "FLAC / 24bit Lossless / Log / 100% / Cue / CD",
Group: "",
Audio: "FLAC",
Format: "FLAC",
Quality: "24bit Lossless",
Source: "CD",
HasCue: true,
HasLog: true,
@ -1031,6 +1057,192 @@ func TestRelease_CheckFilter(t *testing.T) {
},
want: true,
},
{
name: "match_music_1",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / 24bit Lossless / Log / 100% / Cue / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchCategories: "Album",
Artists: "Artist",
Sources: []string{"CD"},
Formats: []string{"FLAC"},
Quality: []string{"24bit Lossless"},
Log: true,
LogScore: 100,
Cue: true,
},
},
want: true,
},
{
name: "match_music_2",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "MP3 / 320 / WEB",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchCategories: "Album",
Artists: "Artist",
//Sources: []string{"CD"},
//Formats: []string{"FLAC"},
//Quality: []string{"24bit Lossless"},
PerfectFlac: true,
//Log: true,
//LogScore: 100,
//Cue: true,
},
},
want: false,
},
{
name: "match_music_3",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / Lossless / Log / 100% / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchCategories: "Album",
Artists: "Artist",
//Sources: []string{"CD"},
//Formats: []string{"FLAC"},
//Quality: []string{"24bit Lossless"},
PerfectFlac: true,
//Log: true,
//LogScore: 100,
//Cue: true,
},
},
want: false,
},
{
name: "match_music_4",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / Lossless / Log / 100% / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchCategories: "Album",
Artists: "Artist",
Sources: []string{"CD"},
Formats: []string{"FLAC"},
Quality: []string{"24bit Lossless"},
//PerfectFlac: true,
Log: true,
LogScore: 100,
Cue: true,
},
},
want: false,
},
{
name: "match_music_5",
fields: &Release{
TorrentName: "Artist - Albumname",
Year: 2022,
ReleaseTags: "FLAC / Lossless / Log / 100% / Cue / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchReleaseTypes: []string{"Album"},
Years: "2020-2022",
Artists: "Artist",
Sources: []string{"CD"},
Formats: []string{"FLAC"},
Quality: []string{"24bit Lossless", "Lossless"},
PerfectFlac: true,
Log: true,
LogScore: 100,
Cue: true,
},
},
want: true,
},
{
name: "match_music_6",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / Lossless / Log / 100% / Cue / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchReleaseTypes: []string{"Single"},
Artists: "Artist",
Sources: []string{"CD"},
Formats: []string{"FLAC"},
Quality: []string{"24bit Lossless", "Lossless"},
PerfectFlac: true,
Log: true,
LogScore: 100,
Cue: true,
},
},
want: false,
},
{
name: "match_music_7",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / Lossless / Log / 100% / Cue / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchReleaseTypes: []string{"Album"},
Artists: "Artiiiist",
Sources: []string{"CD"},
Formats: []string{"FLAC"},
Quality: []string{"24bit Lossless", "Lossless"},
PerfectFlac: true,
Log: true,
LogScore: 100,
Cue: true,
},
},
want: false,
},
{
name: "match_music_8",
fields: &Release{
TorrentName: "Artist - Albumname",
ReleaseTags: "FLAC / Lossless / Log / 100% / Cue / CD",
Category: "Album",
},
args: args{
filter: Filter{
Enabled: true,
MatchReleaseTypes: []string{"Album"},
Artists: "Artist",
Albums: "Albumname",
Sources: []string{"CD"},
Formats: []string{"FLAC"},
Quality: []string{"24bit Lossless", "Lossless"},
PerfectFlac: true,
Log: true,
LogScore: 100,
Cue: true,
},
},
want: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {