parent
							
								
									a9439f2891
								
							
						
					
					
						commit
						d0173157b9
					
				
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								@ -0,0 +1,88 @@
 | 
				
			||||
#!/usr/bin/env python2
 | 
				
			||||
# vim: set fileencoding=utf8 :
 | 
				
			||||
 | 
				
			||||
import urllib
 | 
				
			||||
import os
 | 
				
			||||
import json
 | 
				
			||||
import sys
 | 
				
			||||
 | 
				
			||||
from lxml import etree
 | 
				
			||||
 | 
				
			||||
import _pathfix
 | 
				
			||||
 | 
				
			||||
_BASE_URL = "http://monsterhunter.wikia.com/wiki/"
 | 
				
			||||
 | 
				
			||||
_PAGE = "MHX:_Monster_Material_List"
 | 
				
			||||
 | 
				
			||||
_CIRCLE = u"\u26ab"
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def extract_names_and_icons(tree):
 | 
				
			||||
    carves = []
 | 
				
			||||
    tables = tree.xpath(
 | 
				
			||||
        '//*[@id="mw-content-text"]/table[contains(@class, "linetable")]'
 | 
				
			||||
    )
 | 
				
			||||
    for table in tables:
 | 
				
			||||
        rows = list(table)
 | 
				
			||||
        for row in rows:
 | 
				
			||||
            cells = row.xpath("./td")
 | 
				
			||||
            if not cells:
 | 
				
			||||
                continue
 | 
				
			||||
            icon_img = cells[0].xpath(".//*/img")
 | 
				
			||||
            if not icon_img:
 | 
				
			||||
                continue
 | 
				
			||||
            icon_name = icon_img[0].attrib["alt"]
 | 
				
			||||
            if icon_name == "Wiki":
 | 
				
			||||
                continue
 | 
				
			||||
            name, name_jp = [t.strip() for t in cells[1].xpath("./text()")]
 | 
				
			||||
            carves.append(dict(
 | 
				
			||||
                name=name,
 | 
				
			||||
                name_jp=name_jp,
 | 
				
			||||
                icon_name=_translate_icon_name(icon_name))
 | 
				
			||||
            )
 | 
				
			||||
    return carves
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
_SHAPE_MAP = {
 | 
				
			||||
    "Monster Parts": "Carapace",
 | 
				
			||||
    "Carapace": "Shell",
 | 
				
			||||
    "Claw": "Fang",
 | 
				
			||||
    "Ball": "Monster-Jewel",
 | 
				
			||||
    "Medicine": "Liquid",
 | 
				
			||||
}
 | 
				
			||||
_COLOR_MAP = {
 | 
				
			||||
    "Dark Purple": "Purple",
 | 
				
			||||
    "Dark Green": "DarkGreen",
 | 
				
			||||
    "Light Green": "YellowGreen",
 | 
				
			||||
    "Dark Red": "Red",
 | 
				
			||||
    "Dark Blue": "Blue",
 | 
				
			||||
    "Light Blue": "Cyan",
 | 
				
			||||
    "Brown": "Yellow",
 | 
				
			||||
}
 | 
				
			||||
def _translate_icon_name(s):
 | 
				
			||||
    """
 | 
				
			||||
    Translate from wikia icon names to MH4U db icon names.
 | 
				
			||||
    """
 | 
				
			||||
    prefix, name = s.split("-", 1)
 | 
				
			||||
    shape, color = name.split(" Icon ")
 | 
				
			||||
    if shape in _SHAPE_MAP:
 | 
				
			||||
        shape = _SHAPE_MAP[shape]
 | 
				
			||||
    if color in _COLOR_MAP:
 | 
				
			||||
        color = _COLOR_MAP[color]
 | 
				
			||||
    return "%s-%s.png" % (shape, color)
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def _main():
 | 
				
			||||
    tmp_path = os.path.join(_pathfix.project_path, "tmp")
 | 
				
			||||
    fpath = os.path.join(tmp_path, "wikia-monster-carves.html")
 | 
				
			||||
    parser = etree.HTMLParser()
 | 
				
			||||
    urllib.urlretrieve(_BASE_URL + _PAGE, fpath)
 | 
				
			||||
    with open(fpath) as f:
 | 
				
			||||
        tree = etree.parse(f, parser)
 | 
				
			||||
        carves = extract_names_and_icons(tree)
 | 
				
			||||
    #print json.dumps(weapon_list, indent=2)
 | 
				
			||||
    print json.dumps(carves, indent=2)
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
if __name__ == '__main__':
 | 
				
			||||
    _main()
 | 
				
			||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
					Loading…
					
					
				
		Reference in new issue