install_user.py 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. #!/usr/bin/python3
  2. import urllib3
  3. import sys
  4. import os
  5. import requests
  6. import urllib.request
  7. import sqlite3
  8. import wget
  9. import json
  10. FILE = "/home/ivalentin/.SWEX/IVV0-8114048.json"
  11. def readFile(file):
  12. with open(file) as json_file:
  13. data = json.load(json_file)
  14. return data
  15. """
  16. Opens the database file and deletes from the user tables
  17. :param name: The path to the sqlite database.
  18. :returns: Connection to the database.
  19. :raises IntegrityError: The queryes couldn't bre executed.
  20. :raises IOError: The sqlite file couldn't be created.
  21. """
  22. def openDatabase(name):
  23. global OPT_CREATE_DB
  24. print('Configuring database...')
  25. try:
  26. db = sqlite3.connect(name)
  27. cursor = db.cursor()
  28. cursor.execute('''DELETE FROM unit''')
  29. #cursor.execute('''DELETE FROM monster_rune''')
  30. cursor.execute('''DELETE FROM rune''')
  31. cursor.execute('''DELETE FROM player''')
  32. cursor.execute('''DELETE FROM building''')
  33. db.commit()
  34. cursor.close()
  35. return db
  36. except sqlite3.IntegrityError as e:
  37. print("Error executing statement: " + str(e))
  38. raise
  39. except IOError as e:
  40. print("I/O Error creating database " + name + ": " + str(e))
  41. raise
  42. """
  43. Inserts a row into the database.
  44. :param db: Connection to the database.
  45. :param table: Name of the table to insert into.
  46. :param values: List of values to insert.
  47. :raises IntegrityError: The insert query was unsuccesfull.
  48. """
  49. def insert(db, table, values):
  50. cursor = db.cursor()
  51. placeholders = ''
  52. for x in range(0, len(values)):
  53. placeholders = placeholders + '?, '
  54. placeholders = placeholders[:len(placeholders) - 2]
  55. query = 'INSERT INTO ' + table + ' VALUES (' + placeholders + ')'
  56. try:
  57. cursor.execute(query, values)
  58. except sqlite3.IntegrityError as e:
  59. print('Error Inserting into ' + table + ' with values (' + str(values) + '): ' + str(e))
  60. raise
  61. cursor.close;
  62. """
  63. Parses player (table player).
  64. :param db: Sqlite database connection.
  65. :param data: Data in SWEX json file.
  66. """
  67. def parsePlayer(db, data):
  68. print("Parsing player...")
  69. uid = data["wizard_info"]["wizard_id"]
  70. name = data["wizard_info"]["wizard_name"]
  71. mana = data["wizard_info"]["wizard_mana"]
  72. crystal = data["wizard_info"]["wizard_crystal"]
  73. country = data["wizard_info"]["wizard_last_country"]
  74. lang = data["wizard_info"]["wizard_last_lang"]
  75. level = data["wizard_info"]["wizard_level"]
  76. experience = data["wizard_info"]["experience"]
  77. energy = data["wizard_info"]["wizard_energy"]
  78. energy_max = data["wizard_info"]["energy_max"]
  79. energy_per_min = data["wizard_info"]["energy_per_min"]
  80. arena_energy = data["wizard_info"]["arena_energy"]
  81. arena_energy_max = data["wizard_info"]["arena_energy_max"]
  82. rep = data["wizard_info"]["rep_unit_id"]
  83. social_point = data["wizard_info"]["social_point_current"]
  84. honor_point = data["wizard_info"]["honor_point"]
  85. guild_point = data["wizard_info"]["guild_point"]
  86. darkportal_energy = data["wizard_info"]["darkportal_energy"]
  87. darkportal_energy_max = data["wizard_info"]["darkportal_energy_max"]
  88. costume_point = data["wizard_info"]["costume_point"]
  89. costume_point_max = data["wizard_info"]["costume_point_max"]
  90. honor_medal = data["wizard_info"]["honor_medal"]
  91. honor_mark = data["wizard_info"]["honor_mark"]
  92. event_coin = data["wizard_info"]["event_coin"]
  93. insert(db, "player", (uid, name, mana, crystal, country, lang, level, experience, energy, energy_max, energy_per_min, arena_energy, arena_energy_max, rep, social_point, honor_point, guild_point, darkportal_energy, darkportal_energy_max, costume_point, costume_point_max, honor_medal, honor_medal, event_coin))
  94. db.commit()
  95. """
  96. Parses scenarios (table scenario).
  97. :param db: Sqlite database connection.
  98. :param data: Data in SWEX json file.
  99. """
  100. def parseScenarios(db, data):
  101. print("Parsing scenarios...")
  102. uid = data["wizard_info"]["wizard_id"]
  103. for sce in data["scenario_list"]:
  104. region = sce["region_id"]
  105. difficulty = sce["difficulty"]
  106. cleared = sce["cleared"]
  107. max_cleared = 0
  108. for stage in sce["stage_list"]:
  109. if stage["cleared"] == 1:
  110. max_cleared = stage["stage_no"]
  111. insert(db, "scenario", (uid, region, difficulty, cleared, max_cleared))
  112. db.commit()
  113. """
  114. Parses arena defense units (table defense).
  115. :param db: Sqlite database connection.
  116. :param data: Data in SWEX json file.
  117. """
  118. def parseDefense(db, data):
  119. print("Parsing arena defense...")
  120. uid = data["wizard_info"]["wizard_id"]
  121. for defense in data["defense_unit_list"]:
  122. unit = defense["unit_id"]
  123. position = defense["pos_id"]
  124. insert(db, "defense", (uid, unit, position))
  125. db.commit()
  126. """
  127. Parses buildings (table building).
  128. :param db: Sqlite database connection.
  129. :param data: Data in SWEX json file.
  130. """
  131. def parseBuildings(db, data):
  132. print("Parsing buildings...")
  133. uid = data["wizard_info"]["wizard_id"]
  134. for bui in data["deco_list"]:
  135. building = bui["master_id"]
  136. level = bui["level"]
  137. insert(db, "building", (uid, building, level))
  138. db.commit()
  139. """
  140. Parses unit data (tables unit, unit_skill).
  141. :param db: Sqlite database connection.
  142. :param data: Data in SWEX json file.
  143. """
  144. def parseUnits(db, data):
  145. print("Parsing monsters...")
  146. uid = data["wizard_info"]["wizard_id"]
  147. for mon in data["unit_list"]:
  148. id = mon["unit_id"]
  149. building = mon["building_id"]
  150. monster = mon["unit_master_id"]
  151. level = mon["unit_level"]
  152. stars = mon["class"]
  153. hp = mon["con"] * 15 # Always x15
  154. attack = mon["atk"]
  155. defense = mon["def"]
  156. speed = mon["spd"]
  157. crit_rate = mon["critical_rate"]
  158. crit_damage = mon["critical_damage"]
  159. resistance = mon["resist"]
  160. accuracy = mon["accuracy"]
  161. experience = mon["experience"]
  162. exp_gained = mon["exp_gained"]
  163. exp_gain_rate = mon["exp_gain_rate"]
  164. costume = mon["costume_master_id"]
  165. attribute = mon["attribute"]
  166. source = mon["source"]
  167. create_time = mon["create_time"]
  168. homunculus = mon["homunculus"]
  169. homunculus_name = mon["homunculus_name"]
  170. insert(db, "unit", (uid, id, building, monster, level, stars, hp, attack, defense, speed, crit_rate, crit_damage, resistance, accuracy, experience, exp_gained, exp_gain_rate, costume, attribute, source, create_time, homunculus, homunculus_name, 0, None))
  171. for skill in mon["skills"]:
  172. skill_id = skill[0]
  173. skill_level = skill[1]
  174. insert(db, "unit_skill", (uid, id, skill_id, skill_level))
  175. db.commit()
  176. """
  177. Parses rune data (table rune).
  178. :param db: Sqlite database connection.
  179. :param data: Data in SWEX json file.
  180. """
  181. def parseRunes(db, data):
  182. print("Parsing runes...")
  183. uid = data["wizard_info"]["wizard_id"]
  184. for rune in data["runes"]:
  185. id = rune["rune_id"]
  186. assigned_to = rune["occupied_id"]
  187. if assigned_to == 0:
  188. assigned_to = None
  189. runeset = rune["set_id"]
  190. if runeset == 1:
  191. runeset = 'Energy'
  192. elif runeset == 2:
  193. runeset = 'Guard'
  194. elif runeset == 3:
  195. runeset = 'Swift'
  196. elif runeset == 4:
  197. runeset = 'Blade'
  198. elif runeset == 5:
  199. runeset = 'Rage'
  200. elif runeset == 6:
  201. runeset = 'Focus'
  202. elif runeset == 7:
  203. runeset = 'Endure'
  204. elif runeset == 8:
  205. runeset = 'Fatal'
  206. elif runeset == 10:
  207. runeset = 'Despair'
  208. elif runeset == 11:
  209. runeset = 'Vampire'
  210. elif runeset == 13:
  211. runeset = 'Violent'
  212. elif runeset == 14:
  213. runeset = 'Nemesis'
  214. elif runeset == 15:
  215. runeset = 'Will'
  216. elif runeset == 16:
  217. runeset = 'Shield'
  218. elif runeset == 17:
  219. runeset = 'Revenge'
  220. elif runeset == 18:
  221. runeset = 'Destroy'
  222. elif runeset == 19:
  223. runeset = 'Fight'
  224. elif runeset == 20:
  225. runeset = 'Determination'
  226. elif runeset == 21:
  227. runeset = 'Enhance'
  228. elif runeset == 22:
  229. runeset = 'Accuracy'
  230. elif runeset == 23:
  231. runeset = 'Tolerance'
  232. slot = rune["slot_no"]
  233. stars = rune["class"]
  234. level = rune["upgrade_curr"]
  235. quality = rune["rank"] - 1
  236. original_quality = rune["extra"] - 1
  237. value = rune["sell_value"]
  238. # TODO: Calculate
  239. #efficiency = rune["efficiency"]
  240. #max_efficiency = rune["max_efficiency"]
  241. efficiency = 0
  242. max_efficiency = 0
  243. main_stat = rune["pri_eff"][0]
  244. main_stat_value = rune["pri_eff"][1]
  245. if rune["prefix_eff"][0] > 0:
  246. innate_stat = rune["prefix_eff"][0]
  247. innate_stat_value = rune["prefix_eff"][1]
  248. else:
  249. innate_stat = None
  250. innate_stat_value = 0
  251. if len(rune["sec_eff"]) > 0:
  252. substat_1 = rune["sec_eff"][0][0]
  253. substat_1_value = rune["sec_eff"][0][1]
  254. substat_1_enchant = rune["sec_eff"][0][2]
  255. substat_1_grind = rune["sec_eff"][0][3]
  256. else:
  257. substat_1 = None
  258. substat_1_value = 0
  259. substat_1_enchant = 0
  260. substat_1_grind = 0
  261. if len(rune["sec_eff"]) > 1:
  262. substat_2 = rune["sec_eff"][1][0]
  263. substat_2_value = rune["sec_eff"][1][1]
  264. substat_2_enchant = rune["sec_eff"][1][2]
  265. substat_2_grind = rune["sec_eff"][1][3]
  266. else:
  267. substat_2 = None
  268. substat_2_value = 0
  269. substat_2_enchant = 0
  270. substat_2_grind = 0
  271. if len(rune["sec_eff"]) > 2:
  272. substat_3 = rune["sec_eff"][2][0]
  273. substat_3_value = rune["sec_eff"][2][1]
  274. substat_3_enchant = rune["sec_eff"][2][2]
  275. substat_3_grind = rune["sec_eff"][2][3]
  276. else:
  277. substat_3 = None
  278. substat_3_value = 0
  279. substat_3_enchant = 0
  280. substat_3_grind = 0
  281. if len(rune["sec_eff"]) > 3:
  282. substat_4 = rune["sec_eff"][0][0]
  283. substat_4_value = rune["sec_eff"][3][1]
  284. substat_4_enchant = rune["sec_eff"][3][2]
  285. substat_4_grind = rune["sec_eff"][3][3]
  286. else:
  287. substat_4 = None
  288. substat_4_value = 0
  289. substat_4_enchant = 0
  290. substat_4_grind = 0
  291. """
  292. Human readable stat names (as of 2019-08-16):
  293. STAT_HP = 1
  294. STAT_HP_PCT = 2
  295. STAT_ATK = 3
  296. STAT_ATK_PCT = 4
  297. STAT_DEF = 5
  298. STAT_DEF_PCT = 6
  299. STAT_SPD = 7
  300. STAT_CRIT_RATE_PCT = 8
  301. STAT_CRIT_DMG_PCT = 9
  302. STAT_RESIST_PCT = 10
  303. STAT_ACCURACY_PCT = 11
  304. """
  305. if (main_stat == 1):
  306. main_stat = "HP"
  307. elif (main_stat == 2):
  308. main_stat = "HP%"
  309. elif (main_stat == 3):
  310. main_stat = "ATK"
  311. elif (main_stat == 4):
  312. main_stat = "ATK%"
  313. elif (main_stat == 5):
  314. main_stat = "DEF"
  315. elif (main_stat == 6):
  316. main_stat = "DEF%"
  317. elif (main_stat == 8):
  318. main_stat = "SPD"
  319. elif (main_stat == 9):
  320. main_stat = "CRR"
  321. elif (main_stat == 10):
  322. main_stat = "CRD"
  323. elif (main_stat == 11):
  324. main_stat = "RES"
  325. elif (main_stat == 12):
  326. main_stat = "ACC"
  327. if (innate_stat == 1):
  328. innate_stat = "HP"
  329. elif (innate_stat == 2):
  330. innate_stat = "HP%"
  331. elif (innate_stat == 3):
  332. innate_stat = "ATK"
  333. elif (innate_stat == 4):
  334. innate_stat = "ATK%"
  335. elif (innate_stat == 5):
  336. innate_stat = "DEF"
  337. elif (innate_stat == 6):
  338. innate_stat = "DEF%"
  339. elif (innate_stat == 8):
  340. innate_stat = "SPD"
  341. elif (innate_stat == 9):
  342. innate_stat = "CRR"
  343. elif (innate_stat == 10):
  344. innate_stat = "CRD"
  345. elif (innate_stat == 11):
  346. innate_stat = "RES"
  347. elif (innate_stat == 12):
  348. innate_stat = "ACC"
  349. if (substat_1 == 1):
  350. substat_1 = "HP"
  351. elif (substat_1 == 2):
  352. substat_1 = "HP%"
  353. elif (substat_1 == 3):
  354. substat_1 = "ATK"
  355. elif (substat_1 == 4):
  356. substat_1 = "ATK%"
  357. elif (substat_1 == 5):
  358. substat_1 = "DEF"
  359. elif (substat_1 == 6):
  360. substat_1 = "DEF%"
  361. elif (substat_1 == 8):
  362. substat_1 = "SPD"
  363. elif (substat_1 == 9):
  364. substat_1 = "CRR"
  365. elif (substat_1 == 10):
  366. substat_1 = "CRD"
  367. elif (substat_1 == 11):
  368. substat_1 = "RES"
  369. elif (substat_1 == 12):
  370. substat_1 = "ACC"
  371. if (substat_2 == 1):
  372. substat_2 = "HP"
  373. elif (substat_2 == 2):
  374. substat_2 = "HP%"
  375. elif (substat_2 == 3):
  376. substat_2 = "ATK"
  377. elif (substat_2 == 4):
  378. substat_2 = "ATK%"
  379. elif (substat_2 == 5):
  380. substat_2 = "DEF"
  381. elif (substat_2 == 6):
  382. substat_2 = "DEF%"
  383. elif (substat_2 == 8):
  384. substat_2 = "SPD"
  385. elif (substat_2 == 9):
  386. substat_2 = "CRR"
  387. elif (substat_2 == 10):
  388. substat_2 = "CRD"
  389. elif (substat_2 == 11):
  390. substat_2 = "RES"
  391. elif (substat_2 == 12):
  392. substat_2 = "ACC"
  393. if (substat_3 == 1):
  394. substat_3 = "HP"
  395. elif (substat_3 == 2):
  396. substat_3 = "HP%"
  397. elif (substat_3 == 3):
  398. substat_3 = "ATK"
  399. elif (substat_3 == 4):
  400. substat_3 = "ATK%"
  401. elif (substat_3 == 5):
  402. substat_3 = "DEF"
  403. elif (substat_3 == 6):
  404. substat_3 = "DEF%"
  405. elif (substat_3 == 8):
  406. substat_3 = "SPD"
  407. elif (substat_3 == 9):
  408. substat_3 = "CRR"
  409. elif (substat_3 == 10):
  410. substat_3 = "CRD"
  411. elif (substat_3 == 11):
  412. substat_3 = "RES"
  413. elif (substat_3 == 12):
  414. substat_3 = "ACC"
  415. if (substat_4 == 1):
  416. substat_4 = "HP"
  417. elif (substat_4 == 2):
  418. substat_4 = "HP%"
  419. elif (substat_4 == 3):
  420. substat_4 = "ATK"
  421. elif (substat_4 == 4):
  422. substat_4 = "ATK%"
  423. elif (substat_4 == 5):
  424. substat_4 = "DEF"
  425. elif (substat_4 == 6):
  426. substat_4 = "DEF%"
  427. elif (substat_4 == 8):
  428. substat_4 = "SPD"
  429. elif (substat_4 == 9):
  430. substat_4 = "CRR"
  431. elif (substat_4 == 10):
  432. substat_4 = "CRD"
  433. elif (substat_4 == 11):
  434. substat_4 = "RES"
  435. elif (substat_4 == 12):
  436. substat_4 = "ACC"
  437. insert(db, "rune", (uid, id, assigned_to, runeset, slot, stars, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_1_enchant, substat_1_grind, substat_2, substat_2_value, substat_2_enchant, substat_2_grind, substat_3, substat_3_value, substat_3_enchant, substat_3_grind, substat_4, substat_4_value, substat_4_enchant, substat_4_grind))
  438. for mon in data["unit_list"]:
  439. for rune in mon["runes"]:
  440. id = rune["rune_id"]
  441. assigned_to = rune["occupied_id"]
  442. if assigned_to == 0:
  443. assigned_to = None
  444. runeset = rune["set_id"]
  445. if runeset == 1:
  446. runeset = 'Energy'
  447. elif runeset == 2:
  448. runeset = 'Guard'
  449. elif runeset == 3:
  450. runeset = 'Swift'
  451. elif runeset == 4:
  452. runeset = 'Blade'
  453. elif runeset == 5:
  454. runeset = 'Rage'
  455. elif runeset == 6:
  456. runeset = 'Focus'
  457. elif runeset == 7:
  458. runeset = 'Endure'
  459. elif runeset == 8:
  460. runeset = 'Fatal'
  461. elif runeset == 10:
  462. runeset = 'Despair'
  463. elif runeset == 11:
  464. runeset = 'Vampire'
  465. elif runeset == 13:
  466. runeset = 'Violent'
  467. elif runeset == 14:
  468. runeset = 'Nemesis'
  469. elif runeset == 15:
  470. runeset = 'Will'
  471. elif runeset == 16:
  472. runeset = 'Shield'
  473. elif runeset == 17:
  474. runeset = 'Revenge'
  475. elif runeset == 18:
  476. runeset = 'Destroy'
  477. elif runeset == 19:
  478. runeset = 'Fight'
  479. elif runeset == 20:
  480. runeset = 'Determination'
  481. elif runeset == 21:
  482. runeset = 'Enhance'
  483. elif runeset == 22:
  484. runeset = 'Accuracy'
  485. elif runeset == 23:
  486. runeset = 'Tolerance'
  487. slot = rune["slot_no"]
  488. stars = rune["class"]
  489. level = rune["upgrade_curr"]
  490. quality = rune["rank"] - 1
  491. original_quality = rune["extra"] - 1
  492. value = rune["sell_value"]
  493. # TODO: Calculate
  494. #efficiency = rune["efficiency"]
  495. #max_efficiency = rune["max_efficiency"]
  496. efficiency = 0
  497. max_efficiency = 0
  498. main_stat = rune["pri_eff"][0]
  499. main_stat_value = rune["pri_eff"][1]
  500. if rune["prefix_eff"][0] > 0:
  501. innate_stat = rune["prefix_eff"][0]
  502. innate_stat_value = rune["prefix_eff"][1]
  503. else:
  504. innate_stat = None
  505. innate_stat_value = 0
  506. if len(rune["sec_eff"]) > 0:
  507. substat_1 = rune["sec_eff"][0][0]
  508. substat_1_value = rune["sec_eff"][0][1]
  509. substat_1_enchant = rune["sec_eff"][0][2]
  510. substat_1_grind = rune["sec_eff"][0][3]
  511. else:
  512. substat_1 = None
  513. substat_1_value = 0
  514. substat_1_enchant = 0
  515. substat_1_grind = 0
  516. if len(rune["sec_eff"]) > 1:
  517. substat_2 = rune["sec_eff"][1][0]
  518. substat_2_value = rune["sec_eff"][1][1]
  519. substat_2_enchant = rune["sec_eff"][1][2]
  520. substat_2_grind = rune["sec_eff"][1][3]
  521. else:
  522. substat_2 = None
  523. substat_2_value = 0
  524. substat_2_enchant = 0
  525. substat_2_grind = 0
  526. if len(rune["sec_eff"]) > 2:
  527. substat_3 = rune["sec_eff"][2][0]
  528. substat_3_value = rune["sec_eff"][2][1]
  529. substat_3_enchant = rune["sec_eff"][2][2]
  530. substat_3_grind = rune["sec_eff"][2][3]
  531. else:
  532. substat_3 = None
  533. substat_3_value = 0
  534. substat_3_enchant = 0
  535. substat_3_grind = 0
  536. if len(rune["sec_eff"]) > 3:
  537. substat_4 = rune["sec_eff"][3][0]
  538. substat_4_value = rune["sec_eff"][3][1]
  539. substat_4_enchant = rune["sec_eff"][3][2]
  540. substat_4_grind = rune["sec_eff"][3][3]
  541. else:
  542. substat_4 = None
  543. substat_4_value = 0
  544. substat_4_enchant = 0
  545. substat_4_grind = 0
  546. """
  547. Human readable stat names (as of 2019-08-16):
  548. STAT_HP = 1
  549. STAT_HP_PCT = 2
  550. STAT_ATK = 3
  551. STAT_ATK_PCT = 4
  552. STAT_DEF = 5
  553. STAT_DEF_PCT = 6
  554. STAT_SPD = 7
  555. STAT_CRIT_RATE_PCT = 8
  556. STAT_CRIT_DMG_PCT = 9
  557. STAT_RESIST_PCT = 10
  558. STAT_ACCURACY_PCT = 11
  559. """
  560. if (main_stat == 1):
  561. main_stat = "HP"
  562. elif (main_stat == 2):
  563. main_stat = "HP%"
  564. elif (main_stat == 3):
  565. main_stat = "ATK"
  566. elif (main_stat == 4):
  567. main_stat = "ATK%"
  568. elif (main_stat == 5):
  569. main_stat = "DEF"
  570. elif (main_stat == 6):
  571. main_stat = "DEF%"
  572. elif (main_stat == 8):
  573. main_stat = "SPD"
  574. elif (main_stat == 9):
  575. main_stat = "CRR"
  576. elif (main_stat == 10):
  577. main_stat = "CRD"
  578. elif (main_stat == 11):
  579. main_stat = "RES"
  580. elif (main_stat == 12):
  581. main_stat = "ACC"
  582. if (innate_stat == 1):
  583. innate_stat = "HP"
  584. elif (innate_stat == 2):
  585. innate_stat = "HP%"
  586. elif (innate_stat == 3):
  587. innate_stat = "ATK"
  588. elif (innate_stat == 4):
  589. innate_stat = "ATK%"
  590. elif (innate_stat == 5):
  591. innate_stat = "DEF"
  592. elif (innate_stat == 6):
  593. innate_stat = "DEF%"
  594. elif (innate_stat == 8):
  595. innate_stat = "SPD"
  596. elif (innate_stat == 9):
  597. innate_stat = "CRR"
  598. elif (innate_stat == 10):
  599. innate_stat = "CRD"
  600. elif (innate_stat == 11):
  601. innate_stat = "RES"
  602. elif (innate_stat == 12):
  603. innate_stat = "ACC"
  604. if (substat_1 == 1):
  605. substat_1 = "HP"
  606. elif (substat_1 == 2):
  607. substat_1 = "HP%"
  608. elif (substat_1 == 3):
  609. substat_1 = "ATK"
  610. elif (substat_1 == 4):
  611. substat_1 = "ATK%"
  612. elif (substat_1 == 5):
  613. substat_1 = "DEF"
  614. elif (substat_1 == 6):
  615. substat_1 = "DEF%"
  616. elif (substat_1 == 8):
  617. substat_1 = "SPD"
  618. elif (substat_1 == 9):
  619. substat_1 = "CRR"
  620. elif (substat_1 == 10):
  621. substat_1 = "CRD"
  622. elif (substat_1 == 11):
  623. substat_1 = "RES"
  624. elif (substat_1 == 12):
  625. substat_1 = "ACC"
  626. if (substat_2 == 1):
  627. substat_2 = "HP"
  628. elif (substat_2 == 2):
  629. substat_2 = "HP%"
  630. elif (substat_2 == 3):
  631. substat_2 = "ATK"
  632. elif (substat_2 == 4):
  633. substat_2 = "ATK%"
  634. elif (substat_2 == 5):
  635. substat_2 = "DEF"
  636. elif (substat_2 == 6):
  637. substat_2 = "DEF%"
  638. elif (substat_2 == 8):
  639. substat_2 = "SPD"
  640. elif (substat_2 == 9):
  641. substat_2 = "CRR"
  642. elif (substat_2 == 10):
  643. substat_2 = "CRD"
  644. elif (substat_2 == 11):
  645. substat_2 = "RES"
  646. elif (substat_2 == 12):
  647. substat_2 = "ACC"
  648. if (substat_3 == 1):
  649. substat_3 = "HP"
  650. elif (substat_3 == 2):
  651. substat_3 = "HP%"
  652. elif (substat_3 == 3):
  653. substat_3 = "ATK"
  654. elif (substat_3 == 4):
  655. substat_3 = "ATK%"
  656. elif (substat_3 == 5):
  657. substat_3 = "DEF"
  658. elif (substat_3 == 6):
  659. substat_3 = "DEF%"
  660. elif (substat_3 == 8):
  661. substat_3 = "SPD"
  662. elif (substat_3 == 9):
  663. substat_3 = "CRR"
  664. elif (substat_3 == 10):
  665. substat_3 = "CRD"
  666. elif (substat_3 == 11):
  667. substat_3 = "RES"
  668. elif (substat_3 == 12):
  669. substat_3 = "ACC"
  670. if (substat_4 == 1):
  671. substat_4 = "HP"
  672. elif (substat_4 == 2):
  673. substat_4 = "HP%"
  674. elif (substat_4 == 3):
  675. substat_4 = "ATK"
  676. elif (substat_4 == 4):
  677. substat_4 = "ATK%"
  678. elif (substat_4 == 5):
  679. substat_4 = "DEF"
  680. elif (substat_4 == 6):
  681. substat_4 = "DEF%"
  682. elif (substat_4 == 8):
  683. substat_4 = "SPD"
  684. elif (substat_4 == 9):
  685. substat_4 = "CRR"
  686. elif (substat_4 == 10):
  687. substat_4 = "CRD"
  688. elif (substat_4 == 11):
  689. substat_4 = "RES"
  690. elif (substat_4 == 12):
  691. substat_4 = "ACC"
  692. insert(db, "rune", (uid, id, assigned_to, runeset, slot, stars, level, quality, original_quality, value, efficiency, max_efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_1_enchant, substat_1_grind, substat_2, substat_2_value, substat_2_enchant, substat_2_grind, substat_3, substat_3_value, substat_3_enchant, substat_3_grind, substat_4, substat_4_value, substat_4_enchant, substat_4_grind))
  693. db.commit()
  694. """
  695. Begin script
  696. """
  697. db = openDatabase('application/sw.sqlite')
  698. data = readFile(FILE)
  699. parsePlayer(db, data)
  700. parseScenarios(db, data)
  701. parseDefense(db, data)
  702. parseBuildings(db, data)
  703. # TODO homunculus_skill_list
  704. parseUnits(db, data)
  705. # TODO summon_special_info
  706. # TODO inventory_info
  707. parseRunes(db, data)
  708. #parseMonsters(db, 'https://swarfarm.com/api/v2/profiles/' + USER + '/monsters/')
  709. #db.commit()