From fed710785784c5203f63f6def3b8066b15f3089a Mon Sep 17 00:00:00 2001 From: blitzmann Date: Thu, 2 Oct 2014 22:24:40 -0400 Subject: [PATCH] Implement better system for item conversions / definitions --- service/conversions/__init__.py | 24 +++++ service/conversions/releaseOceanus.py | 60 +++++++++++++ service/conversions/skinnedShips.py | 63 ++++++++++++++ service/market.py | 121 +------------------------- 4 files changed, 150 insertions(+), 118 deletions(-) create mode 100644 service/conversions/__init__.py create mode 100644 service/conversions/releaseOceanus.py create mode 100644 service/conversions/skinnedShips.py diff --git a/service/conversions/__init__.py b/service/conversions/__init__.py new file mode 100644 index 000000000..a833b7022 --- /dev/null +++ b/service/conversions/__init__.py @@ -0,0 +1,24 @@ +""" +This module contains a list of item conversions that need to be done for pyfa. + +Each file in this module must contain a dictionary named CONVERSIONS in the +format of convertFrom: convertTo, with both key and value being a string of the +item's name. The name of the file is usually arbitrary unless it's used in logic +elsewhere (in which case can be accessed with CONVERSIONS_SEPARATE[name]) +""" + +import os + +# init parent dict +all = {} + +# init container to store the separate conversion packs in case we need them +packs = {} + +for filename in os.listdir(os.path.dirname(__file__)): + basename, extension = filename.rsplit('.', 1) + + if extension == "py" and basename not in ("__init__",): + conversionPack = __import__("%s.%s"%(__name__, basename), fromlist=True) + all.update(conversionPack.CONVERSIONS) + packs[basename] = conversionPack.CONVERSIONS diff --git a/service/conversions/releaseOceanus.py b/service/conversions/releaseOceanus.py new file mode 100644 index 000000000..bb1bcf17a --- /dev/null +++ b/service/conversions/releaseOceanus.py @@ -0,0 +1,60 @@ +""" +Convertion pack for Oceanus Module Tiericide +""" + +CONVERSIONS = { + "Basic Capacitor Flux Coil": "'Basic' Capacitor Flux Coil", + "Basic LADAR Backup Array": "Basic Ladar Backup Array", + "LADAR Backup Array I": "Ladar Backup Array I", + "LADAR Backup Array II": "Ladar Backup Array II", + "'Regard' Remote Capacitor Transmitter": "Small 'Regard' Remote Capacitor Transmitter", + "Prototype Freight Sensors": "Enduring Cargo Scanner", + "PL-0 Shipment Probe": "Scoped Cargo Scanner", + "Reserve LADAR Scanners": "Reserve Ladar Scanners", + "Emergency LADAR Scanners": "Emergency Ladar Scanners", + "Protected LADAR Backup Cluster I": "Protected Ladar Backup Cluster I", + "Sealed LADAR Backup Cluster": "Sealed Ladar Backup Cluster", + "Surrogate LADAR Reserve Array I": "Surrogate Ladar Reserve Array I", + "F-43 Repetitive LADAR Backup Sensors": "F-43 Repetitive Ladar Backup Sensors", + "Surplus LADAR Reserve Array": "Surplus Ladar Reserve Array", + "F-42 Reiterative LADAR Backup Sensors": "F-42 Reiterative Ladar Backup Sensors", + "Rudimentary Ship Scanner I": "Compact Ship Scanner", + "Residual Survey Scanner I": "Scoped Survey Scanner", + "Upgraded 'Malkuth' Light Missile Launcher": "Compact Light Missile Launcher", + "Limited 'Limos' Light Missile Launcher": "Ample Light Missile Launcher", + "Beta Reactor Control: Capacitor Flux I": "Compact Capacitor Flux Coil", + "Type-D Power Core Modification: Capacitor Flux": "Restrained Capacitor Flux Coil", + "Type-D Power Core Modification: Reaction Control": "Compact Reactor Control Unit", + "LADAR Firewall": "Ladar Firewall", + "Interior Type-E Cargo Identifier": "Scoped Cargo Scanner", + "Ta3 Perfunctory Vessel Probe": "Compact Ship Scanner", + "Speculative Ship Identifier I": "Compact Ship Scanner", + "Practical Type-E Ship Probe": "Compact Ship Scanner", + "ML-3 Amphilotite Mining Probe": "Scoped Survey Scanner", + "Rock-Scanning Sensor Array I": "Scoped Survey Scanner", + "'Dactyl' Type-E Asteroid Analyzer": "Scoped Survey Scanner", + "Partial Power Plant Manager: Capacitor Flux": "'Basic' Capacitor Flux Coil", + "Alpha Reactor Control: Capacitor Flux": "'Basic' Capacitor Flux Coil", + "Type-E Power Core Modification: Capacitor Flux": "'Basic' Capacitor Flux Coil", + "Marked Generator Refitting: Capacitor Flux": "'Basic' Capacitor Flux Coil", + "Local Power Plant Manager: Capacitor Flux I": "Restrained Capacitor Flux Coil", + "Mark I Generator Refitting: Capacitor Flux": "Compact Capacitor Flux Coil", + "Nanoelectrical Co-Processor": "Basic Co-Processor", + "Nanomechanical CPU Enhancer": "Basic Co-Processor", + "Quantum Co-Processor": "Basic Co-Processor", + "Photonic CPU Enhancer": "Basic Co-Processor", + "Nanomechanical CPU Enhancer I": "Upgraded Co-Processor", + "Quantum Co-Processor I": "Upgraded Co-Processor", + "Photonic CPU Enhancer I": "Upgraded Co-Processor", + "Partial Power Plant Manager: Reaction Control": "Basic Reactor Control Unit", + "Alpha Reactor Control: Reaction Control": "Basic Reactor Control Unit", + "Marked Generator Refitting: Reaction Control": "Basic Reactor Control Unit", + "Local Power Plant Manager: Reaction Control I is now": "Compact Reactor Control Unit", + "Mark I Generator Refitting: Reaction Control": "Compact Reactor Control Unit", + "Beta Reactor Control: Reaction Control I": "Compact Reactor Control Unit", + "Micro B88 Core Augmentation": "Compact Micro Auxiliary Power Core", + "Micro K-Exhaust Core Augmentation": "Compact Micro Auxiliary Power Core", + "Micro 'Vigor' Core Augmentation": "Navy Micro Auxiliary Power Core", + "Prototype 'Arbalest' Light Missile Launcher": "Compact Light Missile Launcher", + "Experimental TE-2100 Light Missile Launcher": "Ample Light Missile Launcher" +} diff --git a/service/conversions/skinnedShips.py b/service/conversions/skinnedShips.py new file mode 100644 index 000000000..074ac29d2 --- /dev/null +++ b/service/conversions/skinnedShips.py @@ -0,0 +1,63 @@ +""" +Conversion pack for skinned ships to their base hull. Unlike other conversion +packs, the name of this file is important as it is used in service.market to +flag as unpublished + +See GH issue #67 on why this is needed +""" + +CONVERSIONS = { + "Abaddon Kador Edition": "Abaddon", + "Abaddon Tash-Murkon Edition": "Abaddon", + "Aliastra Catalyst": "Catalyst", + "Bestower Tash-Murkon Edition": "Bestower", + "Brutix Serpentis Edition": "Brutix", + "Caracal Nugoeihuvi Edition": "Caracal", + "Caracal Wiyrkomi Edition": "Caracal", + "Catalyst Serpentis Edition": "Catalyst", + "Coercer Blood Raiders Edition": "Coercer", + "Cormorant Guristas Edition": "Cormorant", + "Cyclone Thukker Tribe Edition": "Cyclone", + "Ferox Guristas Edition": "Ferox", + "Hyperion Aliastra Edition": "Hyperion", + "Hyperion Innerzone Shipping Edition": "Hyperion", + "Incursus Aliastra Edition": "Incursus", + "Incursus Innerzone Shipping Edition": "Incursus", + "Inner Zone Shipping Catalyst": "Catalyst", + "Inner Zone Shipping Imicus": "Imicus", + "Intaki Syndicate Catalyst": "Catalyst", + "InterBus Catalyst": "Catalyst", + "Iteron Inner Zone Shipping Edition": "Iteron Mark V", + "Mackinaw ORE Development Edition": "Mackinaw", + "Maelstrom Krusual Edition": "Maelstrom", + "Maelstrom Nefantar Edition": "Maelstrom", + "Mammoth Nefantar Edition": "Mammoth", + "Merlin Nugoeihuvi Edition": "Merlin", + "Merlin Wiyrkomi Edition": "Merlin", + "Miasmos Amastris Edition": "Miasmos Quafe Ultra Edition", + "Miasmos Quafe Ultramarine Edition": "Miasmos Quafe Ultra Edition", + "Nefantar Thrasher": "Thrasher", + "Omen Kador Edition": "Omen", + "Omen Tash-Murkon Edition": "Omen", + "Orca ORE Development Edition": "Orca", + "Police Pursuit Comet": "Federation Navy Comet", + "Prophecy Blood Raiders Edition": "Prophecy", + "Punisher Kador Edition": "Punisher", + "Punisher Tash-Murkon Edition": "Punisher", + "Quafe Catalyst": "Catalyst", + "Rifter Krusual Edition": "Rifter", + "Rifter Nefantar Edition": "Rifter", + "Rokh Nugoeihuvi Edition": "Rokh", + "Rokh Wiyrkomi Edition": "Rokh", + "Rorqual ORE Development Edition": "Rorqual", + "Stabber Krusual Edition": "Stabber", + "Stabber Nefantar Edition": "Stabber", + "Sarum Magnate": "Magnate", + "Sukuuvestaa Heron": "Heron", + "Tash-Murkon Magnate": "Magnate", + "Tayra Wiyrkomi Edition": "Tayra", + "Thorax Aliastra Edition": "Thorax", + "Thorax Innerzone Shipping Edition": "Thorax", + "Thrasher Thukker Tribe Edition": "Thrasher", + "Vherokior Probe": "Probe" +} diff --git a/service/market.py b/service/market.py index 6d0be5fcb..6e2bccdc0 100644 --- a/service/market.py +++ b/service/market.py @@ -27,6 +27,7 @@ import eos.db import eos.types from service.settings import SettingsProvider, NetworkSettings import service +import service.conversions as conversions try: from collections import OrderedDict @@ -149,119 +150,6 @@ class Market(): self.shipBrowserWorkerThread.daemon = True self.shipBrowserWorkerThread.start() - # Item overrides. Key must be str of item name, - # value str of name or int of ID to convert it to - self.ITEMS_OVERRIDE = { - "Abaddon Kador Edition": "Abaddon", - "Abaddon Tash-Murkon Edition": "Abaddon", - "Aliastra Catalyst": "Catalyst", - "Bestower Tash-Murkon Edition": "Bestower", - "Brutix Serpentis Edition": "Brutix", - "Caracal Nugoeihuvi Edition": "Caracal", - "Caracal Wiyrkomi Edition": "Caracal", - "Catalyst Serpentis Edition": "Catalyst", - "Coercer Blood Raiders Edition": "Coercer", - "Cormorant Guristas Edition": "Cormorant", - "Cyclone Thukker Tribe Edition": "Cyclone", - "Ferox Guristas Edition": "Ferox", - "Hyperion Aliastra Edition": "Hyperion", - "Hyperion Innerzone Shipping Edition": "Hyperion", - "Incursus Aliastra Edition": "Incursus", - "Incursus Innerzone Shipping Edition": "Incursus", - "Inner Zone Shipping Catalyst": "Catalyst", - "Inner Zone Shipping Imicus": "Imicus", - "Intaki Syndicate Catalyst": "Catalyst", - "InterBus Catalyst": "Catalyst", - "Iteron Inner Zone Shipping Edition": "Iteron Mark V", - "Mackinaw ORE Development Edition": "Mackinaw", - "Maelstrom Krusual Edition": "Maelstrom", - "Maelstrom Nefantar Edition": "Maelstrom", - "Mammoth Nefantar Edition": "Mammoth", - "Merlin Nugoeihuvi Edition": "Merlin", - "Merlin Wiyrkomi Edition": "Merlin", - "Miasmos Amastris Edition": "Miasmos Quafe Ultra Edition", - "Miasmos Quafe Ultramarine Edition": "Miasmos Quafe Ultra Edition", - "Nefantar Thrasher": "Thrasher", - "Omen Kador Edition": "Omen", - "Omen Tash-Murkon Edition": "Omen", - "Orca ORE Development Edition": "Orca", - "Police Pursuit Comet": "Federation Navy Comet", - "Prophecy Blood Raiders Edition": "Prophecy", - "Punisher Kador Edition": "Punisher", - "Punisher Tash-Murkon Edition": "Punisher", - "Quafe Catalyst": "Catalyst", - "Rifter Krusual Edition": "Rifter", - "Rifter Nefantar Edition": "Rifter", - "Rokh Nugoeihuvi Edition": "Rokh", - "Rokh Wiyrkomi Edition": "Rokh", - "Rorqual ORE Development Edition": "Rorqual", - "Stabber Krusual Edition": "Stabber", - "Stabber Nefantar Edition": "Stabber", - "Sarum Magnate": "Magnate", - "Sukuuvestaa Heron": "Heron", - "Tash-Murkon Magnate": "Magnate", - "Tayra Wiyrkomi Edition": "Tayra", - "Thorax Aliastra Edition": "Thorax", - "Thorax Innerzone Shipping Edition": "Thorax", - "Thrasher Thukker Tribe Edition": "Thrasher", - "Vherokior Probe": "Probe" } - - ITEMS_OVERRIDE_OCEANUS = { - "Basic Capacitor Flux Coil": "'Basic' Capacitor Flux Coil", - "Basic LADAR Backup Array": "Basic Ladar Backup Array", - "LADAR Backup Array I": "Ladar Backup Array I", - "LADAR Backup Array II": "Ladar Backup Array II", - "'Regard' Remote Capacitor Transmitter": "Small 'Regard' Remote Capacitor Transmitter", - "Prototype Freight Sensors": "Enduring Cargo Scanner", - "PL-0 Shipment Probe": "Scoped Cargo Scanner", - "Reserve LADAR Scanners": "Reserve Ladar Scanners", - "Emergency LADAR Scanners": "Emergency Ladar Scanners", - "Protected LADAR Backup Cluster I": "Protected Ladar Backup Cluster I", - "Sealed LADAR Backup Cluster": "Sealed Ladar Backup Cluster", - "Surrogate LADAR Reserve Array I": "Surrogate Ladar Reserve Array I", - "F-43 Repetitive LADAR Backup Sensors": "F-43 Repetitive Ladar Backup Sensors", - "Surplus LADAR Reserve Array": "Surplus Ladar Reserve Array", - "F-42 Reiterative LADAR Backup Sensors": "F-42 Reiterative Ladar Backup Sensors", - "Rudimentary Ship Scanner I": "Compact Ship Scanner", - "Residual Survey Scanner I": "Scoped Survey Scanner", - "Upgraded 'Malkuth' Light Missile Launcher": "Compact Light Missile Launcher", - "Limited 'Limos' Light Missile Launcher": "Ample Light Missile Launcher", - "Beta Reactor Control: Capacitor Flux I": "Compact Capacitor Flux Coil", - "Type-D Power Core Modification: Capacitor Flux": "Restrained Capacitor Flux Coil", - "Type-D Power Core Modification: Reaction Control": "Compact Reactor Control Unit", - "LADAR Firewall": "Ladar Firewall", - "Interior Type-E Cargo Identifier": "Scoped Cargo Scanner", - "Ta3 Perfunctory Vessel Probe": "Compact Ship Scanner", - "Speculative Ship Identifier I": "Compact Ship Scanner", - "Practical Type-E Ship Probe": "Compact Ship Scanner", - "ML-3 Amphilotite Mining Probe": "Scoped Survey Scanner", - "Rock-Scanning Sensor Array I": "Scoped Survey Scanner", - "'Dactyl' Type-E Asteroid Analyzer": "Scoped Survey Scanner", - "Partial Power Plant Manager: Capacitor Flux": "'Basic' Capacitor Flux Coil", - "Alpha Reactor Control: Capacitor Flux": "'Basic' Capacitor Flux Coil", - "Type-E Power Core Modification: Capacitor Flux": "'Basic' Capacitor Flux Coil", - "Marked Generator Refitting: Capacitor Flux": "'Basic' Capacitor Flux Coil", - "Local Power Plant Manager: Capacitor Flux I": "Restrained Capacitor Flux Coil", - "Mark I Generator Refitting: Capacitor Flux": "Compact Capacitor Flux Coil", - "Nanoelectrical Co-Processor": "Basic Co-Processor", - "Nanomechanical CPU Enhancer": "Basic Co-Processor", - "Quantum Co-Processor": "Basic Co-Processor", - "Photonic CPU Enhancer": "Basic Co-Processor", - "Nanomechanical CPU Enhancer I": "Upgraded Co-Processor", - "Quantum Co-Processor I": "Upgraded Co-Processor", - "Photonic CPU Enhancer I": "Upgraded Co-Processor", - "Partial Power Plant Manager: Reaction Control": "Basic Reactor Control Unit", - "Alpha Reactor Control: Reaction Control": "Basic Reactor Control Unit", - "Marked Generator Refitting: Reaction Control": "Basic Reactor Control Unit", - "Local Power Plant Manager: Reaction Control I is now": "Compact Reactor Control Unit", - "Mark I Generator Refitting: Reaction Control": "Compact Reactor Control Unit", - "Beta Reactor Control: Reaction Control I": "Compact Reactor Control Unit", - "Micro B88 Core Augmentation": "Compact Micro Auxiliary Power Core", - "Micro K-Exhaust Core Augmentation": "Compact Micro Auxiliary Power Core", - "Micro 'Vigor' Core Augmentation": "Navy Micro Auxiliary Power Core", - "Prototype 'Arbalest' Light Missile Launcher": "Compact Light Missile Launcher", - "Experimental TE-2100 Light Missile Launcher": "Ample Light Missile Launcher"} - # Items' group overrides self.customGroups = set() # Limited edition ships @@ -330,12 +218,9 @@ class Market(): "Tournament Micro Jump Unit": False } # Normally seen only on tournament arenas # do not publish ships that we convert - for name in self.ITEMS_OVERRIDE: + for name in conversions.packs['skinnedShips']: self.ITEMS_FORCEPUBLISHED[name] = False - # @todo: create better, less cluttered, and more systematic way to do this - self.ITEMS_OVERRIDE.update(ITEMS_OVERRIDE_OCEANUS) - # List of groups which are forcibly published self.GROUPS_FORCEPUBLISHED = { "Prototype Exploration Ship": False } # We moved the only ship from this group to other group anyway @@ -437,7 +322,7 @@ class Market(): elif isinstance(identity, basestring): # We normally lookup with string when we are using import/export # features. Check against overrides - identity = self.ITEMS_OVERRIDE.get(identity, identity) + identity = conversions.all.get(identity, identity) item = eos.db.getItem(identity, *args, **kwargs) elif isinstance(identity, float): id = int(identity)