From 224f66a77aa3afa5e06daec656ae97f6e31e0592 Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 3 May 2013 03:41:50 -0700 Subject: start over --- importer.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 importer.py (limited to 'importer.py') diff --git a/importer.py b/importer.py new file mode 100755 index 0000000..44c95dc --- /dev/null +++ b/importer.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 + +from http.client import HTTPSConnection +import json +import operator +from pprint import pprint + +import db + +def insert_kill(c, kill): + db.execute(c, 'INSERT INTO kills (kill_id, solar_system_id, kill_time, moon_id) VALUES(?, ?, ?, ?)', + kill['killID'], kill['solarSystemID'], kill['killTime'], kill['moonID']) + + victim = kill['victim'] + parambatch = [( + kill['killID'], 1, victim['characterID'], victim['characterName'], victim['shipTypeID'], + victim['allianceID'], victim['allianceName'], victim['corporationID'], victim['corporationName'], victim['factionID'], victim['factionName'], + victim['damageTaken'], None, None, None, + )] + for attacker in kill['attackers']: + parambatch.append(( + kill['killID'], 0, attacker['characterID'], attacker['characterName'], attacker['shipTypeID'], + attacker['allianceID'], attacker['allianceName'], attacker['corporationID'], attacker['corporationName'], attacker['factionID'], attacker['factionName'], + attacker['damageDone'], attacker['finalBlow'], attacker['securityStatus'], attacker['weaponTypeID'], + )) + c.executemany(''' + INSERT INTO characters ( + kill_id, victim, character_id, character_name, ship_type_id, + alliance_id, alliance_name, corporation_id, corporation_name, faction_id, faction_name, + damage, final_blow, security_status, weapon_type_id + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ''', parambatch + ) + + parambatch = [] + for item in kill['items']: + parambatch.append((kill['killID'], item['typeID'], item['flag'], + item['qtyDropped'], item['qtyDestroyed'], item['singleton'])) + c.executemany(''' + INSERT INTO items ( + kill_id, type_id, flag, dropped, destroyed, singleton + ) VALUES(?, ?, ?, ?, ?, ?) + ''', parambatch + ) + + db.conn.commit() + +def main(): + conn = HTTPSConnection('zkillboard.com', timeout=10) + with db.ykill_cursor() as c: + groups = db.query(c, 'SELECT groupID FROM eve.invGroups WHERE categoryID = ?', 6) + groups = list(map(operator.itemgetter('groupID'), groups)) + for i in range(0, len(groups), 10): + query_groups = map(str, groups[i:i+10]) + conn.request('GET', '/api/groupID/{}/api-only'.format(','.join(query_groups))) + response = conn.getresponse() + if response.status != 200: + raise Exception('got {} {} from zkb'.format(response.status, response.reason)) + kills = json.loads(response.read().decode('utf-8')) + response.close() + print('inserting', len(kills), 'kills') + for kill in kills: + insert_kill(c, kill) + +if __name__ == '__main__': + main() -- cgit v1.2.3