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)
Пример #2
0
            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)
Пример #5
0
#
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)
Пример #6
0
    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)
Пример #8
0
            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")
Пример #10
0
        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)
Пример #11
0
        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)