handle item names that aren't title case

main
Bryce Allen 11 years ago
parent 4824f96ce9
commit 6821627e2d

@ -1,15 +1,72 @@
#!/usr/bin/env python #!/usr/bin/env python
import codecs
import _pathfix import _pathfix
from mhapi.db import MHDB from mhapi.db import MHDB
from mhapi import rewards 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): _ITEM_NAME_SPECIAL = {
return codecs.getwriter("utf8")(writer) "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__': if __name__ == '__main__':
@ -21,15 +78,6 @@ if __name__ == '__main__':
print("Usage: %s 'item name'" % sys.argv[0]) print("Usage: %s 'item name'" % sys.argv[0])
sys.exit(os.EX_USAGE) sys.exit(os.EX_USAGE)
item_name = " ".join(sys.argv[1].lower().split()).title() item_name = canonical_item_name(sys.argv[1])
out = get_utf8_writer(sys.stdout)
err_out = get_utf8_writer(sys.stderr)
db = MHDB(_pathfix.db_path)
item_row = rewards.find_item(db, item_name, err_out) print_rewards(item_name)
if item_row is None:
sys.exit(os.EX_DATAERR)
ir = rewards.ItemRewards(db, item_row)
ir.print_all(out)

Loading…
Cancel
Save