From 6821627e2d7ae96f3d903e33ea8f43b2ca1375c6 Mon Sep 17 00:00:00 2001 From: Bryce Allen Date: Sat, 2 May 2015 09:34:45 -0500 Subject: [PATCH] handle item names that aren't title case --- bin/mhrewards.py | 78 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/bin/mhrewards.py b/bin/mhrewards.py index aa21659..6103885 100755 --- a/bin/mhrewards.py +++ b/bin/mhrewards.py @@ -1,15 +1,72 @@ #!/usr/bin/env python -import codecs - import _pathfix from mhapi.db import MHDB from mhapi import rewards +from mhapi.util import get_utf8_writer + + +def print_rewards(item_name): + out = get_utf8_writer(sys.stdout) + err_out = get_utf8_writer(sys.stderr) + + db = MHDB(_pathfix.db_path) + + # TODO: implement fuzzy search like in mhrewards using difflib + #item_names = db.get_item_names(rewards.ITEM_TYPES) + + item_row = rewards.find_item(db, item_name, err_out) + if item_row is None: + sys.exit(os.EX_DATAERR) + ir = rewards.ItemRewards(db, item_row) + ir.print_all(out) -def get_utf8_writer(writer): - return codecs.getwriter("utf8")(writer) +_ITEM_NAME_SPECIAL = { + "welldonesteak": "Well-done Steak", + "lrgelderdragonbone": "Lrg ElderDragon Bone", + "highqualitypelt": "High-quality Pelt", + "kingsfrill": "King's Frill", + "btetsucabrahardclaw": "B.TetsucabraHardclaw", + "heartstoppingbeak": "Heart-stopping Beak", + "dsqueenconcentrate": "D.S.QueenConcentrate", + "dahrenstone": "Dah'renstone", + "championsweapon": "Champion's Weapon", + "championsarmor": "Champion's Armor", + "popeyedgoldfish": "Pop-eyed Goldfish", + "100mwantedposter": "100m+ Wanted Poster", + "goddesssmelody": "Goddess's Melody", + "goddesssembrace": "Goddess's Embrace", + "capcommhspissue": "Capcom MH Sp. Issue", + "goddesssfire": "Goddess's Fire", + "huntersticket": "Hunter's Ticket", + "herosseal": "Hero's Seal", + "thetaleofpoogie": "The Tale of Poogie", + "goddesssgrace": "Goddess's Grace", + "conquerorsseal": "Conqueror's Seal", + "conquerorssealg": "Conqueror's Seal G", + "questersticket": "Quester's Ticket", + "instructorsticket":"Instructor's Ticket", + "veticket": "VE Ticket", + "vedeluxeticket": "VE Deluxe Ticket", + "vebronzeticket": "VE Bronze Ticket", + "vesilverticket": "VE Silver Ticket", + "vegoldenticket": "VE Golden Ticket", + "vecosmicticket": "VE Cosmic Ticket", +} + + +def item_name_key(item_name): + return item_name.translate(None, " .-'+").lower() + + +def canonical_item_name(item_name): + key = item_name_key(item_name) + if key in _ITEM_NAME_SPECIAL: + return _ITEM_NAME_SPECIAL[key] + else: + return " ".join(item_name.lower().split()).title() if __name__ == '__main__': @@ -21,15 +78,6 @@ if __name__ == '__main__': print("Usage: %s 'item name'" % sys.argv[0]) sys.exit(os.EX_USAGE) - item_name = " ".join(sys.argv[1].lower().split()).title() - - out = get_utf8_writer(sys.stdout) - err_out = get_utf8_writer(sys.stderr) - - db = MHDB(_pathfix.db_path) + item_name = canonical_item_name(sys.argv[1]) - item_row = rewards.find_item(db, item_name, err_out) - if item_row is None: - sys.exit(os.EX_DATAERR) - ir = rewards.ItemRewards(db, item_row) - ir.print_all(out) + print_rewards(item_name)