In [ ]:
import asyncio
from collections import OrderedDict
from datetime import datetime, timedelta
from puckdb import fetch, db

In [ ]:
TO_DATE = datetime(2017, 4, 10)
FROM_DATE = TO_DATE - timedelta(days=30)

In [ ]:
loop = asyncio.get_event_loop()

In [ ]:
loop.run_until_complete(db.setup())
games = loop.run_until_complete(fetch.get_games(from_date=FROM_DATE, to_date=TO_DATE))

In [ ]:
games.send(None)

In [ ]:
def get_all_plays():
    for game in games:
        for play in game['liveData']['plays']['allPlays']:
            yield play

In [ ]:
def get_all_players():
    for game in games:
        for id, player in game['gameData']['players'].items():
            yield player

In [ ]:
keys = dict()
for player in get_all_players():
    pp = player['primaryPosition']
    keys[pp['code']] = pp
keys

In [ ]:
keys = dict()
for play in get_all_plays():
    for info, val in play.items():
        if isinstance(val, dict):
            if info not in keys:
                keys[info] = dict()
            for subkey, subval in val.items():
                keys[info][subkey] = subval
        if isinstance(val, list):
            if info not in keys:
                keys[info] = list()
keys

In [ ]:
event_types = set()
for play in get_all_plays():
    event_types.add(play['result']['eventTypeId'])
event_types

In [ ]:
secondary = set()
for play in get_all_plays():
    if 'secondaryType' in play['result'] and play['result']['eventTypeId'] == 'GOAL':
        secondary.add(play['result']['secondaryType'])
secondary