adjust github provier to use exporter model
This commit is contained in:
parent
a99661892a
commit
b9a06d7a7d
1 changed files with 25 additions and 33 deletions
|
@ -1,19 +1,23 @@
|
||||||
import json
|
from functools import lru_cache
|
||||||
|
|
||||||
|
from .. import paths
|
||||||
|
|
||||||
|
@lru_cache()
|
||||||
|
def ghexport():
|
||||||
|
from kython import import_file
|
||||||
|
return import_file(paths.ghexport.repo / 'model.py')
|
||||||
|
|
||||||
|
|
||||||
from typing import Dict, List, Union, Any, NamedTuple, Tuple, Optional
|
from typing import Dict, List, Union, Any, NamedTuple, Tuple, Optional
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import pytz
|
||||||
|
|
||||||
BPATH = Path("/L/backups/github-events")
|
|
||||||
|
|
||||||
def get_logger():
|
def get_logger():
|
||||||
return logging.getLogger('github-provider')
|
return logging.getLogger('my.github') # TODO __package__???
|
||||||
|
|
||||||
|
|
||||||
def iter_events():
|
|
||||||
for f in list(sorted(BPATH.glob('*.json'))):
|
|
||||||
yield f
|
|
||||||
|
|
||||||
|
|
||||||
class Event(NamedTuple):
|
class Event(NamedTuple):
|
||||||
|
@ -69,36 +73,24 @@ def _get_summary(e) -> Tuple[str, Optional[str]]:
|
||||||
else:
|
else:
|
||||||
return tp, None
|
return tp, None
|
||||||
|
|
||||||
|
|
||||||
|
def get_model():
|
||||||
|
sources = list(sorted(paths.ghexport.export_dir.glob('*.json')))
|
||||||
|
model = ghexport().Model(sources)
|
||||||
|
return model
|
||||||
|
|
||||||
|
|
||||||
def get_events():
|
def get_events():
|
||||||
logger = get_logger()
|
# from kython import setup_logzero
|
||||||
|
# import logging
|
||||||
events: Dict[str, Any] = {}
|
# setup_logzero(ghexport().get_logger(), level=logging.INFO)
|
||||||
for f in iter_events():
|
model = get_model()
|
||||||
with Path(f).open() as fo:
|
|
||||||
jj = json.load(fo)
|
|
||||||
|
|
||||||
# quick hack to adapt for both old & new formats
|
|
||||||
if 'events' in jj:
|
|
||||||
jj = jj['events']
|
|
||||||
#
|
|
||||||
|
|
||||||
for e in jj:
|
|
||||||
eid = e['id']
|
|
||||||
prev = events.get(eid, None)
|
|
||||||
if prev is not None:
|
|
||||||
if prev != e:
|
|
||||||
# a = prev['payload']
|
|
||||||
# b = e['payload']
|
|
||||||
# TODO err... push_id has changed??? wtf??
|
|
||||||
logger.error(f"Mismatch in \n{e}\n vs \n{prev}")
|
|
||||||
events[eid] = e
|
|
||||||
# TODO utc?? localize
|
|
||||||
ev = [Event(
|
ev = [Event(
|
||||||
dt=datetime.strptime(d['created_at'], '%Y-%m-%dT%H:%M:%SZ'),
|
dt=pytz.utc.localize(datetime.strptime(d['created_at'], '%Y-%m-%dT%H:%M:%SZ')),
|
||||||
summary=_get_summary(d)[0],
|
summary=_get_summary(d)[0],
|
||||||
link=_get_summary(d)[1],
|
link=_get_summary(d)[1],
|
||||||
eid=d['id'],
|
eid=d['id'],
|
||||||
) for d in events.values()]
|
) for d in model.events()]
|
||||||
return sorted(ev, key=lambda e: e.dt)
|
return sorted(ev, key=lambda e: e.dt)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue