From 7a3d7cc9b859ff49f8ca9b943a76dbb3e545487f Mon Sep 17 00:00:00 2001 From: Bryce Allen Date: Sat, 28 Mar 2015 12:36:37 -0500 Subject: [PATCH] add static generator for item rewards txts --- bin/genrewards.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++ mhapi/db.py | 2 +- mhapi/rewards.py | 5 ++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100755 bin/genrewards.py diff --git a/bin/genrewards.py b/bin/genrewards.py new file mode 100755 index 0000000..e1f5b8f --- /dev/null +++ b/bin/genrewards.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +""" +Script to generate static rewards files for all items. +""" + +import codecs +import urllib + +import _pathfix + +from mhapi.db import MHDB +from mhapi import rewards + + +def get_utf8_writer(writer): + return codecs.getwriter("utf8")(writer) + + +if __name__ == '__main__': + import sys + import os + import os.path + + if len(sys.argv) != 2: + print("Usage: %s outdir" % sys.argv[0]) + sys.exit(os.EX_USAGE) + + outdir = sys.argv[1] + err_out = get_utf8_writer(sys.stderr) + + # TODO: doesn't work if script is symlinked + db_path = os.path.dirname(sys.argv[0]) + db_path = os.path.join(db_path, "..", "db", "mh4u.db") + db = MHDB(db_path) + + items = db.get_item_names() + + # write all names json to /items.json + items_file = os.path.join(outdir, "items.json") + print "Writing", items_file + with open(items_file, "w") as f: + out = get_utf8_writer(f) + out.write("[") + first = True + for item in items: + if first: + first = False + else: + out.write(", ") + out.write('"') + out.write(item["name"]) + out.write('"') + out.write("]") + + for item in items: + name = item["name"] + item_id = item["_id"] + encoded_name = name.encode("utf8") + item_file = os.path.join(outdir, encoded_name + ".txt") + print "Writing", item_id, item_file + with open(item_file, "w") as f: + out = get_utf8_writer(f) + item_row = rewards.find_item(db, name, err_out) + if item_row is None: + sys.exit(os.EX_DATAERR) + ir = rewards.ItemRewards(db, item_row) + ir.print_recommended_hunts(out) + ir.print_monsters(out) + ir.print_quests(out) diff --git a/mhapi/db.py b/mhapi/db.py index e8adc52..478b5f4 100644 --- a/mhapi/db.py +++ b/mhapi/db.py @@ -68,7 +68,7 @@ class MHDB(object): def get_item_names(self): v = self._get_memoized("item_names", """ - SELECT name FROM items + SELECT _id, name FROM items WHERE type IN ('Bone', 'Flesh', 'Sac/Fluid') """) return v diff --git a/mhapi/rewards.py b/mhapi/rewards.py index c3ae22c..1845307 100644 --- a/mhapi/rewards.py +++ b/mhapi/rewards.py @@ -168,6 +168,11 @@ class HuntReward(object): self.percentage = reward["percentage"] self.item_id = reward["item_id"] + if not self.percentage: + # TODO: this is an error in the db, print warning in higher + # level code + self.percentage = 0 + self.cap = False self.kill = False self.shiny = False