Add domain-wide blacklist and whitelist functionality

This commit is contained in:
Joakim Hellsén 2026-04-12 23:51:05 +02:00
commit bdbd46ebd4
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
14 changed files with 930 additions and 305 deletions

View file

@ -184,3 +184,33 @@ def test_regex_should_be_sent() -> None:
assert should_be_sent(reader, first_entry[0]) is True, "Entry should be sent with newline-separated patterns"
reader.delete_tag(feed, "regex_whitelist_author")
assert should_be_sent(reader, first_entry[0]) is False, "Entry should not be sent"
def test_domain_whitelist_should_be_sent() -> None:
"""Domain-wide whitelist should apply to feeds on the same domain."""
reader: Reader = get_reader()
reader.add_feed(feed_url)
feed: Feed = reader.get_feed(feed_url)
reader.update_feeds()
entries: Iterable[Entry] = reader.get_entries(feed=feed)
first_entry: Entry | None = next(iter(entries), None)
assert first_entry is not None, "Expected at least one entry"
assert has_white_tags(reader, feed) is False, "Feed should not have whitelist tags"
assert should_be_sent(reader, first_entry) is False, "Entry should not be sent"
reader.set_tag(
(),
"domain_whitelist",
{
"lovinator.space": {
"whitelist_author": "TheLovinator",
"regex_whitelist_title": r"fvnnn\\w+",
},
},
) # pyright: ignore[reportArgumentType]
assert has_white_tags(reader, feed) is True, "Domain whitelist should count as whitelist tags"
assert should_be_sent(reader, first_entry) is True, "Entry should be sent by domain whitelist"