initial
This commit is contained in:
parent
882fb6f424
commit
bea84cbd33
2 changed files with 47 additions and 0 deletions
|
@ -0,0 +1,43 @@
|
||||||
|
BPATH = "/L/backups/SMSBackupRestore"
|
||||||
|
import re
|
||||||
|
import pytz
|
||||||
|
_RE = re.compile(r'calls-\d+.xml')
|
||||||
|
|
||||||
|
from typing import Dict, List, NamedTuple, Iterator, Iterable
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
class Call(NamedTuple):
|
||||||
|
dt: datetime
|
||||||
|
duration_s: int
|
||||||
|
who: str
|
||||||
|
|
||||||
|
@property
|
||||||
|
def summary(self) -> str:
|
||||||
|
return f"talked with {self.who} for {self.duration_s}"
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_calls(fname: str) -> Iterator[Call]:
|
||||||
|
from lxml import etree # type: ignore
|
||||||
|
tr = etree.parse(fname)
|
||||||
|
for cxml in tr.findall('call'):
|
||||||
|
# TODO we've got local tz herer, not sure if useful..
|
||||||
|
# ok, so readable date is local datetime, cahnging throughout the backup
|
||||||
|
dt = pytz.utc.localize(datetime.utcfromtimestamp(int(cxml.get('date')) / 1000))
|
||||||
|
yield Call(
|
||||||
|
dt=dt,
|
||||||
|
duration_s=int(cxml.get('duration')),
|
||||||
|
who=cxml.get('contact_name') # TODO number if contact is unavail??
|
||||||
|
# TODO type? must be missing/outgoing/incoming
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_calls():
|
||||||
|
import os
|
||||||
|
calls: Dict[datetime, Call] = {}
|
||||||
|
for n in sorted([x for x in os.listdir(BPATH) if _RE.match(x)]):
|
||||||
|
# for c in _extract_calls(os.path.join(BPATH, n)):
|
||||||
|
# cc = calls.get(c.dt, None)
|
||||||
|
# if cc is not None and cc != c:
|
||||||
|
# print(f"WARNING: {cc} vs {c}")
|
||||||
|
calls.update({c.dt: c for c in _extract_calls(os.path.join(BPATH, n))})
|
||||||
|
# always replacing with latter is good, we get better contact names
|
||||||
|
return sorted(calls.values(), key=lambda c: c.dt)
|
|
@ -0,0 +1,4 @@
|
||||||
|
from calls import get_calls
|
||||||
|
|
||||||
|
for c in get_calls():
|
||||||
|
print(c)
|
Loading…
Add table
Reference in a new issue