|
@@ -496,107 +496,111 @@ def parseMonster(db, url, element):
|
|
|
mtype = details[5]
|
|
mtype = details[5]
|
|
|
stars = details[6]
|
|
stars = details[6]
|
|
|
|
|
|
|
|
- # Regions where the monster can be obtained
|
|
|
|
|
- obtainablePage = mpage[mpage.index('<b>Obtainable from:</b>'):mpage.index('</td>', mpage.index('<b>Obtainable from:</b>'))]
|
|
|
|
|
- obtainable = getObtainable(obtainablePage)
|
|
|
|
|
-
|
|
|
|
|
- # Essences required to awaken the monster
|
|
|
|
|
- if awakeable == 1:
|
|
|
|
|
- essencesPage = mpage[mpage.index('<div id="essences">'):mpage.index('</table>', mpage.index('<div id="essences">'))]
|
|
|
|
|
- essences = getEssences(essencesPage)
|
|
|
|
|
-
|
|
|
|
|
- # Skills
|
|
|
|
|
- skillsPage = mpage[mpage.index('<table', mpage.index('<table', mpage.index('<div id="skills">') + 1) + 1):mpage.index('</table>', mpage.index('<table', mpage.index('<table', mpage.index('<div id="skills">') + 1) + 1))]
|
|
|
|
|
- skills = getSkills(skillsPage)
|
|
|
|
|
-
|
|
|
|
|
- # Stats
|
|
|
|
|
- statsPage = mpage[mpage.index('Evolution Stats'):]
|
|
|
|
|
- stats = getStats(statsPage, awakeable)
|
|
|
|
|
- ahp = stats[0]
|
|
|
|
|
- aatk = stats[1]
|
|
|
|
|
- adef = stats[2]
|
|
|
|
|
- wahp = stats[3]
|
|
|
|
|
- waatk = stats[4]
|
|
|
|
|
- wadef = stats[5]
|
|
|
|
|
- spd = stats[6]
|
|
|
|
|
- crir = stats[7]
|
|
|
|
|
- crid = stats[8]
|
|
|
|
|
- res = stats[9]
|
|
|
|
|
- acc = stats[10]
|
|
|
|
|
- wspd = stats[11]
|
|
|
|
|
- wcrir = stats[12]
|
|
|
|
|
- wcrid = stats[13]
|
|
|
|
|
- wres = stats[14]
|
|
|
|
|
- wacc = stats[15]
|
|
|
|
|
-
|
|
|
|
|
- # Save monster
|
|
|
|
|
- strname = element + ' ' + name + " - " + name_aw
|
|
|
|
|
- if awakeable == 0:
|
|
|
|
|
- strname = element + ' ' + name
|
|
|
|
|
- elif awakeable == 2:
|
|
|
|
|
- strname = name_aw
|
|
|
|
|
- print (" Saving monster: " + strname + "...")
|
|
|
|
|
- if img != '':
|
|
|
|
|
- if download(img, 'public/img/content/monster/' + str(id["monster"]).zfill(3) + '.png'):
|
|
|
|
|
- img = str(id["monster"]).zfill(3) + '.png'
|
|
|
|
|
- else:
|
|
|
|
|
- print("Error downloading image for monster " + str(id["monster"]))
|
|
|
|
|
- if img != '':
|
|
|
|
|
- if download(img_aw, 'public/img/content/monster/' + str(id["monster"]).zfill(3) + '_aw.png'):
|
|
|
|
|
- img_aw = str(id["monster"]).zfill(3) + '_aw.png'
|
|
|
|
|
- else:
|
|
|
|
|
- print("Error downloading image for awakened monster " + str(id["monster"]))
|
|
|
|
|
- insert(db, 'monster', (id["monster"], None, stars, element, name, name_aw, mtype, awakeable, img, img_aw))
|
|
|
|
|
-
|
|
|
|
|
- # Save locations
|
|
|
|
|
- for o in obtainable:
|
|
|
|
|
- insert(db, 'monster_location', (id["monster"], o))
|
|
|
|
|
- for e in essences:
|
|
|
|
|
- insert(db, 'monster_essence', (id["monster"], e[1], e[2], e[0]))
|
|
|
|
|
-
|
|
|
|
|
- # Save skills
|
|
|
|
|
- idx = 0
|
|
|
|
|
- for s in skills:
|
|
|
|
|
- # 0 1 2 3 4 5 6 7
|
|
|
|
|
- # id monster idx name desc passive awaken upgrade leader img cooldown
|
|
|
|
|
- if download(s[6], 'public/img/content/skill/' + str(id["monster_skill"]).zfill(4) + '.png'):
|
|
|
|
|
- s[6] = str(id["monster_skill"]).zfill(4) + '.png'
|
|
|
|
|
- else:
|
|
|
|
|
- s[6] = ''
|
|
|
|
|
- if s[4] == 1:
|
|
|
|
|
- s[4] = id["monster_skill"] - 1
|
|
|
|
|
- insert(db, 'monster_skill', (id["monster_skill"], id["monster"], idx, s[0], s[1], s[2], s[3], None, s[5], s[6], s[7]))
|
|
|
|
|
- idx = idx + 1
|
|
|
|
|
- id["monster_skill"] = id["monster_skill"] + 1
|
|
|
|
|
-
|
|
|
|
|
- # Save stats
|
|
|
|
|
- i = 0
|
|
|
|
|
- s = stars
|
|
|
|
|
- while i < len(ahp):
|
|
|
|
|
- if i + 1 < len(ahp):
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'HP', ahp[i], ahp[i + 1]))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'ATK', aatk[i], aatk[i + 1]))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'DEF', aatk[i], aatk[i + 1]))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'SPD', spd, spd))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'CRIR', crir, crir))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'CRID', crid, crid))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'RES', res, res))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 0, 'ACC', acc, acc))
|
|
|
|
|
- if i + 1 < len(wahp):
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'HP', wahp[i], wahp[i + 1]))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'ATK', waatk[i], waatk[i + 1]))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'DEF', waatk[i], waatk[i + 1]))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'SPD', wspd, wspd))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'CRIR', wcrir, wcrir))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'CRID', wcrid, wcrid))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'RES', wres, wres))
|
|
|
|
|
- insert(db, 'monster_stat', (id["monster"], s, 1, 'ACC', wacc, wacc))
|
|
|
|
|
- s = s + 1
|
|
|
|
|
- i = i + 2
|
|
|
|
|
-
|
|
|
|
|
- # Save and proceed
|
|
|
|
|
- db.commit()
|
|
|
|
|
- id["monster"] = id["monster"] + 1
|
|
|
|
|
|
|
+ # Check if monster already parsed
|
|
|
|
|
+ cursor.execute('SELECT count(id) AS c FROM monster WHERE element = ? AND name = ? AND name_aw = ?', (element, name, name_aw))
|
|
|
|
|
+ if cursor.fetchone()[0] == 0:
|
|
|
|
|
+
|
|
|
|
|
+ # Regions where the monster can be obtained
|
|
|
|
|
+ obtainablePage = mpage[mpage.index('<b>Obtainable from:</b>'):mpage.index('</td>', mpage.index('<b>Obtainable from:</b>'))]
|
|
|
|
|
+ obtainable = getObtainable(obtainablePage)
|
|
|
|
|
+
|
|
|
|
|
+ # Essences required to awaken the monster
|
|
|
|
|
+ if awakeable == 1:
|
|
|
|
|
+ essencesPage = mpage[mpage.index('<div id="essences">'):mpage.index('</table>', mpage.index('<div id="essences">'))]
|
|
|
|
|
+ essences = getEssences(essencesPage)
|
|
|
|
|
+
|
|
|
|
|
+ # Skills
|
|
|
|
|
+ skillsPage = mpage[mpage.index('<table', mpage.index('<table', mpage.index('<div id="skills">') + 1) + 1):mpage.index('</table>', mpage.index('<table', mpage.index('<table', mpage.index('<div id="skills">') + 1) + 1))]
|
|
|
|
|
+ skills = getSkills(skillsPage)
|
|
|
|
|
+
|
|
|
|
|
+ # Stats
|
|
|
|
|
+ statsPage = mpage[mpage.index('Evolution Stats'):]
|
|
|
|
|
+ stats = getStats(statsPage, awakeable)
|
|
|
|
|
+ ahp = stats[0]
|
|
|
|
|
+ aatk = stats[1]
|
|
|
|
|
+ adef = stats[2]
|
|
|
|
|
+ wahp = stats[3]
|
|
|
|
|
+ waatk = stats[4]
|
|
|
|
|
+ wadef = stats[5]
|
|
|
|
|
+ spd = stats[6]
|
|
|
|
|
+ crir = stats[7]
|
|
|
|
|
+ crid = stats[8]
|
|
|
|
|
+ res = stats[9]
|
|
|
|
|
+ acc = stats[10]
|
|
|
|
|
+ wspd = stats[11]
|
|
|
|
|
+ wcrir = stats[12]
|
|
|
|
|
+ wcrid = stats[13]
|
|
|
|
|
+ wres = stats[14]
|
|
|
|
|
+ wacc = stats[15]
|
|
|
|
|
+
|
|
|
|
|
+ # Save monster
|
|
|
|
|
+ strname = element + ' ' + name + " - " + name_aw
|
|
|
|
|
+ if awakeable == 0:
|
|
|
|
|
+ strname = element + ' ' + name
|
|
|
|
|
+ elif awakeable == 2:
|
|
|
|
|
+ strname = name_aw
|
|
|
|
|
+ print (" Saving monster: " + strname + "...")
|
|
|
|
|
+ if img != '':
|
|
|
|
|
+ if download(img, 'public/img/content/monster/' + str(id["monster"]).zfill(3) + '.png'):
|
|
|
|
|
+ img = str(id["monster"]).zfill(3) + '.png'
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("Error downloading image for monster " + str(id["monster"]))
|
|
|
|
|
+ if img != '':
|
|
|
|
|
+ if download(img_aw, 'public/img/content/monster/' + str(id["monster"]).zfill(3) + '_aw.png'):
|
|
|
|
|
+ img_aw = str(id["monster"]).zfill(3) + '_aw.png'
|
|
|
|
|
+ else:
|
|
|
|
|
+ print("Error downloading image for awakened monster " + str(id["monster"]))
|
|
|
|
|
+ insert(db, 'monster', (id["monster"], None, stars, element, name, name_aw, mtype, awakeable, img, img_aw))
|
|
|
|
|
+
|
|
|
|
|
+ # Save locations
|
|
|
|
|
+ for o in obtainable:
|
|
|
|
|
+ insert(db, 'monster_location', (id["monster"], o))
|
|
|
|
|
+ for e in essences:
|
|
|
|
|
+ insert(db, 'monster_essence', (id["monster"], e[1], e[2], e[0]))
|
|
|
|
|
+
|
|
|
|
|
+ # Save skills
|
|
|
|
|
+ idx = 0
|
|
|
|
|
+ for s in skills:
|
|
|
|
|
+ # 0 1 2 3 4 5 6 7
|
|
|
|
|
+ # id monster idx name desc passive awaken upgrade leader img cooldown
|
|
|
|
|
+ if download(s[6], 'public/img/content/skill/' + str(id["monster_skill"]).zfill(4) + '.png'):
|
|
|
|
|
+ s[6] = str(id["monster_skill"]).zfill(4) + '.png'
|
|
|
|
|
+ else:
|
|
|
|
|
+ s[6] = ''
|
|
|
|
|
+ if s[4] == 1:
|
|
|
|
|
+ s[4] = id["monster_skill"] - 1
|
|
|
|
|
+ insert(db, 'monster_skill', (id["monster_skill"], id["monster"], idx, s[0], s[1], s[2], s[3], None, s[5], s[6], s[7]))
|
|
|
|
|
+ idx = idx + 1
|
|
|
|
|
+ id["monster_skill"] = id["monster_skill"] + 1
|
|
|
|
|
+
|
|
|
|
|
+ # Save stats
|
|
|
|
|
+ i = 0
|
|
|
|
|
+ s = stars
|
|
|
|
|
+ while i < len(ahp):
|
|
|
|
|
+ if i + 1 < len(ahp):
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'HP', ahp[i], ahp[i + 1]))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'ATK', aatk[i], aatk[i + 1]))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'DEF', aatk[i], aatk[i + 1]))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'SPD', spd, spd))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'CRIR', crir, crir))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'CRID', crid, crid))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'RES', res, res))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 0, 'ACC', acc, acc))
|
|
|
|
|
+ if i + 1 < len(wahp):
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'HP', wahp[i], wahp[i + 1]))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'ATK', waatk[i], waatk[i + 1]))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'DEF', waatk[i], waatk[i + 1]))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'SPD', wspd, wspd))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'CRIR', wcrir, wcrir))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'CRID', wcrid, wcrid))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'RES', wres, wres))
|
|
|
|
|
+ insert(db, 'monster_stat', (id["monster"], s, 1, 'ACC', wacc, wacc))
|
|
|
|
|
+ s = s + 1
|
|
|
|
|
+ i = i + 2
|
|
|
|
|
+
|
|
|
|
|
+ # Save and proceed
|
|
|
|
|
+ db.commit()
|
|
|
|
|
+ id["monster"] = id["monster"] + 1
|
|
|
|
|
|
|
|
except IOError as e:
|
|
except IOError as e:
|
|
|
db.rollback()
|
|
db.rollback()
|
|
@@ -737,6 +741,7 @@ def parse(db, baseUrl, elements):
|
|
|
# Detect upgrade skills
|
|
# Detect upgrade skills
|
|
|
cursor = db.cursor()
|
|
cursor = db.cursor()
|
|
|
cursor.execute('UPDATE monster_skill SET upgrade = id + 1 WHERE name = (SELECT name FROM monster_skill s WHERE s.id = monster_skill.id + 1)')
|
|
cursor.execute('UPDATE monster_skill SET upgrade = id + 1 WHERE name = (SELECT name FROM monster_skill s WHERE s.id = monster_skill.id + 1)')
|
|
|
|
|
+ cursor.execute('UPDATE monster_skill SET monster = null WHERE id IN (SELECT upgrade FROM monster_skill);')
|
|
|
cursor.close;
|
|
cursor.close;
|
|
|
|
|
|
|
|
# Get essence icons
|
|
# Get essence icons
|