mirror of
https://github.com/logos-messaging/libchat.git
synced 2026-06-27 19:49:31 +00:00
35 lines
748 B
Python
35 lines
748 B
Python
|
|
#!/usr/bin/env python3
|
||
|
|
import re
|
||
|
|
import sys
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
TIMESTAMP_RE = re.compile(r'^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z)')
|
||
|
|
|
||
|
|
def parse_ts(s):
|
||
|
|
return datetime.strptime(s, "%Y-%m-%dT%H:%M:%S.%fZ")
|
||
|
|
|
||
|
|
def fmt_offset(ms):
|
||
|
|
if ms < 1000:
|
||
|
|
return f"+{ms:7.0f}ms"
|
||
|
|
else:
|
||
|
|
return f"+{ms/1000:7.3f}s "
|
||
|
|
|
||
|
|
lines = sys.stdin.readlines()
|
||
|
|
base = None
|
||
|
|
|
||
|
|
for line in lines:
|
||
|
|
m = TIMESTAMP_RE.match(line)
|
||
|
|
if not m:
|
||
|
|
print(line, end="")
|
||
|
|
continue
|
||
|
|
|
||
|
|
ts = parse_ts(m.group(1))
|
||
|
|
if base is None:
|
||
|
|
base = ts
|
||
|
|
|
||
|
|
delta_us = (ts - base).total_seconds() * 1_000_000
|
||
|
|
rounded_ms = round(delta_us / 5000) * 5
|
||
|
|
|
||
|
|
rest = line[m.end():]
|
||
|
|
print(f"{fmt_offset(rounded_ms)} {rest}", end="")
|