def event_from_row(r): return surprise.event(event_id = r['event_id'], wager_id = r['wager_id'], choose_home = r['choose_home'], choose_tie = r['choose_tie'], choose_away = r['choose_away'], home_team = r['home_team'], away_team = r['away_team'], home_score = r['home_score'], away_score = r['away_score'], author = r['author'])
def parse_wager(w): def parse_selection(s): return { "home": (True if "home" in s else False), "tie": (True if "tie" in s else False), "away": (True if "away" in s else False), } def parse_datetime(t): return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(t / 1000)) # parse selections rawSelections = w["wager"]["selections"][0]["outcomes"] selections = enumerate(map(lambda s: parse_selection(s), rawSelections)) selections = map(lambda (i, s): (i, s), selections) # make dictionary with id as a key for easy addressing # (even though the array is probably in order anyway) rows = dict(map(lambda r: (int(r["id"]), r), w["draw"]["rows"])) def getScore(d, k): if "score" in d: return d["score"][k] events = map( lambda (i, s): surprise.event( row_id=i, choose_home=s["home"], choose_tie=s["tie"], choose_away=s["away"], home_team=rows[i]["outcome"]["home"]["name"], away_team=rows[i]["outcome"]["away"]["name"], home_score=getScore(rows[i]["result"], "home"), away_score=getScore(rows[i]["result"], "away"), ), selections, ) # parse wager high level data, create wager wager_date = parse_datetime(w["wager"]["transactionTime"]) external_id = w["wager"]["id"] stake = w["wager"]["stake"] system_size = w["wager"]["systemLevel"] win_amount = w["winning"]["amount"] return surprise.wager( wager_date=wager_date, ext_id=external_id, stake=stake, system_size=system_size, win_amount=win_amount, events=events, )
def get_wagers(session, txs): def get_wager(session, tx_id): r = session.get('https://www.veikkaus.fi/api/v1/sport-games/wagers/'+tx_id, headers=headers) return json.loads(r.text) def parse_selection(s): return {'home': (True if 'home' in s else False), 'tie': (True if 'tie' in s else False), 'away': (True if 'away' in s else False) } w = map(lambda x: get_wager(session,x), txs) w = filter(lambda x: 'draw' in x and x['draw']['gameName'] == 'SPORT', w) #parse selections rawSelections = w[0]['wager']['selections'][0]['outcomes'] selections = enumerate(map(lambda s: parse_selection(s), rawSelections)) selections = map(lambda (i, s): (i,s), selections) #make dictionary with id as a key for easy addressing #(even though the array is probably in order anyway) rows = dict(map(lambda r: (int(r['id']), r), w[0]['draw']['rows'])) events = map(lambda (i,s): surprise.event( row_id=i, choose_home=s['home'], choose_tie=s['tie'], choose_away=s['away'], home_team=rows[i]['outcome']['home']['name'], away_team=rows[i]['outcome']['away']['name'], home_score=rows[i]['result']['score']['home'], away_score=rows[i]['result']['score']['away'] ), selections) #parse wager high level data, create wager wager = surprise.wager(events=events) return wager