From 2b9fc106a9c35c46312d20f8058f1c3192f859db Mon Sep 17 00:00:00 2001 From: CMDR furrycat Date: Sat, 12 Nov 2016 09:48:57 +0000 Subject: [PATCH] Moved EDDB search to separate module. --- eddb.py | 27 +++++++++++++++++++++++++++ plugin/admin/admin.py | 3 +++ plugin/shopping/shopping.py | 31 +++++-------------------------- 3 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 eddb.py diff --git a/eddb.py b/eddb.py new file mode 100644 index 0000000..4c73dea --- /dev/null +++ b/eddb.py @@ -0,0 +1,27 @@ +import json +import logging + +import bot + +log = logging.getLogger('eddb') + +def eddb_query(root, params, expand = None): + try: + queries = [] + for k, v in params.items(): + queries.append('{}[{}]={}'.format(root, k, v)) + if expand is not None: + queries.append('expand={}'.format(expand)) + fd = bot.open_url('https://eddb.io/{}/search?{}'.format(root, '&'.join(queries))) + parsed = json.loads(fd.read().decode('utf-8')) + fd.close() + return parsed + except: + log.exception('eddb_query') + return None + +def find_system(name, expand = None): + return eddb_query('system', { 'name': name }, expand) + +def find_station(params, expand = None): + return eddb_query('station', params, expand) diff --git a/plugin/admin/admin.py b/plugin/admin/admin.py index 154a9b5..9278d76 100644 --- a/plugin/admin/admin.py +++ b/plugin/admin/admin.py @@ -10,6 +10,7 @@ import cat class Admin(object): def __init__(self): self.discordlog = logging.getLogger('discord') + self.eddblog = logging.getLogger('eddb') self.botlog = logging.getLogger('catbot') self.db = None self.plugins = None @@ -86,6 +87,7 @@ class Admin(object): arg = args[0].lower() if arg == 'on': self.discordlog.setLevel(logging.DEBUG) + self.eddblog.setLevel(logging.DEBUG) self.botlog.setLevel(logging.DEBUG) if self.db is not None: self.db.log_level(logging.DEBUG) @@ -93,6 +95,7 @@ class Admin(object): self.plugins.log_level(logging.DEBUG) elif arg == 'off': self.discordlog.setLevel(logging.WARN) + self.eddb.setLevel(logging.INFO) self.botlog.setLevel(logging.INFO) if self.db is not None: self.db.log_level(logging.WARN) diff --git a/plugin/shopping/shopping.py b/plugin/shopping/shopping.py index c5f6a42..6b5afb0 100644 --- a/plugin/shopping/shopping.py +++ b/plugin/shopping/shopping.py @@ -1,6 +1,5 @@ import asyncio import json -import logging import math import os import re @@ -9,6 +8,7 @@ import shlex from plugins import PluginCommand import bot import cat +import eddb class Shopping(object): def __init__(self): @@ -141,7 +141,7 @@ class Shopping(object): filtered[i] = value[i] yield filtered except: - logging.exception('read_json') + log.exception('read_json') return None def parse_commodities(self, **args): @@ -172,27 +172,6 @@ class Shopping(object): for ship in self.read_json(self.SHIPS, include = self.SHIP_KEYS, **args): yield ship - def eddb_query(self, root, params, expand = None): - try: - queries = [] - for k, v in params.items(): - queries.append('{}[{}]={}'.format(root, k, v)) - if expand is not None: - queries.append('expand={}'.format(expand)) - fd = bot.open_url('https://eddb.io/{}/search?{}'.format(root, '&'.join(queries))) - parsed = json.loads(fd.read().decode('utf-8')) - fd.close() - return parsed - except: - logging.exception('eddb_query') - return None - - def find_system(self, name, expand = None): - return self.eddb_query('system', { 'name': name }, expand) - - def find_station(self, params, expand = None): - return self.eddb_query('station', params, expand) - def get_commodities_by_name(self, names): commodities = [] for commodity in self.parse_commodities(): @@ -308,7 +287,7 @@ class Shopping(object): reference_coords = None if system is not None: - systems = list(self.find_system(system)) + systems = list(eddb.find_system(system)) if len(systems) > 1: if systems[0]['name'].lower() != system.lower(): log.warning('More than one system matched {}.'.format(system)) @@ -323,7 +302,7 @@ class Shopping(object): reference_coords = { 'x': systems[0]['x'], 'y': systems[0]['y'], 'z': systems[0]['z'] } elif 'stations' in systems[0]: # Hack to get coords from station. - for station in self.find_station({ 'id': systems[0]['stations'][0]['id'], 'referenceSystemId': systems[0]['id'] }, 'system'): + for station in eddb.find_station({ 'id': systems[0]['stations'][0]['id'], 'referenceSystemId': systems[0]['id'] }, 'system'): reference_coords = { 'x': station['system']['x'], 'y': station['system']['y'], 'z': station['system']['z'] } break @@ -338,7 +317,7 @@ class Shopping(object): log.info(params) lines = [] - for station in self.find_station(params, 'system'): + for station in eddb.find_station(params, 'system'): lines.append(self.format_station(station, reference_coords)) if not len(lines): lines = ['*shrugs*'] -- 2.7.4