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

@ -203,3 +203,33 @@ def test_regex_should_be_skipped() -> None:
)
reader.delete_tag(feed, "regex_blacklist_author")
assert entry_should_be_skipped(reader, first_entry[0]) is False, f"Entry should not be skipped: {first_entry[0]}"
def test_domain_blacklist_should_be_skipped() -> None:
"""Domain-wide blacklist 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 feed_has_blacklist_tags(reader, feed) is False, "Feed should not have blacklist tags"
assert entry_should_be_skipped(reader, first_entry) is False, "Entry should not be skipped"
reader.set_tag(
(),
"domain_blacklist",
{
"lovinator.space": {
"blacklist_author": "TheLovinator",
"regex_blacklist_title": r"fvnnn\\w+",
},
},
) # pyright: ignore[reportArgumentType]
assert feed_has_blacklist_tags(reader, feed) is True, "Domain blacklist should count as blacklist tags"
assert entry_should_be_skipped(reader, first_entry) is True, "Entry should be skipped by domain blacklist"