diff --git a/bpc.py b/bpc.py index 56064f33..a0e58093 100644 --- a/bpc.py +++ b/bpc.py @@ -7,7 +7,11 @@ import numbers import time from config import config -from companion import categorymap, commoditymap, bracketmap + +bracketmap = { 0: '', + 1: 'Low', + 2: 'Med', + 3: 'High', } def export(data, csv=False): @@ -26,16 +30,15 @@ def export(data, csv=False): h.write(header) for commodity in data['lastStarport']['commodities']: - if isinstance(commodity.get('demandBracket'), numbers.Integral) and commodity.get('categoryname') and categorymap.get(commodity['categoryname'], True): - h.write(('%s;%s;%s;%s;%s;%s;%s;%s;%s;\n' % ( - rowheader, - commoditymap.get(commodity['name'].strip(), commodity['name'].strip()), - commodity.get('sellPrice') and int(commodity['sellPrice']) or '', - commodity.get('buyPrice') and int(commodity['buyPrice']) or '', - int(commodity.get('demand', 0)) if commodity.get('demandBracket') else '', - bracketmap.get(commodity.get('demandBracket'), ''), - int(commodity.get('stock', 0)) if commodity.get('stockBracket') else '', - bracketmap.get(commodity.get('stockBracket'), ''), - timestamp)).encode('utf-8')) + h.write(('%s;%s;%s;%s;%s;%s;%s;%s;%s;\n' % ( + rowheader, + commodity['name'], + commodity['sellPrice'] or '', + commodity['buyPrice'] or '', + int(commodity['demand']) if commodity['demandBracket'] else '', + bracketmap[commodity['demandBracket']], + int(commodity['stock']) if commodity['stockBracket'] else '', + bracketmap[commodity['stockBracket']], + timestamp)).encode('utf-8')) h.close() diff --git a/companion.py b/companion.py index 3b1c84b4..36ddb1cf 100644 --- a/companion.py +++ b/companion.py @@ -5,6 +5,7 @@ import json import requests from collections import defaultdict from cookielib import LWPCookieJar +import numbers import os from os.path import dirname, join from requests.packages import urllib3 @@ -37,10 +38,6 @@ commoditymap= { 'Agricultural Medicines': 'Agri-Medicines', 'S A P8 Core Container': 'SAP 8 Core Container', 'Terrain Enrichment Systems': 'Land Enrichment Systems', } -bracketmap = { 1: 'Low', - 2: 'Med', - 3: 'High', } - class ServerError(Exception): def __str__(self): @@ -130,10 +127,11 @@ class Session: r.raise_for_status() try: - return json.loads(r.text) + data = json.loads(r.text) except: self.dump(r) raise ServerError() + return self.fixup(data) def close(self): self.state = Session.STATE_NONE @@ -144,8 +142,57 @@ class Session: pass self.session = None + + # Fixup anomalies in the recieved commodity data + def fixup(self, data): + commodities = data['lastStarport']['commodities'] + i=0 + while i