element["Référence"] = reference # infos additionnelles if "emplacement" in data: element["Emplacement"] = data["emplacement"] if "poids" in data: element["Poids"] = data["poids"] if "aura" in data: element["Aura"] = data["aura"] if "nls" in data: # NLS parfois variable if isinstance(data["nls"], int): element["NLS"] = data["nls"] else: element["Description"] = "NLS: " + data[ "nls"] + "\n\n" + element["Description"] if "conditions" in data: element["Conditions"] = data["conditions"] if "coût" in data: element["Coût"] = data["coût"] liste.append(element) #exit(1) print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/magic.yml", MATCH, FIELDS, HEADER, liste)
key = key.replace("’", "'") if key in FIELDS: sort[key] = text.strip() descr = s.next_siblings text = "" else: print("- Skipping unknown property %s" % key) # lire la description extracts = extractText(descr) plain = extracts['text'] html = extracts['html'] if html.startswith('<br/>'): html = html[5:] sort['Description'] = plain.strip() sort['DescriptionHTML'] = html # ajouter sort liste.append(sort) #if MOCK_SORT: # break print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/spells.yml", MATCH, FIELDS, HEADER, liste, IGNORE)
if el.name == "h3": nom = cleanSectionName(el.text) reference = URL + el.find_next("a")['href'] if newObj: astuce['Classe'] = 'Ninja' astuce['Description'] = descr.strip() liste.append(astuce) astuce = {'Niveau': LVL} descr = "" astuce['Nom'] = u"Astuce: " + nom astuce['Source'] = source astuce['Référence'] = reference source = "AG" newObj = True else: descr += html2text(el) # last element astuce['Classe'] = 'Ninja' astuce['Description'] = descr.strip() liste.append(astuce) print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/classfeatures.yml", MATCH, FIELDS, HEADER, liste)
if e.name == 'h2': newObj = True else: name = e.text.strip() if name.endswith('.'): name = name[:-1].strip() descr = "" source = None newObj = False elif e.name == 'div': sourceFound = extractSource(e) if sourceFound: source = sourceFound else: descr += html2text(e) addInfos(liste, name, sourceNext) for l in liste: if not l['Complete']: print("- aucune description n'existe pour '" + l['Nom'] + "'!"); del l['Complete'] print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/armes.yml", MATCH, FIELDS, HEADER, liste)
# print("Extraction des traits religieux...") if MOCK_TRAITS_RELI: content = BeautifulSoup(open(MOCK_TRAITS_RELI), features="lxml").body else: content = BeautifulSoup(urllib.request.urlopen(REF_TRAITS_RELI).read(), features="lxml").body page = content.find('div', {'class': ['presentation navmenudroite']}) for l in extractList(page): trait = {} trait['Nom'] = "Trait religieux: " + l["Name"] trait['Source'] = "MJRA" trait['Description'] = l["Desc"] trait['Référence'] = REF_TRAITS_RELI liste.append(trait) print("Fusion avec fichier YAML existant...") HEADER = """### ### ATTENTION: certains traits ont été ajustés manuellement ### - Duergars: les traits des Nains ont été ajoutés individuellement ### - Suli: les attaques d'énergie ont été ajustés (nom et description) ### - Traits de campagne: ajouté manuellement ### """ mergeYAML("../data/traits.yml", MATCH, FIELDS, HEADER, liste)
for e in section: if e.name == 'h3': if not newObj: addInfos(liste, name, descr, sourceNext) sourceNext = source if e.name == 'h3': name = cleanSectionName(e.text) descr = "" source = None newObj = False else: descr += html2text(e) if e.name == 'div' or e.name == 'img': src = extractSource(e) if src: source = src addInfos(liste, name, descr, sourceNext) for l in liste: if 'Complete' in l and not l['Complete']: print("- aucune description n'existe pour '" + l['Nom'] + "'!") del l['Complete'] print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/equipement.yml", MATCH, FIELDS, HEADER, liste)
descr += html2text(s) ## last element classfeature['Classe'] = classe classfeature['Archétype'] = nom classfeature['Source'] = source classfeature['Description'] = cleanDescription(descr) classfeature['Niveau'] = extractLevel(classfeature['Description'], 30) # extraire niveau lvl = re.search('Au niveau (\d+)', descr) if lvl: classfeature['Niveau'] = int(lvl.group(1)) classfeatures.append(classfeature) if MOCK_ARCH: print(classfeature) exit(1) print("Fusion avec fichier YAML existant (archétypes)...") HEADER = "" mergeYAML("../data/class-archetypes.yml", MATCH_ARCHETYPE, FIELDS_ARCHETYPE, HEADER, liste) print("Fusion avec fichier YAML existant (features)...") mergeYAML("../data/classfeatures.yml", MATCH_CLASSFEATURES, FIELDS_CLASSFEATURES, HEADER, classfeatures)
except Exception as e: print("Exception: %s (%s) - %s" % (b['Nom'], field, str(e))) #raise e # generate HTML for description b['Description'] = toHTML(html) # vérifier tous les champs isValid = True if False: for field in { 'Nom', 'FP', 'For', 'Dex', 'Con', 'Int', 'Sag', 'Cha', 'Référence' }: if field not in b: print("[W] Incomplete field '%s' for: %s" % (field, b['Nom'])) isValid = False break if isValid: liste.append(b) #break print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/bestiaire.yml", MATCH, FIELDS, HEADER, liste)
print("Skipping unkown link: %s" % li.find("a").text) continue spell = findSpell(ref) addSpellLevel(data['classe'], lvl, spell) print("Niveaux traités: %s" % levels) if MOCK_SL: break # Hot fixes for special cases spell = findSpell("http://www.pathfinder-fr.org/Wiki/Pathfinder-RPG.Forme%20de%20vase%20I.ashx") addSpellLevel("Ens/Mag", 5, spell) spell = findSpell("http://www.pathfinder-fr.org/Wiki/Pathfinder-RPG.Forme%20de%20vase%20II.ashx") addSpellLevel("Ens/Mag", 6, spell) spell = findSpell("http://www.pathfinder-fr.org/Wiki/Pathfinder-RPG.Forme%20de%20vase%20III.ashx") addSpellLevel("Ens/Mag", 7, spell) # initialiser les niveaux for s in sorts: s['Niveau'] = levelToString(s['Niveau']) #print(s['Niveau']) print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/spells.yml", MATCH, FIELDS, HEADER, sorts) # Update heroic spells os.system("./extract-heroic.py")
if key in PROPERTIES: # merge properties with almost the same name if key == "Formation nécesssaire": key = "Formation nécessaire" elif key == "caractéristique associée": key = "Caractéristique associée" sort[key]=text descr = s.next_siblings text = "" #else: # print("- Skipping unknown property %s" % key) # lire la description descriptions = extractText(descr) sort['Description']=descriptions['text'].strip() sort['DescriptionHTML']=descriptions['html'] # ajouter sort liste.append(sort) if MOCK_COMP: break print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/competences.yml", MATCH, FIELDS, HEADER, liste)
condition = {'Source': SOURCE} newObj = False advantage = True descr = "" elif s.name == 'h3': if newObj: condition['Description'] = descr.strip() liste.append(condition) condition = {'Source': SOURCE} descr = "" condition['Nom'] = s.text.replace('¶', '').strip() if advantage: condition['Nom'] += " (avantage)" newObj = True condition['Référence'] = URL + s.find('a')['href'] else: descr += html2text(s) ## last element condition['Description'] = descr.strip() liste.append(condition) print("Fusion avec fichier YAML existant...") HEADER = "" mergeYAML("../data/conditions.yml", MATCH, FIELDS, HEADER, liste)