fixes #82; old ancestries sql to new yaml
							parent
							
								
									3c1f776842
								
							
						
					
					
						commit
						9c3f57742c
					
				|  | @ -0,0 +1,147 @@ | ||||||
|  | ancestries: | ||||||
|  | - boosts: | ||||||
|  |   - CON | ||||||
|  |   - WIS | ||||||
|  |   - Free1 | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: | ||||||
|  |   - CHA | ||||||
|  |   hp: 10 | ||||||
|  |   name: Dwarf | ||||||
|  |   senses: Darkvision | ||||||
|  |   size: Medium | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 35 | ||||||
|  |     page_stop: 35 | ||||||
|  |   speed: 20 | ||||||
|  |   traits: | ||||||
|  |   - Dwarf | ||||||
|  |   - Humanoid | ||||||
|  | - boosts: | ||||||
|  |   - DEX | ||||||
|  |   - INT | ||||||
|  |   - Free1 | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: | ||||||
|  |   - CON | ||||||
|  |   hp: 6 | ||||||
|  |   name: Elf | ||||||
|  |   senses: Low-Light Vision | ||||||
|  |   size: Medium | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 39 | ||||||
|  |     page_stop: 39 | ||||||
|  |   speed: 30 | ||||||
|  |   traits: | ||||||
|  |   - Elf | ||||||
|  |   - Humanoid | ||||||
|  | - boosts: | ||||||
|  |   - CON | ||||||
|  |   - CHA | ||||||
|  |   - Free1 | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: | ||||||
|  |   - STR | ||||||
|  |   hp: 8 | ||||||
|  |   name: Gnome | ||||||
|  |   senses: Low-Light Vision | ||||||
|  |   size: Small | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 43 | ||||||
|  |     page_stop: 43 | ||||||
|  |   speed: 25 | ||||||
|  |   traits: | ||||||
|  |   - Gnome | ||||||
|  |   - Humanoid | ||||||
|  | - boosts: | ||||||
|  |   - DEX | ||||||
|  |   - CHA | ||||||
|  |   - Free1 | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: | ||||||
|  |   - WIS | ||||||
|  |   hp: 6 | ||||||
|  |   name: Goblin | ||||||
|  |   senses: Darkvision | ||||||
|  |   size: Small | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 47 | ||||||
|  |     page_stop: 47 | ||||||
|  |   speed: 25 | ||||||
|  |   traits: | ||||||
|  |   - Goblin | ||||||
|  |   - Humanoid | ||||||
|  | - boosts: | ||||||
|  |   - DEX | ||||||
|  |   - WIS | ||||||
|  |   - Free1 | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: | ||||||
|  |   - STR | ||||||
|  |   hp: 6 | ||||||
|  |   name: Halfling | ||||||
|  |   senses: Keen Eyes | ||||||
|  |   size: Small | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 51 | ||||||
|  |     page_stop: 51 | ||||||
|  |   speed: 25 | ||||||
|  |   traits: | ||||||
|  |   - Halfling | ||||||
|  |   - Humanoid | ||||||
|  | - boosts: | ||||||
|  |   - Free1 | ||||||
|  |   - Free2 | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: null | ||||||
|  |   hp: 8 | ||||||
|  |   name: Human | ||||||
|  |   senses: None | ||||||
|  |   size: Medium | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 55 | ||||||
|  |     page_stop: 55 | ||||||
|  |   speed: 25 | ||||||
|  |   traits: | ||||||
|  |   - Human | ||||||
|  |   - Humanoid | ||||||
|  | - boosts: null | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: null | ||||||
|  |   hp: 8 | ||||||
|  |   name: Half-Elf | ||||||
|  |   senses: None | ||||||
|  |   size: Medium | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 55 | ||||||
|  |     page_stop: 55 | ||||||
|  |   speed: 25 | ||||||
|  |   traits: | ||||||
|  |   - Elf | ||||||
|  |   - Human | ||||||
|  |   - Humanoid | ||||||
|  |   - Half-Elf | ||||||
|  | - boosts: null | ||||||
|  |   flavor_text: TODO | ||||||
|  |   flaws: null | ||||||
|  |   hp: 8 | ||||||
|  |   name: Half-Orc | ||||||
|  |   senses: None | ||||||
|  |   size: Medium | ||||||
|  |   source: | ||||||
|  |   - abbr: CRB | ||||||
|  |     page_start: 55 | ||||||
|  |     page_stop: 55 | ||||||
|  |   speed: 25 | ||||||
|  |   traits: | ||||||
|  |   - Humanoid | ||||||
|  |   - Human | ||||||
|  |   - Orc | ||||||
|  |   - Half-Orc | ||||||
|  | @ -0,0 +1,138 @@ | ||||||
|  | import sqlite3 | ||||||
|  | import yaml | ||||||
|  | 
 | ||||||
|  | def main(): | ||||||
|  |     conn = sqlite3.connect('../../pf2.db') | ||||||
|  | 
 | ||||||
|  |     conn.row_factory = sqlite3.Row | ||||||
|  |     c = conn.cursor() | ||||||
|  |     stmt = """ | ||||||
|  |     SELECT ancestries.short_name as name, | ||||||
|  |         flavor_text, | ||||||
|  |         hp, | ||||||
|  |         sizes.short_name AS size, | ||||||
|  |         speed, | ||||||
|  |         senses.short_name AS senses, | ||||||
|  |         ancestries.sources_pages | ||||||
|  |     FROM ancestries | ||||||
|  |         INNER JOIN | ||||||
|  |         sizes ON sizes.size_id = ancestries.size_id | ||||||
|  |         INNER JOIN | ||||||
|  |         senses ON senses.senses_id = ancestries.vision_id; | ||||||
|  |     """ | ||||||
|  |     c.execute(stmt) | ||||||
|  |     res = [dict(row) for row in c.fetchall()] | ||||||
|  |     print(res) | ||||||
|  | 
 | ||||||
