Issue #2919: fix — look for a file named post.json in the list’s landing folder and, if found, parse its filters array for strings to exclude from the final list.

This commit is contained in:
Steven Black
2025-07-12 22:53:37 -04:00
parent 8ae357794a
commit 777857f176
2 changed files with 23 additions and 0 deletions

8
post.json Normal file
View File

@@ -0,0 +1,8 @@
{
"filters": [
"allegro",
"bilet",
"-pl",
"npost"
]
}

View File

@@ -951,6 +951,17 @@ def remove_dups_and_excl(mergefile, exclusionregexes, outputfile=None):
else:
finalfile = outputfile
# analyze any post.json here
post_json_path = os.path.join(os.path.dirname(finalfile.name), "post.json")
filters = []
if os.path.isfile(post_json_path):
try:
with open(post_json_path, "r", encoding="UTF-8") as post_file:
post_data = json.load(post_file)
filters = post_data.get("filters", [])
except Exception as e:
print_failure(f"Error reading post.json: {e}")
mergefile.seek(0) # reset file pointer
hostnames = {"localhost", "localhost.localdomain", "local", "broadcasthost"}
exclusions = settings["exclusions"]
@@ -961,6 +972,10 @@ def remove_dups_and_excl(mergefile, exclusionregexes, outputfile=None):
# Explicit encoding
line = line.decode("UTF-8")
# Apply post.json filters
if filters and any(f in line for f in filters):
continue
# replace tabs with space
line = line.replace("\t+", " ")