| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env python3
- from xml.etree import ElementTree
- import oursql
- import requests
- conn = oursql.connect(db='eve', user='eve', passwd='eve')
- rs = requests.session()
- def get_systemid(name):
- with conn as c:
- c.execute('SELECT solarSystemID FROM mapSolarSystems WHERE solarSystemName LIKE ?',
- (name,))
- return c.fetchone()[0]
- def iter_items():
- with conn as c:
- # metaGroupID's:
- # NULL or 1: Tech I
- # 2: Tech II
- # 3: storyline
- # 4: faction
- # 5: officer
- # 6: deadspace
- # 14: Tech III
- c.execute('''
- SELECT invTypes.typeID, typeName FROM invTypes
- LEFT JOIN invMetaTypes ON invMetaTypes.typeID = invTypes.typeID
- WHERE marketGroupID IS NOT NULL AND metaGroupID != 5
- ''')
- while True:
- r = c.fetchone()
- if r is None:
- break
- yield r
- def get_prices(typeid, systemid):
- url = 'http://api.eve-central.com/api/marketstat?typeid=%d&usesystem=%d' % (typeid, systemid)
- response = rs.get(url, stream=True)
- xml = ElementTree.fromstring(response.text)
- parent = xml.find('marketstat').find('type')
- buy = parent.findall('buy')[0].find('max')
- bid = float(buy.text)
- sell = parent.find('sell').find('min')
- ask = float(sell.text)
- volume = parent.find('all').find('volume')
- vol = int(volume.text)
- return bid, ask, vol
- def main():
- for system in ['amarr', 'rens', 'dodixie', 'hek']:
- systemid = get_systemid(system)
- with open(system, 'w') as f:
- for typeid, name in iter_items():
- bid, ask, vol = get_prices(typeid, systemid)
- score = (ask - bid) * vol
- f.write('%f\t%f\t%f\t%d\t%s\n' % (score, ask, bid, vol, name))
- if __name__ == '__main__':
- main()
|