add more weapon types
This commit is contained in:
137808
db/mhx/weapon_list.json
137808
db/mhx/weapon_list.json
File diff suppressed because it is too large
Load Diff
@@ -9,10 +9,18 @@ from lxml import etree
|
|||||||
|
|
||||||
import _pathfix
|
import _pathfix
|
||||||
|
|
||||||
|
_BASE_URL = "http://wiki.mhxg.org"
|
||||||
|
|
||||||
_WEAPON_URLS = {
|
_WEAPON_URLS = {
|
||||||
"Hammer": ["http://wiki.mhxg.org/data/1904.html",
|
"Great Sword": ["/data/1900.html", "/data/2882.html"],
|
||||||
"http://wiki.mhxg.org/data/2886.html"],
|
"Long Sword": ["/data/1901.html", "/data/2883.html"],
|
||||||
|
"Sword and Shield": ["/data/1902.html", "/data/2884.html"],
|
||||||
|
"Hammer": ["/data/1904.html", "/data/2886.html"],
|
||||||
|
"Lance": ["/data/1906.html", "/data/2888.html"],
|
||||||
|
"Gunlance": ["/data/1907.html", "/data/2889.html"],
|
||||||
|
"Switch Axe": ["/data/1908.html", "/data/2890.html"],
|
||||||
|
"Charge Blade": ["/data/1909.html"],
|
||||||
|
"Insect Glaive": ["/data/1910.html"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -29,26 +37,52 @@ _ELEMENT_MAP = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_GL_SHOT_TYPES = {
|
||||||
|
u"通常": "Normal",
|
||||||
|
u"放射": "Long",
|
||||||
|
u"拡散": "Wide",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_SA_PHIAL_TYPES = {
|
||||||
|
u"強撃ビン": "Power",
|
||||||
|
u"減気ビン": "Exhaust",
|
||||||
|
u"滅龍ビン": "Dragon",
|
||||||
|
u"強属性ビン": "Element",
|
||||||
|
u"毒ビン": "Poison",
|
||||||
|
u"麻痺ビン": "Paralysis",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_CB_PHIAL_TYPES = {
|
||||||
|
u"榴弾ビン": "Impact",
|
||||||
|
u"強属性ビン": "Element",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def extract_weapon_list(wtype, tree):
|
def extract_weapon_list(wtype, tree):
|
||||||
weapons = []
|
weapons = []
|
||||||
rows = tree.xpath('//*[@id="sorter"]/tbody/tr')
|
rows = tree.xpath('//*[@id="sorter"]/tbody/tr')
|
||||||
i = 0
|
|
||||||
parent_name = None
|
parent_name = None
|
||||||
parent_href = None
|
parent_href = None
|
||||||
for row in rows:
|
for row in rows:
|
||||||
cells = list(row)
|
cells = list(row)
|
||||||
if len(cells) != 5:
|
if len(cells) < 5:
|
||||||
continue
|
continue
|
||||||
name, href, final = _parse_name_td(cells[0])
|
name, href, final = _parse_name_td(cells[0])
|
||||||
attack = int(cells[1].text)
|
attack = int(cells[1].text)
|
||||||
affinity, defense, element, element_attack = _parse_extra_td(cells[2])
|
affinity, defense, element, element_attack = _parse_extra_td(cells[2])
|
||||||
sharpness = _parse_sharpness_td(cells[3])
|
sharpness = _parse_sharpness_td(cells[-2])
|
||||||
slots = _parse_slots_td(cells[4])
|
slots = _parse_slots_td(cells[-1])
|
||||||
data = dict(name_jp=name, name=name, wtype=wtype, final=final,
|
data = dict(name_jp=name, name=name, wtype=wtype, final=final,
|
||||||
sharpness=sharpness[0], sharpness_plus=sharpness[1],
|
sharpness=sharpness[0], sharpness_plus=sharpness[1],
|
||||||
attack=attack, num_slots=slots,
|
attack=attack, num_slots=slots,
|
||||||
affinity=affinity, defense=defense,
|
affinity=affinity, defense=defense,
|
||||||
element=element, element_attack=element_attack)
|
element=element, element_attack=element_attack,
|
||||||
|
phial=None, shelling_type=None, horn_notes=None,
|
||||||
|
awaken=None, element_2=None, element_2_attack=None)
|
||||||
|
if len(cells) == 6:
|
||||||
|
_add_phial_or_shot_data(data, cells[-3])
|
||||||
if href is None or href == parent_href:
|
if href is None or href == parent_href:
|
||||||
data["parent"] = parent_name
|
data["parent"] = parent_name
|
||||||
data["href"] = parent_href
|
data["href"] = parent_href
|
||||||
@@ -62,6 +96,19 @@ def extract_weapon_list(wtype, tree):
|
|||||||
return weapons
|
return weapons
|
||||||
|
|
||||||
|
|
||||||
|
def _add_phial_or_shot_data(data, td_element):
|
||||||
|
text = td_element.text.strip()
|
||||||
|
if data["wtype"] == "Charge Blade":
|
||||||
|
data["phial"] = _CB_PHIAL_TYPES[text]
|
||||||
|
elif data["wtype"] == "Switch Axe":
|
||||||
|
data["phial"] = _SA_PHIAL_TYPES[text]
|
||||||
|
elif data["wtype"] == "Gunlance":
|
||||||
|
shot_type = _GL_SHOT_TYPES[text[:2]]
|
||||||
|
data["shelling_type"] = "%s %s" % (shot_type, text[2])
|
||||||
|
else:
|
||||||
|
raise ValueError("Unexpected element for wtype '%s'" % data["wtype"])
|
||||||
|
|
||||||
|
|
||||||
def _parse_extra_td(td_element):
|
def _parse_extra_td(td_element):
|
||||||
# 会心<span class="c_r">-20</span>%<br>
|
# 会心<span class="c_r">-20</span>%<br>
|
||||||
# 防御+5
|
# 防御+5
|
||||||
@@ -149,7 +196,7 @@ def _main():
|
|||||||
for wtype, urls in _WEAPON_URLS.iteritems():
|
for wtype, urls in _WEAPON_URLS.iteritems():
|
||||||
for i, url in enumerate(urls):
|
for i, url in enumerate(urls):
|
||||||
fpath = os.path.join(tmp_path, "%s-%d.html" % (wtype, i))
|
fpath = os.path.join(tmp_path, "%s-%d.html" % (wtype, i))
|
||||||
urllib.urlretrieve(url, fpath)
|
urllib.urlretrieve(_BASE_URL + url, fpath)
|
||||||
with open(fpath) as f:
|
with open(fpath) as f:
|
||||||
tree = etree.parse(f, parser)
|
tree = etree.parse(f, parser)
|
||||||
wlist = extract_weapon_list(wtype, tree)
|
wlist = extract_weapon_list(wtype, tree)
|
||||||
|
|||||||
@@ -190,8 +190,6 @@
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("check " + weapon_data["name"]);
|
|
||||||
|
|
||||||
if (final_only && weapon_data["final"] != 1) {
|
if (final_only && weapon_data["final"] != 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -242,12 +240,6 @@
|
|||||||
$.each(WEAPON_LIST, function(i, weapon_data) {
|
$.each(WEAPON_LIST, function(i, weapon_data) {
|
||||||
if (weapon_predicate(state, weapon_data)) {
|
if (weapon_predicate(state, weapon_data)) {
|
||||||
weapon_data["id"] = i;
|
weapon_data["id"] = i;
|
||||||
weapon_data["awaken"] = null;
|
|
||||||
weapon_data["element_2"] = "";
|
|
||||||
weapon_data["element_2_attack"] = "";
|
|
||||||
weapon_data["phial"] = "";
|
|
||||||
weapon_data["shelling_type"] = "";
|
|
||||||
weapon_data["horn_notes"] = "";
|
|
||||||
match_count += 1;
|
match_count += 1;
|
||||||
set_sharpness_titles(weapon_data);
|
set_sharpness_titles(weapon_data);
|
||||||
set_horn_melodies_title(weapon_data);
|
set_horn_melodies_title(weapon_data);
|
||||||
|
|||||||
Reference in New Issue
Block a user