|  |     # for i in res: | ||||||
|  |     #     if i['hands'] == None or i['hands'] == '': | ||||||
|  |     #         i['hands'] = 0 | ||||||
|  | 
 | ||||||
|  |     reslist = [] | ||||||
|  |     for i in res: | ||||||
|  |         tmp = { | ||||||
|  |             "name": i['name'], | ||||||
|  |             "flavor_text": i['flavor_text'], | ||||||
|  |             "hp": i['hp'], | ||||||
|  |             "size": i['size'], | ||||||
|  |             'speed': i['speed'], | ||||||
|  |             'senses': i['senses'], | ||||||
|  |             "source": [ | ||||||
|  |                 { | ||||||
|  |                     'abbr': 'CRB', | ||||||
|  |                     'page_start': int(i['sources_pages']), | ||||||
|  |                     'page_stop': int(i['sources_pages']) | ||||||
|  |                 }, | ||||||
|  |             ], | ||||||
|  |             'boosts': None, | ||||||
|  |             'flaws': None, | ||||||
|  |             'traits': None | ||||||
|  |         } | ||||||
|  |         # add in boosts | ||||||
|  |         stmt = """ | ||||||
|  |         SELECT abilityscores.short_name | ||||||
|  |             FROM abilityscores | ||||||
|  |             INNER JOIN | ||||||
|  |                 ancestries_boosts ON abilityscores.abilityscores_id = ancestries_boosts.abilityscores_id | ||||||
|  |             INNER JOIN | ||||||
|  |                 ancestries ON ancestries.ancestry_id = ancestries_boosts.ancestry_id | ||||||
|  |                 WHERE ancestries.ancestry_id = ( | ||||||
|  |                                             SELECT ancestries.ancestry_id | ||||||
|  |                                             WHERE ancestries.short_name = ? | ||||||
|  |                                         ); | ||||||
|  |         """ | ||||||
|  |         c.execute(stmt, (i['name'],)) | ||||||
|  |         resboosts = [dict(row) for row in c.fetchall()] | ||||||
|  |         print(resboosts) | ||||||
|  |         if len(resboosts) == 0: | ||||||
|  |             tmp['boosts'] = None | ||||||
|  |         else: | ||||||
|  |             boostslist = [] | ||||||
|  |             for j in resboosts: | ||||||
|  |                 boostslist.append(j['short_name']) | ||||||
|  |             tmp['boosts'] = boostslist | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         # add in flaws | ||||||
|  |         stmt = """ | ||||||
|  |         SELECT abilityscores.short_name | ||||||
|  |             FROM abilityscores | ||||||
|  |             INNER JOIN | ||||||
|  |                 ancestries_flaws ON abilityscores.abilityscores_id = ancestries_flaws.abilityscores_id | ||||||
|  |             INNER JOIN | ||||||
|  |                 ancestries ON ancestries.ancestry_id = ancestries_flaws.ancestry_id | ||||||
|  |                 WHERE ancestries.ancestry_id = ( | ||||||
|  |                                             SELECT ancestries.ancestry_id | ||||||
|  |                                             WHERE ancestries.short_name = ? | ||||||
|  |                                         ); | ||||||
|  |         """ | ||||||
|  |         c.execute(stmt, (i['name'],)) | ||||||
|  |         resflaws = [dict(row) for row in c.fetchall()] | ||||||
|  |         print(resflaws) | ||||||
|  |         if len(resflaws) == 0: | ||||||
|  |             tmp['flaws'] = None | ||||||
|  |         else: | ||||||
|  |             flawslist = [] | ||||||
|  |             for j in resflaws: | ||||||
|  |                 flawslist.append(j['short_name']) | ||||||
|  |             tmp['flaws'] = flawslist | ||||||
|  |         # add in traits | ||||||
|  |         stmt = """ | ||||||
|  |         SELECT traits.short_name | ||||||
|  |             FROM traits | ||||||
|  |             INNER JOIN | ||||||
|  |                 ancestries_traits ON traits.trait_id = ancestries_traits.trait_id | ||||||
|  |             INNER JOIN | ||||||
|  |                 ancestries ON ancestries.ancestry_id = ancestries_traits.ancestry_id | ||||||
|  |                 WHERE ancestries.ancestry_id = ( | ||||||
|  |                                             SELECT ancestries.ancestry_id | ||||||
|  |                                             WHERE ancestries.short_name = ? | ||||||
|  |                                         ); | ||||||
|  |         """ | ||||||
|  |         c.execute(stmt, (i['name'],)) | ||||||
|  |         restraits = [dict(row) for row in c.fetchall()] | ||||||
|  |         print(restraits) | ||||||
|  |         if len(restraits) == 0: | ||||||
|  |             tmp['traits'] = None | ||||||
|  |         else: | ||||||
|  |             traitslist = [] | ||||||
|  |             for j in restraits: | ||||||
|  |                 traitslist.append(j['short_name']) | ||||||
|  |             tmp['traits'] = traitslist | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         reslist.append(tmp) | ||||||
|  | 
 | ||||||
|  |     # # print(reslist) | ||||||
|  | 
 | ||||||
|  |     tmpd = {'ancestries': reslist} | ||||||
|  | 
 | ||||||
|  |     # now dump to yaml | ||||||
|  |     final = yaml.safe_dump(tmpd, allow_unicode=True) | ||||||
|  |     with open('tmp-ancestries.yaml', 'w') as f: | ||||||
|  |         f.write(final) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     main() | ||||||
		Loading…
	
		Reference in New Issue