From d092c2563e8ad7087a9004edca4a09b827dda588 Mon Sep 17 00:00:00 2001 From: Julianne Swinoga Date: Sat, 20 Dec 2025 16:29:48 -0500 Subject: [PATCH 1/2] Rename feed_url_patterns to site_url_patterns (to match docs) --- internal/config/config.go | 4 ++-- internal/filter/filter.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index ac49a52..0bf985c 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -58,7 +58,7 @@ type ConfigFilters struct { EntryURLs []string `koanf:"entry_urls"` FeedTitlePatterns []string `koanf:"feed_title_patterns"` CategoryTitlePatterns []string `koanf:"category_title_patterns"` - FeedURLPatterns []string `koanf:"feed_url_patterns"` + SiteURLPatterns []string `koanf:"site_url_patterns"` EntryURLPatterns []string `koanf:"entry_url_patterns"` } @@ -135,7 +135,7 @@ func (c *Config) Validate() error { validatePatterns(digest.Filters.FeedTitlePatterns, "Filters.FeedTitlePatterns") validatePatterns(digest.Filters.CategoryTitlePatterns, "Filters.CategoryTitlePatterns") - validatePatterns(digest.Filters.FeedURLPatterns, "Filters.FeedURLPatterns") + validatePatterns(digest.Filters.SiteURLPatterns, "Filters.SiteURLPatterns") validatePatterns(digest.Filters.EntryURLPatterns, "Filters.EntryURLPatterns") } }, Config{}) diff --git a/internal/filter/filter.go b/internal/filter/filter.go index 163df54..d229f87 100644 --- a/internal/filter/filter.go +++ b/internal/filter/filter.go @@ -30,7 +30,7 @@ func NewMatcher(cfg config.ConfigFilters) (*Matcher, error) { return nil, err } - m.siteURLRegex, err = compileRegexes(cfg.FeedURLPatterns) + m.siteURLRegex, err = compileRegexes(cfg.SiteURLPatterns) if err != nil { return nil, err } @@ -159,6 +159,6 @@ func isEmpty(cfg config.ConfigFilters) bool { len(cfg.EntryURLs) == 0 && len(cfg.FeedTitlePatterns) == 0 && len(cfg.CategoryTitlePatterns) == 0 && - len(cfg.FeedURLPatterns) == 0 && + len(cfg.SiteURLPatterns) == 0 && len(cfg.EntryURLPatterns) == 0 } -- 2.54.0 From 8cdbcb76118d7c8900d2875097b5e38927157760 Mon Sep 17 00:00:00 2001 From: eleith Date: Sun, 21 Dec 2025 12:09:07 -0800 Subject: [PATCH 2/2] feat: add support for site_urls and site_url_patterns in config to maintain backward compatibility, feed_urls and feed_url_patterns are kept as legacy options. both variations are merged during processing. documentation has been updated to prefer site_* variations. --- docs/CONFIG.md | 4 ++-- internal/config/config.go | 3 +++ internal/filter/filter.go | 12 +++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/CONFIG.md b/docs/CONFIG.md index e16406a..6a13aa8 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -80,11 +80,11 @@ This section defines which entries are included in the digest. | `logic` | String | `OR` | Logic for combining different field conditions.
- `OR`: Match if *any* field condition is met.
- `AND`: Match only if *all* defined field conditions are met. | | `feed_titles` | String[] | - | Exact matches for the RSS feed title. | | `category_titles` | String[] | - | Exact matches for the Miniflux category title. | -| `site_urls` | String[] | - | Prefix matches for the feed's site URL. | +| `site_urls` | String[] | - | Prefix matches for the site URL. (Legacy: `feed_urls`) | | `entry_urls` | String[] | - | Prefix matches for the entry's URL. | | `feed_title_patterns` | String[] | - | Regex matches for the feed title. | | `category_title_patterns` | String[] | - | Regex matches for the category title. | -| `site_url_patterns` | String[] | - | Regex matches for the site URL. | +| `site_url_patterns` | String[] | - | Regex matches for the site URL. (Legacy: `feed_url_patterns`) | | `entry_url_patterns` | String[] | - | Regex matches for the entry URL. | **Note:** Conditions *within* a single list (e.g., multiple `feed_titles`) are always treated as **OR**. diff --git a/internal/config/config.go b/internal/config/config.go index 0bf985c..0c51d97 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -54,11 +54,13 @@ type ConfigFilters struct { Logic string `koanf:"logic" validate:"omitempty,oneof=AND OR"` FeedTitles []string `koanf:"feed_titles"` CategoryTitles []string `koanf:"category_titles"` + SiteURLs []string `koanf:"site_urls"` FeedURLs []string `koanf:"feed_urls"` EntryURLs []string `koanf:"entry_urls"` FeedTitlePatterns []string `koanf:"feed_title_patterns"` CategoryTitlePatterns []string `koanf:"category_title_patterns"` SiteURLPatterns []string `koanf:"site_url_patterns"` + FeedURLPatterns []string `koanf:"feed_url_patterns"` EntryURLPatterns []string `koanf:"entry_url_patterns"` } @@ -136,6 +138,7 @@ func (c *Config) Validate() error { validatePatterns(digest.Filters.FeedTitlePatterns, "Filters.FeedTitlePatterns") validatePatterns(digest.Filters.CategoryTitlePatterns, "Filters.CategoryTitlePatterns") validatePatterns(digest.Filters.SiteURLPatterns, "Filters.SiteURLPatterns") + validatePatterns(digest.Filters.FeedURLPatterns, "Filters.FeedURLPatterns") validatePatterns(digest.Filters.EntryURLPatterns, "Filters.EntryURLPatterns") } }, Config{}) diff --git a/internal/filter/filter.go b/internal/filter/filter.go index d229f87..134a6cb 100644 --- a/internal/filter/filter.go +++ b/internal/filter/filter.go @@ -30,7 +30,7 @@ func NewMatcher(cfg config.ConfigFilters) (*Matcher, error) { return nil, err } - m.siteURLRegex, err = compileRegexes(cfg.SiteURLPatterns) + m.siteURLRegex, err = compileRegexes(append(cfg.SiteURLPatterns, cfg.FeedURLPatterns...)) if err != nil { return nil, err } @@ -80,8 +80,8 @@ func (m *Matcher) Matches(entry *models.Entry, cfg config.ConfigFilters) bool { return false } - if (len(cfg.FeedURLs) > 0 || len(m.siteURLRegex) > 0) && - !matchString(entry.SiteURL, cfg.FeedURLs, m.siteURLRegex, false) { + if (len(cfg.SiteURLs) > 0 || len(cfg.FeedURLs) > 0 || len(m.siteURLRegex) > 0) && + !matchString(entry.SiteURL, append(cfg.SiteURLs, cfg.FeedURLs...), m.siteURLRegex, false) { return false } @@ -107,8 +107,8 @@ func (m *Matcher) Matches(entry *models.Entry, cfg config.ConfigFilters) bool { return true } - if (len(cfg.FeedURLs) > 0 || len(m.siteURLRegex) > 0) && - matchString(entry.SiteURL, cfg.FeedURLs, m.siteURLRegex, false) { + if (len(cfg.SiteURLs) > 0 || len(cfg.FeedURLs) > 0 || len(m.siteURLRegex) > 0) && + matchString(entry.SiteURL, append(cfg.SiteURLs, cfg.FeedURLs...), m.siteURLRegex, false) { return true } @@ -155,10 +155,12 @@ func matchString(value string, exacts []string, patterns []*regexp.Regexp, exact func isEmpty(cfg config.ConfigFilters) bool { return len(cfg.FeedTitles) == 0 && len(cfg.CategoryTitles) == 0 && + len(cfg.SiteURLs) == 0 && len(cfg.FeedURLs) == 0 && len(cfg.EntryURLs) == 0 && len(cfg.FeedTitlePatterns) == 0 && len(cfg.CategoryTitlePatterns) == 0 && len(cfg.SiteURLPatterns) == 0 && + len(cfg.FeedURLPatterns) == 0 && len(cfg.EntryURLPatterns) == 0 } -- 2.54.0