convert to python3
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Set PYTHONPATH in lighttpd or other server config.
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script to generate static rewards files for all items.
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import urllib
|
||||
import urllib.request, urllib.parse, urllib.error
|
||||
import os.path
|
||||
|
||||
import _pathfix
|
||||
@@ -27,7 +27,7 @@ if __name__ == '__main__':
|
||||
elif len(sys.argv) == 2:
|
||||
outdir = sys.argv[1]
|
||||
else:
|
||||
print("Usage: %s [outdir]" % sys.argv[0])
|
||||
print(("Usage: %s [outdir]" % sys.argv[0]))
|
||||
sys.exit(os.EX_USAGE)
|
||||
|
||||
err_out = get_utf8_writer(sys.stderr)
|
||||
@@ -46,7 +46,7 @@ if __name__ == '__main__':
|
||||
|
||||
# write all names json to /items.json
|
||||
items_file = os.path.join(outdir, "items.json")
|
||||
print "Writing", items_file
|
||||
print("Writing", items_file)
|
||||
with open(items_file, "w") as f:
|
||||
out = get_utf8_writer(f)
|
||||
out.write("[")
|
||||
@@ -66,7 +66,7 @@ if __name__ == '__main__':
|
||||
item_id = item.id
|
||||
encoded_name = name.encode("utf8")
|
||||
item_file = os.path.join(outdir, encoded_name + ".txt")
|
||||
print "Writing", item_id, item_file
|
||||
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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
@@ -57,7 +57,7 @@ def find_armors(args):
|
||||
matches = difflib.get_close_matches(skill_name, skill_tree_names,
|
||||
1, 0.5)
|
||||
if matches:
|
||||
print "Fuzzy Match:", matches[0]
|
||||
print("Fuzzy Match:", matches[0])
|
||||
sid = skill_tree_id_map.get(matches[0])
|
||||
skill_name = matches[0]
|
||||
args.skills[i] = skill_name
|
||||
@@ -71,8 +71,8 @@ def find_armors(args):
|
||||
d.set_skills(db.get_item_skills(d.id))
|
||||
decoration_values = get_decoration_values(sid, ds)[1]
|
||||
decorations[sid] = (ds, decoration_values)
|
||||
print "%s[%s]:" % (skill_name, sid), ", ".join(d.name for d in ds), \
|
||||
decoration_values
|
||||
print("%s[%s]:" % (skill_name, sid), ", ".join(d.name for d in ds), \
|
||||
decoration_values)
|
||||
|
||||
htype = "Gunner" if args.gunner else "Blade"
|
||||
|
||||
@@ -82,7 +82,7 @@ def find_armors(args):
|
||||
for a in armors:
|
||||
skills = db.get_item_skills(a.id)
|
||||
if not skills:
|
||||
print "Error getting skills for '%s' (%d)" % (a.name, a.id)
|
||||
print("Error getting skills for '%s' (%d)" % (a.name, a.id))
|
||||
sys.exit(1)
|
||||
a.set_skills(skills)
|
||||
# calculate total using decorations for first skill only. This
|
||||
@@ -113,12 +113,12 @@ def find_armors(args):
|
||||
if args.type and a.slot != args.type:
|
||||
continue
|
||||
total = skill_totals[a.id]
|
||||
print skill_totals[a.id], a.one_line_u(),
|
||||
print(skill_totals[a.id], a.one_line_u(), end=' ')
|
||||
if args.resist:
|
||||
print args.resist.title(), a[args.resist + "_res"]
|
||||
print(args.resist.title(), a[args.resist + "_res"])
|
||||
else:
|
||||
print
|
||||
print " ", a.one_line_skills_u(args.skills)
|
||||
print()
|
||||
print(" ", a.one_line_skills_u(args.skills))
|
||||
|
||||
|
||||
def str_lower(x):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
@@ -54,7 +54,7 @@ def _make_db_sharpness_string(level_string):
|
||||
level_value = SharpnessLevel.__dict__[level_string.upper()]
|
||||
#print "level value", level_value
|
||||
values = []
|
||||
for i in xrange(SharpnessLevel.PURPLE+1):
|
||||
for i in range(SharpnessLevel.PURPLE+1):
|
||||
if i <= level_value:
|
||||
values.append("1")
|
||||
else:
|
||||
@@ -67,7 +67,7 @@ def weapon_stats_tuple(arg):
|
||||
parts = arg.split(",")
|
||||
#print "parts %r" % parts
|
||||
if len(parts) < 4:
|
||||
print "not enough parts"
|
||||
print("not enough parts")
|
||||
raise ValueError("Bad arg, use 'name,weapon_type,sharpness,raw'")
|
||||
weapon = {}
|
||||
weapon["name"] = parts[0]
|
||||
@@ -154,13 +154,13 @@ def _add_skill_args(parser):
|
||||
default=False,
|
||||
help="add Awaken (FreeElemnt), default off")
|
||||
parser.add_argument("-a", "--attack-up",
|
||||
type=int, choices=range(0, 5), default=0,
|
||||
type=int, choices=list(range(0, 5)), default=0,
|
||||
help="1-4 for AuS, M, L, XL")
|
||||
parser.add_argument("-c", "--critical-eye",
|
||||
type=int, choices=range(0, 5), default=0,
|
||||
type=int, choices=list(range(0, 5)), default=0,
|
||||
help="1-4 for CE+1, +2, +3 and Critical God")
|
||||
parser.add_argument("-e", "--element-up",
|
||||
type=int, choices=range(0, 5), default=0,
|
||||
type=int, choices=list(range(0, 5)), default=0,
|
||||
help="1-4 for (element) Atk +1, +2, +3 and"
|
||||
" Element Attack Up")
|
||||
parser.add_argument("-t", "--artillery",
|
||||
@@ -253,24 +253,24 @@ def print_sorted_phial_damage(names, damage_map_base, weapon_damage_map, parts,
|
||||
_print_headers(parts, damage_map_base)
|
||||
|
||||
for name in names_sorted:
|
||||
print "%-20s:" % name,
|
||||
print("%-20s:" % name, end=' ')
|
||||
damage_map = weapon_damage_map[name]
|
||||
print "%0.2f" % avg_phial(damage_map, level=level),
|
||||
print("%0.2f" % avg_phial(damage_map, level=level), end=' ')
|
||||
for part in parts:
|
||||
part_damage = damage_map[part]
|
||||
#print "%0.2f" % sum(damage_map.cb_phial_damage[part][level]),
|
||||
print "%0.2f:%0.2f:%0.2f" % damage_map.cb_phial_damage[part][level],
|
||||
print
|
||||
print("%0.2f:%0.2f:%0.2f" % damage_map.cb_phial_damage[part][level], end=' ')
|
||||
print()
|
||||
|
||||
|
||||
def _print_headers(parts, damage_map_base):
|
||||
print
|
||||
print()
|
||||
avg_hitbox = (sum(damage_map_base[part].hitbox for part in parts)
|
||||
/ float(len(parts)))
|
||||
cols = ["%s (%d)" % (part, damage_map_base[part].hitbox)
|
||||
for part in parts]
|
||||
cols = ["%s (%d)" % ("Avg", avg_hitbox)] + cols
|
||||
print " | ".join(cols)
|
||||
print(" | ".join(cols))
|
||||
|
||||
|
||||
def print_sorted_damage(names, damage_map_base, weapon_damage_map, parts):
|
||||
@@ -288,22 +288,22 @@ def print_sorted_damage(names, damage_map_base, weapon_damage_map, parts):
|
||||
# for part in parts])
|
||||
|
||||
for name in names_sorted:
|
||||
print "%-20s:" % name,
|
||||
print("%-20s:" % name, end=' ')
|
||||
damage_map = weapon_damage_map[name]
|
||||
print "%0.2f" % damage_map.averages["uniform"],
|
||||
print("%0.2f" % damage_map.averages["uniform"], end=' ')
|
||||
for part in parts:
|
||||
part_damage = damage_map[part]
|
||||
print "% 2d" % part_damage.average(),
|
||||
print
|
||||
print("% 2d" % part_damage.average(), end=' ')
|
||||
print()
|
||||
|
||||
if len(names) > 1:
|
||||
w1 = weapon_damage_map[names_sorted[0]]
|
||||
w2 = weapon_damage_map[names_sorted[1]]
|
||||
m, ratio = w1.compare_break_even(w2)
|
||||
print
|
||||
print "Comparison of '%s' and '%s'" % (
|
||||
names_sorted[0], names_sorted[1])
|
||||
print "Hitbox ratio:", m, "%0.2f" % ratio
|
||||
print()
|
||||
print("Comparison of '%s' and '%s'" % (
|
||||
names_sorted[0], names_sorted[1]))
|
||||
print("Hitbox ratio:", m, "%0.2f" % ratio)
|
||||
|
||||
if w1.etype:
|
||||
re_ratios = w1.get_raw_element_ratios()
|
||||
@@ -316,7 +316,7 @@ def print_sorted_damage(names, damage_map_base, weapon_damage_map, parts):
|
||||
else:
|
||||
line.append(names_sorted[1])
|
||||
# (part, raw, element, ratio)
|
||||
print "%-22s %02d %02d %0.2f %s" % tuple(line)
|
||||
print("%-22s %02d %02d %0.2f %s" % tuple(line))
|
||||
|
||||
|
||||
def print_damage_percent_diff(names, damage_map_base, weapon_damage_map, parts):
|
||||
@@ -340,7 +340,7 @@ def print_damage_percent_diff(names, damage_map_base, weapon_damage_map, parts):
|
||||
ediff_s = ",".join("%+0.1f%%" % i for i in ediffs)
|
||||
bdiff_s = ",".join("%+0.1f%%" % i for i in bdiffs)
|
||||
damage = damage_map_base[part]
|
||||
print "%22s%s h%02d %0.2f (%s) h%02d %0.2f (%s) %+0.2f (%s)" \
|
||||
print("%22s%s h%02d %0.2f (%s) h%02d %0.2f (%s) %+0.2f (%s)" \
|
||||
% (part, "*" if damage.is_breakable() else " ",
|
||||
damage.hitbox,
|
||||
damage.total,
|
||||
@@ -349,17 +349,17 @@ def print_damage_percent_diff(names, damage_map_base, weapon_damage_map, parts):
|
||||
damage.element,
|
||||
ediff_s,
|
||||
damage.break_diff(),
|
||||
bdiff_s)
|
||||
bdiff_s))
|
||||
if weapon_type == "Charge Blade":
|
||||
for level in (0, 1, 2, 3, 5):
|
||||
print " " * 20, level,
|
||||
print(" " * 20, level, end=' ')
|
||||
for wname in names:
|
||||
wd = weapon_damage_map[wname]
|
||||
damage = wd.cb_phial_damage[part][level]
|
||||
print "(%0.f, %0.f, %0.f);" % damage,
|
||||
print
|
||||
print("(%0.f, %0.f, %0.f);" % damage, end=' ')
|
||||
print()
|
||||
|
||||
print " --------------------"
|
||||
print(" --------------------")
|
||||
|
||||
for avg_type in "uniform raw weakpart_raw element weakpart_element break_raw break_element break_only".split():
|
||||
base = damage_map_base.averages[avg_type]
|
||||
@@ -371,7 +371,7 @@ def print_damage_percent_diff(names, damage_map_base, weapon_damage_map, parts):
|
||||
|
||||
diff_s = ",".join("%+0.1f%%" % i for i in diffs)
|
||||
|
||||
print "%22s %0.2f (%s)" % (avg_type, base, diff_s)
|
||||
print("%22s %0.2f (%s)" % (avg_type, base, diff_s))
|
||||
|
||||
|
||||
def match_quest_level(match_level, weapon_level):
|
||||
@@ -451,7 +451,7 @@ def main():
|
||||
weapons.extend(args.weapon_custom)
|
||||
|
||||
if not weapons:
|
||||
print "Err: no matching weapons"
|
||||
print("Err: no matching weapons")
|
||||
sys.exit(1)
|
||||
|
||||
names = [w.name for w in weapons]
|
||||
@@ -459,17 +459,17 @@ def main():
|
||||
monster_breaks = db.get_monster_breaks(monster.id)
|
||||
weapon_type = weapons[0]["wtype"]
|
||||
if args.phial and weapon_type != "Charge Blade":
|
||||
print "ERROR: phial option is only supported for Charge Blade"
|
||||
print("ERROR: phial option is only supported for Charge Blade")
|
||||
sys.exit(1)
|
||||
motion = motiondb[weapon_type].average
|
||||
print "Weapon Type: %s" % weapon_type
|
||||
print "Average Motion: %0.1f" % motion
|
||||
print("Weapon Type: %s" % weapon_type)
|
||||
print("Average Motion: %0.1f" % motion)
|
||||
if args.motion:
|
||||
motion = args.motion
|
||||
print "Specified Motion: %0.1f" % motion
|
||||
print "Monster Breaks: %s" % ", ".join(monster_breaks)
|
||||
print("Specified Motion: %0.1f" % motion)
|
||||
print("Monster Breaks: %s" % ", ".join(monster_breaks))
|
||||
skill_names = get_skill_names(args)
|
||||
print "Common Skills:", ", ".join(skill for skill in skill_names if skill)
|
||||
print("Common Skills:", ", ".join(skill for skill in skill_names if skill))
|
||||
|
||||
if args.parts:
|
||||
limit_parts = args.parts.split(",")
|
||||
@@ -479,7 +479,7 @@ def main():
|
||||
if args.quest_level:
|
||||
item_stars = ItemStars(db)
|
||||
village, guild, permit, arena = args.quest_level
|
||||
print "Filter by Quest Levels:", args.quest_level
|
||||
print("Filter by Quest Levels:", args.quest_level)
|
||||
weapons2 = dict()
|
||||
for w in weapons:
|
||||
if "village_stars" in w:
|
||||
@@ -498,10 +498,10 @@ def main():
|
||||
continue
|
||||
weapons2[w.id] = w
|
||||
parent_ids = set(w.parent_id for w in weapons2.values())
|
||||
for wid in weapons2.keys():
|
||||
for wid in list(weapons2.keys()):
|
||||
if wid in parent_ids:
|
||||
del weapons2[wid]
|
||||
weapons = weapons2.values()
|
||||
weapons = list(weapons2.values())
|
||||
names = [w.name for w in weapons]
|
||||
|
||||
weapon_damage_map = dict()
|
||||
@@ -527,23 +527,23 @@ def main():
|
||||
frenzy_bonus=skill_args.frenzy,
|
||||
is_true_attack=game_uses_true_raw,
|
||||
blunt_power=skill_args.blunt_power)
|
||||
print "%-20s: %4.0f %2.0f%%" % (name, wd.attack, wd.affinity),
|
||||
print("%-20s: %4.0f %2.0f%%" % (name, wd.attack, wd.affinity), end=' ')
|
||||
if wd.etype:
|
||||
if wd.etype2:
|
||||
print "(%4.0f %s, %4.0f %s)" \
|
||||
% (wd.eattack, wd.etype, wd.eattack2, wd.etype2),
|
||||
print("(%4.0f %s, %4.0f %s)" \
|
||||
% (wd.eattack, wd.etype, wd.eattack2, wd.etype2), end=' ')
|
||||
else:
|
||||
print "(%4.0f %s)" % (wd.eattack, wd.etype),
|
||||
print SharpnessLevel.name(wd.sharpness),
|
||||
print("(%4.0f %s)" % (wd.eattack, wd.etype), end=' ')
|
||||
print(SharpnessLevel.name(wd.sharpness), end=' ')
|
||||
if skill_args != args:
|
||||
print "{%s}" % ",".join(sn
|
||||
print("{%s}" % ",".join(sn
|
||||
for sn in get_skill_names(skill_args)
|
||||
if sn)
|
||||
if sn))
|
||||
else:
|
||||
print
|
||||
print()
|
||||
weapon_damage_map[name] = wd
|
||||
except ValueError as e:
|
||||
print str(e)
|
||||
print(str(e))
|
||||
sys.exit(1)
|
||||
|
||||
damage_map_base = weapon_damage_map[names[0]]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script to find the most lucrative monster parts to farm for money.
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import urllib
|
||||
import urllib.request, urllib.parse, urllib.error
|
||||
import os.path
|
||||
import sys
|
||||
|
||||
@@ -55,8 +55,8 @@ def print_top_items(db, rank="G"):
|
||||
value = item_value(item)
|
||||
if value < min_value:
|
||||
break
|
||||
print " %-20s % 7.f % 6d (% 5.f)" % \
|
||||
(item.name, value, int(item.sell), ev[item.id])
|
||||
print(" %-20s % 7.f % 6d (% 5.f)" % \
|
||||
(item.name, value, int(item.sell), ev[item.id]))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
Calculate probability of getting at least one of a monster part from one
|
||||
@@ -71,22 +71,22 @@ if __name__ == '__main__':
|
||||
max_rewards = 8 - fixed_rewards
|
||||
|
||||
if min_rewards < 0:
|
||||
print "Error: fixed_rewards (%d) must be less than or equal to " \
|
||||
"guaranteeed_rewards (%d)" % (fixed_rewards, guarenteed_rewards)
|
||||
print("Error: fixed_rewards (%d) must be less than or equal to " \
|
||||
"guaranteeed_rewards (%d)" % (fixed_rewards, guarenteed_rewards))
|
||||
sys.exit(1)
|
||||
|
||||
total_p = 0.0
|
||||
expected_attempts = 0.0
|
||||
for reward_count in xrange(min_rewards, max_rewards + 1):
|
||||
for reward_count in range(min_rewards, max_rewards + 1):
|
||||
p = stats._reward_count_p(reward_count, min_rewards, max_rewards,
|
||||
extend_percent)
|
||||
expected_attempts += p * reward_count
|
||||
# probability of getting @reward_count rewards that could be the
|
||||
# desired item
|
||||
print "P(C = %d) = %0.4f" % (reward_count, p)
|
||||
print("P(C = %d) = %0.4f" % (reward_count, p))
|
||||
total_p += p
|
||||
# expected value for number of rewards that could be the desired item
|
||||
print "E(C) = %0.2f" % expected_attempts
|
||||
print("E(C) = %0.2f" % expected_attempts)
|
||||
|
||||
# math check, make sure all possibilities add up to 1, allowing for
|
||||
# some floating point precision loss.
|
||||
@@ -96,5 +96,5 @@ if __name__ == '__main__':
|
||||
max_rewards, extend_percent)
|
||||
expected = expected_attempts * reward_percent / 100.0
|
||||
|
||||
print "P(N > 0) = %0.2f%%" % p_at_least_one
|
||||
print "E(N) = %0.4f" % expected
|
||||
print("P(N > 0) = %0.2f%%" % p_at_least_one)
|
||||
print("E(N) = %0.4f" % expected)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import _pathfix
|
||||
|
||||
@@ -75,7 +75,7 @@ if __name__ == '__main__':
|
||||
import os.path
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: %s 'item name'" % sys.argv[0])
|
||||
print(("Usage: %s 'item name'" % sys.argv[0]))
|
||||
sys.exit(os.EX_USAGE)
|
||||
|
||||
item_name = canonical_item_name(sys.argv[1])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
@@ -40,8 +40,8 @@ if __name__ == '__main__':
|
||||
else:
|
||||
for cost in costs:
|
||||
components = cost["components"]
|
||||
print "=", ", ".join([w.name for w in cost["path"]])
|
||||
print " Zenny", cost["zenny"]
|
||||
for item_name in sorted(components.iterkeys()):
|
||||
print "%20s %2d" % (item_name, components[item_name])
|
||||
print
|
||||
print("=", ", ".join([w.name for w in cost["path"]]))
|
||||
print(" Zenny", cost["zenny"])
|
||||
for item_name in sorted(components.keys()):
|
||||
print("%20s %2d" % (item_name, components[item_name]))
|
||||
print()
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import json
|
||||
import sys
|
||||
import errno
|
||||
import urllib
|
||||
import urllib.request, urllib.parse, urllib.error
|
||||
import argparse
|
||||
|
||||
import _pathfix
|
||||
@@ -42,7 +42,7 @@ SAFE_CHARS = " &'+\""
|
||||
|
||||
def file_path(path, model_object, alt_name_field=None):
|
||||
if alt_name_field:
|
||||
key = urllib.quote(model_object[alt_name_field].encode("utf8"),
|
||||
key = urllib.parse.quote(model_object[alt_name_field].encode("utf8"),
|
||||
SAFE_CHARS)
|
||||
else:
|
||||
key = str(model_object.id)
|
||||
@@ -57,7 +57,7 @@ def write_list_file(path, model_list):
|
||||
|
||||
|
||||
def write_index_file(path, indexes):
|
||||
for key, data in indexes.iteritems():
|
||||
for key, data in indexes.items():
|
||||
index_path = os.path.join(path, "_index_%s.json" % key)
|
||||
with open(index_path, "w") as f:
|
||||
json.dump(data, f, cls=model.ModelJSONEncoder, indent=2)
|
||||
@@ -106,7 +106,7 @@ def armor_json(db, path):
|
||||
a.update_indexes(indexes)
|
||||
skills = db.get_item_skills(a.id)
|
||||
if not skills:
|
||||
print "WARN: armor '%s' (%d) has no skills" % (a.name, a.id)
|
||||
print("WARN: armor '%s' (%d) has no skills" % (a.name, a.id))
|
||||
a.set_skills(skills)
|
||||
|
||||
all_data.append(a.as_data())
|
||||
@@ -130,7 +130,7 @@ def decoration_json(db, path):
|
||||
a.update_indexes(indexes)
|
||||
skills = db.get_item_skills(a.id)
|
||||
if not skills:
|
||||
print "WARN: decoration '%s' (%d) has no skills" % (a.name, a.id)
|
||||
print("WARN: decoration '%s' (%d) has no skills" % (a.name, a.id))
|
||||
a.set_skills(skills)
|
||||
|
||||
all_data.append(a.as_data())
|
||||
@@ -254,7 +254,7 @@ def wyporium_json(db, path):
|
||||
if not k.startswith("wyporium"):
|
||||
continue
|
||||
trade_map[item.id][k] = all_data[k]
|
||||
print trade_map
|
||||
print(trade_map)
|
||||
mkdirs_p(path)
|
||||
write_map_file(path, trade_map)
|
||||
|
||||
@@ -282,7 +282,7 @@ def main():
|
||||
if args.entities:
|
||||
for entity in args.entities:
|
||||
if entity not in ENTITIES:
|
||||
print "Unknown entity: %s" % entity
|
||||
print("Unknown entity: %s" % entity)
|
||||
sys.exit(1)
|
||||
else:
|
||||
args.entities = ENTITIES
|
||||
|
||||
@@ -12,11 +12,11 @@ from mhapi.util import get_utf8_writer
|
||||
|
||||
|
||||
def print_header_nav(title, pid):
|
||||
print """
|
||||
print("""
|
||||
<div data-role="header" data-position="fixed">
|
||||
<a href="#page-menu" class="ui-btn-left ui-btn ui-btn-inline ui-mini ui-corner-all ui-btn-icon-left ui-icon-bars">Menu</a>
|
||||
<h1>%s</h1>
|
||||
""".strip() % title
|
||||
""".strip() % title)
|
||||
|
||||
alt_pid = None
|
||||
if pid.endswith("-en"):
|
||||
@@ -27,11 +27,11 @@ def print_header_nav(title, pid):
|
||||
alt_title = "en"
|
||||
|
||||
if alt_pid is not None:
|
||||
print """
|
||||
print("""
|
||||
<a href="#%s" class="ui-btn-right ui-btn ui-btn-inline ui-mini">%s</a>
|
||||
""".strip() % (alt_pid, alt_title)
|
||||
""".strip() % (alt_pid, alt_title))
|
||||
|
||||
print " </div>"
|
||||
print(" </div>")
|
||||
|
||||
|
||||
def mk_html_list(dict_list, keys, sort_keys, divider_fn="auto"):
|
||||
@@ -39,7 +39,7 @@ def mk_html_list(dict_list, keys, sort_keys, divider_fn="auto"):
|
||||
print ('<ul data-role="listview" data-filter="true"'
|
||||
' data-autodividers="true">')
|
||||
else:
|
||||
print '<ul data-role="listview" data-filter="true">'
|
||||
print('<ul data-role="listview" data-filter="true">')
|
||||
|
||||
if isinstance(sort_keys, types.FunctionType):
|
||||
sort_fn = sort_keys
|
||||
@@ -55,26 +55,26 @@ def mk_html_list(dict_list, keys, sort_keys, divider_fn="auto"):
|
||||
if divider_fn not in (None, "auto"):
|
||||
divider_text = divider_fn(d, prev_d)
|
||||
if divider_text is not None:
|
||||
print ' <li data-role="list-divider">%s</li>' % divider_text
|
||||
print " <li>"
|
||||
print(' <li data-role="list-divider">%s</li>' % divider_text)
|
||||
print(" <li>")
|
||||
for i, k in enumerate(keys):
|
||||
value = d[k]
|
||||
if k in ("section", "description"):
|
||||
if value:
|
||||
print ' <p class="ui-li-desc">%s</p>' % value
|
||||
print(' <p class="ui-li-desc">%s</p>' % value)
|
||||
continue
|
||||
elif k == "title_jp" and i != 0:
|
||||
# NB: for monster by title we want it to be a normal column
|
||||
if value:
|
||||
print ' <p class="ui-li-desc">Title: %s</p>' % value
|
||||
print(' <p class="ui-li-desc">Title: %s</p>' % value)
|
||||
continue
|
||||
if value.endswith(".png"):
|
||||
value = ('<img class="icon" src="../img/icons_items/%s" />'
|
||||
% value)
|
||||
print ' <span class="%s">%s</span>' % (k, value)
|
||||
print " </li>"
|
||||
print(' <span class="%s">%s</span>' % (k, value))
|
||||
print(" </li>")
|
||||
prev_d = d
|
||||
print '</ul>'
|
||||
print('</ul>')
|
||||
|
||||
|
||||
def _main():
|
||||
@@ -87,7 +87,7 @@ def _main():
|
||||
carve_items = db.get_items(item_types=("Flesh",))
|
||||
|
||||
|
||||
print """<!DOCTYPE html>
|
||||
print("""<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Poogie Translate</title>
|
||||
@@ -133,26 +133,26 @@ def _main():
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
"""
|
||||
""")
|
||||
stree_path = os.path.join(_pathfix.project_path, "db",
|
||||
"mhx_skill_tree_list.json")
|
||||
with open(stree_path) as f:
|
||||
stree_list = json.load(f)
|
||||
|
||||
print '<div data-role="page" id="page-skilltrees-en">'
|
||||
print('<div data-role="page" id="page-skilltrees-en">')
|
||||
print_header_nav("Skill Trees (en)", "page-skilltrees-en")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(stree_list, ("name", "name_jp"), ("name",))
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
print '<div data-role="page" id="page-skilltrees-jp">'
|
||||
print('<div data-role="page" id="page-skilltrees-jp">')
|
||||
print_header_nav("Skill Trees (jp)", "page-skilltrees-jp")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(stree_list, ("name_jp", "name"), jplen_sort_fn,
|
||||
divider_fn=jplen_divider_fn)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
def item_divider_fn(d, prev_d):
|
||||
prefix = _icon_prefix(d)
|
||||
@@ -160,29 +160,29 @@ def _main():
|
||||
if prefix != prev_prefix:
|
||||
return prefix
|
||||
return None
|
||||
print '<div data-role="page" id="page-item-usable">'
|
||||
print('<div data-role="page" id="page-item-usable">')
|
||||
print_header_nav("Items: Usable", "page-item-usable")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(items, ("icon_name", "name", "name_jp"),
|
||||
("icon_name", "name"), divider_fn=item_divider_fn)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
print '<div data-role="page" id="page-item-gather">'
|
||||
print('<div data-role="page" id="page-item-gather">')
|
||||
print_header_nav("Items: Gatherable", "page-item-gather")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(gather_items, ("icon_name", "name", "name_jp"),
|
||||
("icon_name", "name"), divider_fn=item_divider_fn)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
print '<div data-role="page" id="page-item-carve">'
|
||||
print('<div data-role="page" id="page-item-carve">')
|
||||
print_header_nav("Items: Carve", "page-item-carve")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(carve_items, ("icon_name", "name", "name_jp"),
|
||||
("icon_name", "name"), divider_fn=item_divider_fn)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
ha_path = os.path.join(_pathfix.project_path, "db", "hunter_arts.json")
|
||||
with open(ha_path) as f:
|
||||
@@ -194,21 +194,21 @@ def _main():
|
||||
elif d["section"] != prev_d["section"]:
|
||||
return d["section"]
|
||||
return None
|
||||
print '<div data-role="page" id="page-hunterarts-en">'
|
||||
print('<div data-role="page" id="page-hunterarts-en">')
|
||||
print_header_nav("Hunter Arts (en)", "page-hunterarts-en")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(ha_list, ("name", "name_jp", "description"), None,
|
||||
divider_fn=ha_divider_fn)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
print '<div data-role="page" id="page-hunterarts-jp">'
|
||||
print('<div data-role="page" id="page-hunterarts-jp">')
|
||||
print_header_nav("Hunter Arts (jp)", "page-hunterarts-jp")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(ha_list, ("name_jp", "name", "section", "description"),
|
||||
jplen_sort_fn, divider_fn=jplen_divider_fn)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
|
||||
monster_path = os.path.join(_pathfix.project_path, "db",
|
||||
@@ -216,35 +216,35 @@ def _main():
|
||||
with open(monster_path) as f:
|
||||
monster_list = json.load(f)
|
||||
|
||||
print '<div data-role="page" id="page-monsters-en">'
|
||||
print('<div data-role="page" id="page-monsters-en">')
|
||||
print_header_nav("Monsters (en)", "page-monsters-en")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(monster_list, ("name", "name_jp", "title_jp"), ("name",))
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
print '<div data-role="page" id="page-monsters-jp">'
|
||||
print('<div data-role="page" id="page-monsters-jp">')
|
||||
print_header_nav("Monsters (jp)", "page-monsters-jp")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(monster_list, ("name_jp", "name", "title_jp"), ("name_jp",))
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
titled_monster_list = [m for m in monster_list if m["title_jp"]]
|
||||
print '<div data-role="page" id="page-monsters-title">'
|
||||
print('<div data-role="page" id="page-monsters-title">')
|
||||
print_header_nav("Monster Titles", "page-monsters-title")
|
||||
print '<div data-role="main" class="ui-content">'
|
||||
print('<div data-role="main" class="ui-content">')
|
||||
mk_html_list(titled_monster_list, ("title_jp", "name"), ("title_jp",),
|
||||
divider_fn=None)
|
||||
print '</div>'
|
||||
print '</div>'
|
||||
print('</div>')
|
||||
print('</div>')
|
||||
|
||||
|
||||
|
||||
|
||||
print """
|
||||
print("""
|
||||
</body>
|
||||
"""
|
||||
""")
|
||||
|
||||
def _icon_prefix(d):
|
||||
if d is None:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import json
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
"""
|
||||
Parse hunter arts name, name_jp, and description from wikia:
|
||||
@@ -10,7 +10,7 @@ Returns list of dict, e.g.:
|
||||
"section": "Heavy Bowgun",
|
||||
"description": "",
|
||||
"name": "Acceleration Shower I",
|
||||
"name_jp": "\u30a2\u30af\u30bb\u30eb\u30b7\u30e3\u30ef\u30fc I"
|
||||
"name_jp": "\\u30a2\\u30af\\u30bb\\u30eb\\u30b7\\u30e3\\u30ef\\u30fc I"
|
||||
},
|
||||
...
|
||||
]
|
||||
@@ -62,7 +62,7 @@ def parse_wikia_hunter_arts(f):
|
||||
def _main():
|
||||
with open(sys.argv[1]) as f:
|
||||
data = parse_wikia_hunter_arts(f)
|
||||
print json.dumps(data, indent=2)
|
||||
print(json.dumps(data, indent=2))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
"""
|
||||
Parse monster names and jp names for monster hunter X.
|
||||
@@ -55,7 +55,7 @@ def parse_wikia_monsters(f):
|
||||
m = SECTION_RE.match(line)
|
||||
if m:
|
||||
section = m.group(1)
|
||||
print >>sys.stderr, "section", section
|
||||
print("section", section, file=sys.stderr)
|
||||
continue
|
||||
if section not in ["Large Monsters", "Small Monsters"]:
|
||||
continue
|
||||
@@ -108,16 +108,16 @@ def _main():
|
||||
name = m["name"]
|
||||
names = get_jp_names(m["href"])
|
||||
if len(names) == 0:
|
||||
print >>sys.stderr, "ERROR: no names for %s" % name
|
||||
print("ERROR: no names for %s" % name, file=sys.stderr)
|
||||
names = ["", ""]
|
||||
if len(names) == 1:
|
||||
print >>sys.stderr, "ERROR: no title for %s" % name
|
||||
print("ERROR: no title for %s" % name, file=sys.stderr)
|
||||
names.append("")
|
||||
m["name_jp"] = names[0]
|
||||
m["title_jp"] = names[1]
|
||||
if m["title_jp"] in ("None", "N/A", "(?)"):
|
||||
m["title_jp"] = ""
|
||||
print json.dumps(monster_list, indent=2)
|
||||
print(json.dumps(monster_list, indent=2))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
"""
|
||||
Parse skill tree names and jp names for monster hunter X.
|
||||
@@ -81,7 +81,7 @@ def parse_wikia_skill_trees(f):
|
||||
|
||||
def _main():
|
||||
if len(sys.argv) != 4:
|
||||
print "Usage: %s infile out_strees.json out_skills.json" % sys.argv[0]
|
||||
print("Usage: %s infile out_strees.json out_skills.json" % sys.argv[0])
|
||||
sys.exit(1)
|
||||
with open(sys.argv[1]) as f:
|
||||
strees, skills = parse_wikia_skill_trees(f)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import _pathfix
|
||||
|
||||
@@ -15,4 +15,4 @@ if __name__ == '__main__':
|
||||
try:
|
||||
httpd.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
print "^C"
|
||||
print("^C")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
@@ -21,7 +21,7 @@ def main():
|
||||
if args.item:
|
||||
item = db.get_item_by_name(args.item)
|
||||
if item is None:
|
||||
print "Item '%s' not found" % args.item
|
||||
print("Item '%s' not found" % args.item)
|
||||
sys.exit(1)
|
||||
if item.type == "Materials":
|
||||
stars = item_stars.get_material_stars(item.id)
|
||||
@@ -30,15 +30,15 @@ def main():
|
||||
elif args.weapon:
|
||||
weapon = db.get_weapon_by_name(args.weapon)
|
||||
if weapon is None:
|
||||
print "Weapon '%s' not found" % args.weapon
|
||||
print("Weapon '%s' not found" % args.weapon)
|
||||
sys.exit(1)
|
||||
stars = item_stars.get_weapon_stars(weapon)
|
||||
else:
|
||||
print "Specify -w or -i"
|
||||
print("Specify -w or -i")
|
||||
sys.exit(1)
|
||||
|
||||
for k, v in stars.iteritems():
|
||||
print k, v
|
||||
for k, v in stars.items():
|
||||
print(k, v)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user