71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""Read hey-tracker.jsonl and display recent emails.
|
|
|
|
Usage:
|
|
hey-check # show last 2 days
|
|
hey-check 7 # show last 7 days
|
|
hey-check --all # show everything
|
|
hey-check --search FOI # search subjects and senders
|
|
"""
|
|
|
|
import json, sys
|
|
from datetime import datetime, timedelta, timezone
|
|
from pathlib import Path
|
|
|
|
# Derive vault root from script location: Meta/scripts/ -> vault root
|
|
SCRIPT_DIR = Path(__file__).parent
|
|
VAULT_DIR = SCRIPT_DIR.parent.parent
|
|
TRACKER = VAULT_DIR / "Meta" / "hey-tracker.jsonl"
|
|
|
|
def read_tracker():
|
|
if TRACKER.exists() and TRACKER.stat().st_size > 0:
|
|
return TRACKER.read_text().strip().split("\n")
|
|
return []
|
|
|
|
def main():
|
|
args = sys.argv[1:]
|
|
search = None
|
|
days = 2
|
|
show_all = False
|
|
|
|
if "--search" in args:
|
|
idx = args.index("--search")
|
|
search = args[idx + 1].lower() if idx + 1 < len(args) else ""
|
|
show_all = True
|
|
elif "--all" in args:
|
|
show_all = True
|
|
elif args and args[0].isdigit():
|
|
days = int(args[0])
|
|
|
|
cutoff = (datetime.now(timezone.utc) - timedelta(days=days)).strftime("%Y-%m-%d")
|
|
|
|
lines = read_tracker()
|
|
if not lines:
|
|
print("No tracker data available")
|
|
return
|
|
|
|
entries = []
|
|
for line in lines:
|
|
try:
|
|
entries.append(json.loads(line))
|
|
except Exception:
|
|
continue
|
|
|
|
for e in entries:
|
|
date = e.get("active_at", "")[:10]
|
|
if not show_all and date < cutoff:
|
|
continue
|
|
|
|
sender = e.get("sender_name", "")
|
|
subj = e.get("subject", "")
|
|
mailbox = e.get("mailbox", "")
|
|
tid = e.get("topic_id", "")
|
|
|
|
if search and search not in subj.lower() and search not in sender.lower() and search not in e.get("sender_email", "").lower():
|
|
continue
|
|
|
|
print(f"{date} | {mailbox:8} | {sender[:30]:30} | {subj[:65]} | {tid}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|