fix aging bug
This commit is contained in:
@@ -6,7 +6,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
__version__ = "20251107.02"
|
__version__ = "20251110.01"
|
||||||
|
|
||||||
|
|
||||||
def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5):
|
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):
|
def date2list(d):
|
||||||
return [date2day(d), date2week(d), date2month(d), date2year(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 = []
|
ids = []
|
||||||
reduced = []
|
reduced = []
|
||||||
for entry in entries:
|
for entry in entries:
|
||||||
id = date2id(entry[1])
|
id = date2id(entry[1])
|
||||||
age = (start_date - entry[1].date()).days
|
age = (start_date - entry[1].date()).days
|
||||||
if age > 0:
|
if age > 0 and age < max_age:
|
||||||
if id in ids:
|
if id in ids:
|
||||||
continue
|
continue
|
||||||
ids.append(id)
|
ids.append(id)
|
||||||
reduced.append(entry + [name, id])
|
reduced.append(entry + [name, id, age])
|
||||||
|
|
||||||
reduced.sort(key=lambda x: x[1], reverse=True)
|
reduced.sort(key=lambda x: x[1], reverse=True)
|
||||||
return reduced
|
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])
|
entries = sorted(entries, key=lambda x: x[1])
|
||||||
original_entries = entries.copy()
|
original_entries = entries.copy()
|
||||||
result = []
|
result = []
|
||||||
for i in range(head):
|
for i in range(min(head, len(entries))):
|
||||||
last_entry = entries.pop()
|
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()
|
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()
|
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()
|
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()
|
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)
|
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
|
return result, filtered
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ def main():
|
|||||||
if args.json:
|
if args.json:
|
||||||
print(
|
print(
|
||||||
json.dumps(
|
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,
|
indent=2,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user