mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
refactor(wildcard): optimize and add caching (#1634)
* fix(wildcard): avoid excessive allocations every loop * are you going to Scarborough Fair? * ruby ruby ruby ruby * ride on, little murphy * shirley? * to the moon * reggie are you there? * code 99 * my doctorate is in Art History * helps to be consistent * tidy * slow and steady gets the clam * oysters were better anyway * DIAL TONE
This commit is contained in:
parent
bc0f4cc055
commit
982f7ddf68
13 changed files with 177 additions and 60 deletions
|
@ -7,12 +7,12 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/autobrr/autobrr/pkg/errors"
|
||||
"github.com/autobrr/autobrr/pkg/regexcache"
|
||||
"github.com/autobrr/autobrr/pkg/sanitize"
|
||||
"github.com/autobrr/autobrr/pkg/wildcard"
|
||||
|
||||
|
@ -774,7 +774,7 @@ func matchRegex(tag string, filterList string) bool {
|
|||
if filter == "" {
|
||||
continue
|
||||
}
|
||||
re, err := regexp.Compile(`(?i)(?:` + filter + `)`)
|
||||
re, err := regexcache.Compile(`(?i)(?:` + filter + `)`)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -205,6 +205,8 @@ func (p IRCParserOrpheus) replaceSeparator(s string) string {
|
|||
return strings.ReplaceAll(s, "–", "-")
|
||||
}
|
||||
|
||||
var lastDecimalTag = regexp.MustCompile(`^\d{1,2}$|^100$`)
|
||||
|
||||
func (p IRCParserOrpheus) Parse(rls *Release, vars map[string]string) error {
|
||||
// OPS uses en-dashes as separators, which causes moistari/rls to not parse the torrentName properly,
|
||||
// we replace the en-dashes with hyphens here
|
||||
|
@ -219,7 +221,7 @@ func (p IRCParserOrpheus) Parse(rls *Release, vars map[string]string) error {
|
|||
// Check and replace the last tag if it's a number between 0 and 100
|
||||
if len(splittedTags) > 0 {
|
||||
lastTag := splittedTags[len(splittedTags)-1]
|
||||
match, _ := regexp.MatchString(`^\d{1,2}$|^100$`, lastTag)
|
||||
match := lastDecimalTag.MatchString(lastTag)
|
||||
if match {
|
||||
splittedTags[len(splittedTags)-1] = lastTag + "%"
|
||||
}
|
||||
|
|
|
@ -7,8 +7,6 @@ import (
|
|||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
|
||||
"github.com/autobrr/autobrr/pkg/errors"
|
||||
)
|
||||
|
||||
var types map[string][]*TagInfo
|
||||
|
@ -261,13 +259,9 @@ func init() {
|
|||
// language `(?i)\b((DK|DKSUBS|DANiSH|DUTCH|NL|NLSUBBED|ENG|FI|FLEMiSH|FiNNiSH|DE|FRENCH|GERMAN|HE|HEBREW|HebSub|HiNDi|iCELANDiC|KOR|MULTi|MULTiSUBS|NORWEGiAN|NO|NORDiC|PL|PO|POLiSH|PLDUB|RO|ROMANiAN|RUS|SPANiSH|SE|SWEDiSH|SWESUB||))\b`)
|
||||
// websites `(?i)\b((AMBC|AS|AMZN|AMC|ANPL|ATVP|iP|CORE|BCORE|CMOR|CN|CBC|CBS|CMAX|CNBC|CC|CRIT|CR|CSPN|CW|DAZN|DCU|DISC|DSCP|DSNY|DSNP|DPLY|ESPN|FOX|FUNI|PLAY|HBO|HMAX|HIST|HS|HOTSTAR|HULU|iT|MNBC|MTV|NATG|NBC|NF|NICK|NRK|PMNT|PMNP|PCOK|PBS|PBSK|PSN|QIBI|SBS|SHO|STAN|STZ|SVT|SYFY|TLC|TRVL|TUBI|TV3|TV4|TVL|VH1|VICE|VMEO|UFC|USAN|VIAP|VIAPLAY|VL|WWEN|XBOX|YHOO|YT|RED))\b`)
|
||||
|
||||
for s, infos := range types {
|
||||
for _, infos := range types {
|
||||
for _, info := range infos {
|
||||
var err error
|
||||
//if info.re, err = regexp.Compile(`(?i)^(?:` + info.RE() + `)$`); err != nil {
|
||||
if info.re, err = regexp.Compile(`(?i)(?:` + info.RE() + `)`); err != nil {
|
||||
errors.Wrap(err, "tag %q has invalid regexp %q\n", s, info.re)
|
||||
}
|
||||
info.re = regexp.MustCompile(`(?i)(?:` + info.RE() + `)`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue