mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 16:59:12 +00:00
feat(filters): add support for feed description (#922)
* feat(filters): match description * feat(filters): support description * chore: remove match logic for description * fix: update rss tests
This commit is contained in:
parent
058627f4e5
commit
e5b4ded725
9 changed files with 105 additions and 7 deletions
|
@ -190,6 +190,9 @@ func (r *FilterRepo) FindByID(ctx context.Context, filterID int) (*domain.Filter
|
|||
"match_release_tags",
|
||||
"except_release_tags",
|
||||
"use_regex_release_tags",
|
||||
"match_description",
|
||||
"except_description",
|
||||
"use_regex_description",
|
||||
"scene",
|
||||
"freeleech",
|
||||
"freeleech_percent",
|
||||
|
@ -253,11 +256,11 @@ func (r *FilterRepo) FindByID(ctx context.Context, filterID int) (*domain.Filter
|
|||
}
|
||||
|
||||
var f domain.Filter
|
||||
var minSize, maxSize, maxDownloadsUnit, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, matchReleaseTags, exceptReleaseTags, freeleechPercent, shows, seasons, episodes, years, artists, albums, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags, tagsMatchLogic, exceptTagsMatchLogic, extScriptCmd, extScriptArgs, extWebhookHost, extWebhookData sql.NullString
|
||||
var minSize, maxSize, maxDownloadsUnit, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, matchReleaseTags, exceptReleaseTags, matchDescription, exceptDescription, freeleechPercent, shows, seasons, episodes, years, artists, albums, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags, tagsMatchLogic, exceptTagsMatchLogic, extScriptCmd, extScriptArgs, extWebhookHost, extWebhookData sql.NullString
|
||||
var useRegex, scene, freeleech, hasLog, hasCue, perfectFlac, extScriptEnabled, extWebhookEnabled sql.NullBool
|
||||
var delay, maxDownloads, logScore, extWebhookStatus, extScriptStatus sql.NullInt32
|
||||
|
||||
if err := row.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &f.Priority, &maxDownloads, &maxDownloadsUnit, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &matchReleaseTags, &exceptReleaseTags, &f.UseRegexReleaseTags, &scene, &freeleech, &freeleechPercent, &f.SmartEpisode, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), pq.Array(&f.MatchHDR), pq.Array(&f.ExceptHDR), pq.Array(&f.MatchOther), pq.Array(&f.ExceptOther), &years, &artists, &albums, pq.Array(&f.MatchReleaseTypes), pq.Array(&f.Formats), pq.Array(&f.Quality), pq.Array(&f.Media), &logScore, &hasLog, &hasCue, &perfectFlac, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, pq.Array(&f.MatchLanguage), pq.Array(&f.ExceptLanguage), &tags, &exceptTags, &tagsMatchLogic, &exceptTagsMatchLogic, pq.Array(&f.Origins), pq.Array(&f.ExceptOrigins), &extScriptEnabled, &extScriptCmd, &extScriptArgs, &extScriptStatus, &extWebhookEnabled, &extWebhookHost, &extWebhookData, &extWebhookStatus, &f.CreatedAt, &f.UpdatedAt); err != nil {
|
||||
if err := row.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &f.Priority, &maxDownloads, &maxDownloadsUnit, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &matchReleaseTags, &exceptReleaseTags, &f.UseRegexReleaseTags, &matchDescription, &exceptDescription, &f.UseRegexDescription, &scene, &freeleech, &freeleechPercent, &f.SmartEpisode, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), pq.Array(&f.MatchHDR), pq.Array(&f.ExceptHDR), pq.Array(&f.MatchOther), pq.Array(&f.ExceptOther), &years, &artists, &albums, pq.Array(&f.MatchReleaseTypes), pq.Array(&f.Formats), pq.Array(&f.Quality), pq.Array(&f.Media), &logScore, &hasLog, &hasCue, &perfectFlac, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, pq.Array(&f.MatchLanguage), pq.Array(&f.ExceptLanguage), &tags, &exceptTags, &tagsMatchLogic, &exceptTagsMatchLogic, pq.Array(&f.Origins), pq.Array(&f.ExceptOrigins), &extScriptEnabled, &extScriptCmd, &extScriptArgs, &extScriptStatus, &extWebhookEnabled, &extWebhookHost, &extWebhookData, &extWebhookStatus, &f.CreatedAt, &f.UpdatedAt); err != nil {
|
||||
return nil, errors.Wrap(err, "error scanning row")
|
||||
}
|
||||
|
||||
|
@ -272,6 +275,8 @@ func (r *FilterRepo) FindByID(ctx context.Context, filterID int) (*domain.Filter
|
|||
f.ExceptReleaseGroups = exceptReleaseGroups.String
|
||||
f.MatchReleaseTags = matchReleaseTags.String
|
||||
f.ExceptReleaseTags = exceptReleaseTags.String
|
||||
f.MatchDescription = matchDescription.String
|
||||
f.ExceptDescription = exceptDescription.String
|
||||
f.FreeleechPercent = freeleechPercent.String
|
||||
f.Shows = shows.String
|
||||
f.Seasons = seasons.String
|
||||
|
@ -333,6 +338,9 @@ func (r *FilterRepo) findByIndexerIdentifier(ctx context.Context, indexer string
|
|||
"f.match_release_tags",
|
||||
"f.except_release_tags",
|
||||
"f.use_regex_release_tags",
|
||||
"f.match_description",
|
||||
"f.except_description",
|
||||
"f.use_regex_description",
|
||||
"f.scene",
|
||||
"f.freeleech",
|
||||
"f.freeleech_percent",
|
||||
|
@ -406,11 +414,11 @@ func (r *FilterRepo) findByIndexerIdentifier(ctx context.Context, indexer string
|
|||
for rows.Next() {
|
||||
var f domain.Filter
|
||||
|
||||
var minSize, maxSize, maxDownloadsUnit, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, matchReleaseTags, exceptReleaseTags, freeleechPercent, shows, seasons, episodes, years, artists, albums, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags, tagsMatchLogic, exceptTagsMatchLogic, extScriptCmd, extScriptArgs, extWebhookHost, extWebhookData sql.NullString
|
||||
var minSize, maxSize, maxDownloadsUnit, matchReleases, exceptReleases, matchReleaseGroups, exceptReleaseGroups, matchReleaseTags, exceptReleaseTags, matchDescription, exceptDescription, freeleechPercent, shows, seasons, episodes, years, artists, albums, matchCategories, exceptCategories, matchUploaders, exceptUploaders, tags, exceptTags, tagsMatchLogic, exceptTagsMatchLogic, extScriptCmd, extScriptArgs, extWebhookHost, extWebhookData sql.NullString
|
||||
var useRegex, scene, freeleech, hasLog, hasCue, perfectFlac, extScriptEnabled, extWebhookEnabled sql.NullBool
|
||||
var delay, maxDownloads, logScore, extWebhookStatus, extScriptStatus sql.NullInt32
|
||||
|
||||
if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &f.Priority, &maxDownloads, &maxDownloadsUnit, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &matchReleaseTags, &exceptReleaseTags, &f.UseRegexReleaseTags, &scene, &freeleech, &freeleechPercent, &f.SmartEpisode, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), pq.Array(&f.MatchHDR), pq.Array(&f.ExceptHDR), pq.Array(&f.MatchOther), pq.Array(&f.ExceptOther), &years, &artists, &albums, pq.Array(&f.MatchReleaseTypes), pq.Array(&f.Formats), pq.Array(&f.Quality), pq.Array(&f.Media), &logScore, &hasLog, &hasCue, &perfectFlac, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, pq.Array(&f.MatchLanguage), pq.Array(&f.ExceptLanguage), &tags, &exceptTags, &tagsMatchLogic, &exceptTagsMatchLogic, pq.Array(&f.Origins), pq.Array(&f.ExceptOrigins), &extScriptEnabled, &extScriptCmd, &extScriptArgs, &extScriptStatus, &extWebhookEnabled, &extWebhookHost, &extWebhookData, &extWebhookStatus, &f.CreatedAt, &f.UpdatedAt); err != nil {
|
||||
if err := rows.Scan(&f.ID, &f.Enabled, &f.Name, &minSize, &maxSize, &delay, &f.Priority, &maxDownloads, &maxDownloadsUnit, &matchReleases, &exceptReleases, &useRegex, &matchReleaseGroups, &exceptReleaseGroups, &matchReleaseTags, &exceptReleaseTags, &f.UseRegexReleaseTags, &matchDescription, &exceptDescription, &f.UseRegexDescription, &scene, &freeleech, &freeleechPercent, &f.SmartEpisode, &shows, &seasons, &episodes, pq.Array(&f.Resolutions), pq.Array(&f.Codecs), pq.Array(&f.Sources), pq.Array(&f.Containers), pq.Array(&f.MatchHDR), pq.Array(&f.ExceptHDR), pq.Array(&f.MatchOther), pq.Array(&f.ExceptOther), &years, &artists, &albums, pq.Array(&f.MatchReleaseTypes), pq.Array(&f.Formats), pq.Array(&f.Quality), pq.Array(&f.Media), &logScore, &hasLog, &hasCue, &perfectFlac, &matchCategories, &exceptCategories, &matchUploaders, &exceptUploaders, pq.Array(&f.MatchLanguage), pq.Array(&f.ExceptLanguage), &tags, &exceptTags, &tagsMatchLogic, &exceptTagsMatchLogic, pq.Array(&f.Origins), pq.Array(&f.ExceptOrigins), &extScriptEnabled, &extScriptCmd, &extScriptArgs, &extScriptStatus, &extWebhookEnabled, &extWebhookHost, &extWebhookData, &extWebhookStatus, &f.CreatedAt, &f.UpdatedAt); err != nil {
|
||||
return nil, errors.Wrap(err, "error scanning row")
|
||||
}
|
||||
|
||||
|
@ -425,6 +433,8 @@ func (r *FilterRepo) findByIndexerIdentifier(ctx context.Context, indexer string
|
|||
f.ExceptReleaseGroups = exceptReleaseGroups.String
|
||||
f.MatchReleaseTags = matchReleaseTags.String
|
||||
f.ExceptReleaseTags = exceptReleaseTags.String
|
||||
f.MatchDescription = matchDescription.String
|
||||
f.ExceptDescription = exceptDescription.String
|
||||
f.FreeleechPercent = freeleechPercent.String
|
||||
f.Shows = shows.String
|
||||
f.Seasons = seasons.String
|
||||
|
@ -484,6 +494,9 @@ func (r *FilterRepo) Store(ctx context.Context, filter domain.Filter) (*domain.F
|
|||
"match_release_tags",
|
||||
"except_release_tags",
|
||||
"use_regex_release_tags",
|
||||
"match_description",
|
||||
"except_description",
|
||||
"use_regex_description",
|
||||
"scene",
|
||||
"freeleech",
|
||||
"freeleech_percent",
|
||||
|
@ -548,6 +561,9 @@ func (r *FilterRepo) Store(ctx context.Context, filter domain.Filter) (*domain.F
|
|||
filter.MatchReleaseTags,
|
||||
filter.ExceptReleaseTags,
|
||||
filter.UseRegexReleaseTags,
|
||||
filter.MatchDescription,
|
||||
filter.ExceptDescription,
|
||||
filter.UseRegexDescription,
|
||||
filter.Scene,
|
||||
filter.Freeleech,
|
||||
filter.FreeleechPercent,
|
||||
|
@ -631,6 +647,9 @@ func (r *FilterRepo) Update(ctx context.Context, filter domain.Filter) (*domain.
|
|||
Set("match_release_tags", filter.MatchReleaseTags).
|
||||
Set("except_release_tags", filter.ExceptReleaseTags).
|
||||
Set("use_regex_release_tags", filter.UseRegexReleaseTags).
|
||||
Set("match_description", filter.MatchDescription).
|
||||
Set("except_description", filter.ExceptDescription).
|
||||
Set("use_regex_description", filter.UseRegexDescription).
|
||||
Set("scene", filter.Scene).
|
||||
Set("freeleech", filter.Freeleech).
|
||||
Set("freeleech_percent", filter.FreeleechPercent).
|
||||
|
@ -746,6 +765,15 @@ func (r *FilterRepo) UpdatePartial(ctx context.Context, filter domain.FilterUpda
|
|||
if filter.UseRegexReleaseTags != nil {
|
||||
q = q.Set("use_regex_release_tags", filter.UseRegexReleaseTags)
|
||||
}
|
||||
if filter.MatchDescription != nil {
|
||||
q = q.Set("match_description", filter.MatchDescription)
|
||||
}
|
||||
if filter.ExceptDescription != nil {
|
||||
q = q.Set("except_description", filter.ExceptDescription)
|
||||
}
|
||||
if filter.UseRegexDescription != nil {
|
||||
q = q.Set("use_regex_description", filter.UseRegexDescription)
|
||||
}
|
||||
if filter.Scene != nil {
|
||||
q = q.Set("scene", filter.Scene)
|
||||
}
|
||||
|
|
|
@ -83,6 +83,9 @@ CREATE TABLE filter
|
|||
match_release_tags TEXT,
|
||||
except_release_tags TEXT,
|
||||
use_regex_release_tags BOOLEAN DEFAULT FALSE,
|
||||
match_description TEXT,
|
||||
except_description TEXT,
|
||||
use_regex_description BOOLEAN DEFAULT FALSE,
|
||||
scene BOOLEAN,
|
||||
freeleech BOOLEAN,
|
||||
freeleech_percent TEXT,
|
||||
|
@ -680,4 +683,12 @@ ADD COLUMN download_url TEXT;
|
|||
ADD COLUMN priority INTEGER DEFAULT 0;`,
|
||||
`ALTER TABLE notification
|
||||
ADD COLUMN topic text;`,
|
||||
`ALTER TABLE filter
|
||||
ADD COLUMN match_description TEXT;
|
||||
|
||||
ALTER TABLE filter
|
||||
ADD COLUMN except_description TEXT;
|
||||
|
||||
ALTER TABLE filter
|
||||
ADD COLUMN use_regex_description BOOLEAN DEFAULT FALSE;`,
|
||||
}
|
||||
|
|
|
@ -83,6 +83,9 @@ CREATE TABLE filter
|
|||
match_release_tags TEXT,
|
||||
except_release_tags TEXT,
|
||||
use_regex_release_tags BOOLEAN DEFAULT FALSE,
|
||||
match_description TEXT,
|
||||
except_description TEXT,
|
||||
use_regex_description BOOLEAN DEFAULT FALSE,
|
||||
scene BOOLEAN,
|
||||
freeleech BOOLEAN,
|
||||
freeleech_percent TEXT,
|
||||
|
@ -1073,4 +1076,12 @@ ADD COLUMN download_url TEXT;
|
|||
ADD COLUMN priority INTEGER DEFAULT 0;`,
|
||||
`ALTER TABLE notification
|
||||
ADD COLUMN topic text;`,
|
||||
`ALTER TABLE filter
|
||||
ADD COLUMN match_description TEXT;
|
||||
|
||||
ALTER TABLE filter
|
||||
ADD COLUMN except_description TEXT;
|
||||
|
||||
ALTER TABLE filter
|
||||
ADD COLUMN use_regex_description BOOLEAN DEFAULT FALSE;`,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue