File size: 1,405 Bytes
f592f80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""Stable analysis identities and distinct, readable save names."""
from datetime import datetime, timezone
import re
import uuid


def timestamp():
    return datetime.now(timezone.utc).isoformat()


def session_identity(title, saved=None):
    saved = saved if isinstance(saved, dict) else {}
    identity = saved.get('session_id')
    try:
        identity = str(uuid.UUID(identity))
    except (ValueError, TypeError, AttributeError):
        identity = str(uuid.uuid4())
    created = saved.get('created_at')
    try:
        date = datetime.fromisoformat(created)
        if date.tzinfo is None: date = date.replace(tzinfo=timezone.utc)
    except (ValueError, TypeError):
        date = datetime.now(timezone.utc)
    created = date.isoformat()
    name = saved.get('session_name')
    if not isinstance(name, str) or not name.strip():
        title = ' '.join(str(title).split())[:70] or 'Untitled text'
        name = f"{title} — {date.astimezone().strftime('%Y-%m-%d %H:%M:%S %Z')} — {identity[:8]}"
    return {'session_id': identity, 'session_name': name, 'created_at': created}


def session_filename(identity, saved_at):
    name = re.sub(r'[^\w .-]+', '-', identity['session_name']).strip(' .-').encode('utf-8')[:140].decode('utf-8', errors='ignore')
    date = datetime.fromisoformat(saved_at).astimezone()
    return f"{name} — saved {date.strftime('%Y-%m-%d_%H-%M-%S-%f%z')}.json"