You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.1 KiB
77 lines
2.1 KiB
#!/usr/bin/env python3
|
|
"""
|
|
Script to generate static rewards files for all items.
|
|
"""
|
|
|
|
import codecs
|
|
import urllib.request, urllib.parse, urllib.error
|
|
import os.path
|
|
|
|
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) == 1:
|
|
outdir = os.path.join(_pathfix.web_path, "rewards")
|
|
elif len(sys.argv) == 2:
|
|
outdir = sys.argv[1]
|
|
else:
|
|
print(("Usage: %s [outdir]" % sys.argv[0]))
|
|
sys.exit(os.EX_USAGE)
|
|
|
|
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")
|
|
# Determinen game from MHAPI_GAME and path based on game.
|
|
db = MHDB()
|
|
|
|
if db.game == "gu":
|
|
items = db.get_items(exclude_types=[
|
|
"Palico Armor", "Palico Weapon", "Weapon", "Armor", "Decoration"])
|
|
else:
|
|
items = db.get_items(rewards.ITEM_TYPES)
|
|
|
|
# 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_all(out)
|