fix aging bug
This commit is contained in:
@@ -6,7 +6,7 @@ import os
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
__version__ = "20251107.02"
|
||||
__version__ = "20251110.01"
|
||||
|
||||
|
||||
def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5):
|
||||
@@ -25,17 +25,17 @@ def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5):
|
||||
def date2list(d):
|
||||
return [date2day(d), date2week(d), date2month(d), date2year(d)]
|
||||
|
||||
def reduce(entries, date2id, start_date, name):
|
||||
def reduce(entries, date2id, start_date, name, max_age):
|
||||
ids = []
|
||||
reduced = []
|
||||
for entry in entries:
|
||||
id = date2id(entry[1])
|
||||
age = (start_date - entry[1].date()).days
|
||||
if age > 0:
|
||||
if age > 0 and age < max_age:
|
||||
if id in ids:
|
||||
continue
|
||||
ids.append(id)
|
||||
reduced.append(entry + [name, id])
|
||||
reduced.append(entry + [name, id, age])
|
||||
|
||||
reduced.sort(key=lambda x: x[1], reverse=True)
|
||||
return reduced
|
||||
@@ -43,22 +43,22 @@ def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5):
|
||||
entries = sorted(entries, key=lambda x: x[1])
|
||||
original_entries = entries.copy()
|
||||
result = []
|
||||
for i in range(head):
|
||||
for i in range(min(head, len(entries))):
|
||||
last_entry = entries.pop()
|
||||
result.append(last_entry + ["head", str(i + 1)])
|
||||
result.append(last_entry + ["head", str(i + 1), None])
|
||||
|
||||
start_date = result[-1][1].date()
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2day, start_date, "day")) if i < days])
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2day, start_date, "day", days*1)) if i < days])
|
||||
start_date = result[-1][1].date()
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2week, start_date, "week")) if i < weeks])
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2week, start_date, "week", weeks*7)) if i < weeks])
|
||||
start_date = result[-1][1].date()
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2month, start_date, "month")) if i < months])
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2month, start_date, "month", months*31)) if i < months])
|
||||
start_date = result[-1][1].date()
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2year, start_date, "year")) if i < years])
|
||||
|
||||
result.extend([entry for i, entry in enumerate(reduce(entries, date2year, start_date, "year",years*366)) if i < years])
|
||||
|
||||
result.sort(key=lambda x: x[1], reverse=True)
|
||||
|
||||
filtered = [f + ["removed", ""] for f in original_entries if f[0] not in [r[0] for r in result]]
|
||||
filtered = [f + ["removed", "", None] for f in original_entries if f[0] not in [r[0] for r in result]]
|
||||
|
||||
return result, filtered
|
||||
|
||||
@@ -123,7 +123,7 @@ def main():
|
||||
if args.json:
|
||||
print(
|
||||
json.dumps(
|
||||
[{"name": f[0], "date": printable_date(f[1]), "match": f[2], "id": f[3]} for f in keep + remove],
|
||||
[{"name": f[0], "date": printable_date(f[1]), "match": f[2], "match-id": f[3], "age":f[4]} for f in keep + remove],
|
||||
indent=2,
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user