From 626fa6f156e71062cf456066cead82da9e5a0341 Mon Sep 17 00:00:00 2001 From: ze0s <43699394+zze0s@users.noreply.github.com> Date: Tue, 10 Jan 2023 19:20:48 +0100 Subject: [PATCH] feat(indexers): irc parse support ignoring lines (#641) feat(indexers): irc support ignore line --- internal/announce/announce.go | 13 +++++++++---- internal/domain/indexer.go | 1 + internal/indexer/definitions/pixelhd.yaml | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/announce/announce.go b/internal/announce/announce.go index b73e6c1..75782b3 100644 --- a/internal/announce/announce.go +++ b/internal/announce/announce.go @@ -79,7 +79,7 @@ func (a *announceProcessor) processQueue(queue chan string) { // check should ignore - match, err := a.parseLine(parseLine.Pattern, parseLine.Vars, tmpVars, line) + match, err := a.parseLine(parseLine.Pattern, parseLine.Vars, tmpVars, line, parseLine.Ignore) if err != nil { a.log.Error().Err(err).Msgf("error parsing extract for line: %v", line) @@ -135,12 +135,12 @@ func (a *announceProcessor) AddLineToQueue(channel string, line string) error { return nil } -func (a *announceProcessor) parseLine(pattern string, vars []string, tmpVars map[string]string, line string) (bool, error) { +func (a *announceProcessor) parseLine(pattern string, vars []string, tmpVars map[string]string, line string, ignore bool) (bool, error) { if len(vars) > 0 { return a.parseExtract(pattern, vars, tmpVars, line) } - return a.parseMatchRegexp(pattern, tmpVars, line) + return a.parseMatchRegexp(pattern, tmpVars, line, ignore) } func (a *announceProcessor) parseExtract(pattern string, vars []string, tmpVars map[string]string, line string) (bool, error) { @@ -168,12 +168,17 @@ func (a *announceProcessor) parseExtract(pattern string, vars []string, tmpVars return true, nil } -func (a *announceProcessor) parseMatchRegexp(pattern string, tmpVars map[string]string, line string) (bool, error) { +func (a *announceProcessor) parseMatchRegexp(pattern string, tmpVars map[string]string, line string, ignore bool) (bool, error) { var re = regexp.MustCompile(`(?mi)` + pattern) groupNames := re.SubexpNames() for _, match := range re.FindAllStringSubmatch(line, -1) { for groupIdx, group := range match { + // if line should be ignored then lets return + if ignore { + return true, nil + } + name := groupNames[groupIdx] if name == "" { name = "raw" diff --git a/internal/domain/indexer.go b/internal/domain/indexer.go index c16dcd5..675dfbc 100644 --- a/internal/domain/indexer.go +++ b/internal/domain/indexer.go @@ -172,6 +172,7 @@ type IndexerIRCParseLine struct { Test []string `json:"test"` Pattern string `json:"pattern"` Vars []string `json:"vars"` + Ignore bool `json:"ignore"` } type IndexerIRCParseMatch struct { diff --git a/internal/indexer/definitions/pixelhd.yaml b/internal/indexer/definitions/pixelhd.yaml index 0136b46..ae53400 100644 --- a/internal/indexer/definitions/pixelhd.yaml +++ b/internal/indexer/definitions/pixelhd.yaml @@ -63,6 +63,11 @@ irc: parse: type: multi lines: + - test: + - "New torrent uploaded!" + pattern: '^New torrent uploaded!$' + ignore: true + - test: - "Title: Dragons Forever | Year: 1988 | URL: https://pixelhd.me/torrents.php?torrentid=23001" pattern: 'Title: (.*) \| Year: (.*) \| URL: (https?:\/\/.*\/).+id=(.+)' @@ -71,6 +76,7 @@ irc: - year - baseUrl - torrentId + - test: - "Uploader: Anon | Release Group: Px4K | Format: MP4 | Genre(s): action,comedy,romance" pattern: 'Uploader: (.*) \| Release Group: (.*) \| Format: (.*) \| Genre\(s\): (.*)'