mirror of
https://github.com/idanoo/autobrr
synced 2025-07-22 16:29:12 +00:00
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:
parent
30c11d4ef1
commit
00bc8298ac
20 changed files with 1053 additions and 52 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue