From a2b5f72aea63431c5c1a03e7d144caa3e0a2f694 Mon Sep 17 00:00:00 2001 From: q Date: Mon, 10 Nov 2025 12:33:11 +0200 Subject: [PATCH] fix aging bug --- files/daterake | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/files/daterake b/files/daterake index bae640a..61343f6 100755 --- a/files/daterake +++ b/files/daterake @@ -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, ) )