diff --git a/config.yml b/config.yml index 178ca14..eefb995 100644 --- a/config.yml +++ b/config.yml @@ -6,3 +6,6 @@ max_entries: 2 # Delete this line to get all feeds: - https://programadorwebvalencia.com/feed/ - https://republicaweb.es/feed/ +filter_strings: + - unwanted + - exclude_this diff --git a/rssingle.py b/rssingle.py index 040c7cd..973450d 100755 --- a/rssingle.py +++ b/rssingle.py @@ -87,6 +87,16 @@ def parse_rss_feed(url) -> feedparser.FeedParserDict: log.warning("Failed to parse RSS feed.") # Now, we could handle gracefully. +def filter_feed_entries(entry) -> bool: + """ + This function filters feed entries based on strings defined in config.yml. + """ + filter_strings = CONFIG.get("filter_strings", []) + for filter_str in filter_strings: + if filter_str.lower() in entry.get("title", "").lower() or filter_str.lower() in entry.get("summary", "").lower(): + log.debug(f"Entry filtered out: {entry['title']}") + return False + return True def main(): log.debug("Loading feed list into memory..") @@ -100,10 +110,14 @@ def main(): for entry in entries[:CONFIG["max_entries"]] if "max_entries" in CONFIG else entries: log.debug("New feed entry created.") + if not filter_feed_entries(entry): + continue # Skip this entry + fe = fg.add_entry() log.debug("Working on new feed entry..") + try: fe.id(entry["id"]) except KeyError: