def genClassMappingData(self): self.__gen_classes() self.__fill_classes() self.shipclass_data = sortDict(self.shipclass_data) shipclass_luatable = 'local d = {}\n' shipclass_luatable += '---------------------------------\n' shipclass_luatable += '-- 以下为舰娘和舰级的对应数据 -- \n' shipclass_luatable += '---------------------------------\n' shipclass_luatable += '\nd.shipclassDataTb = ' shipclass_luatable += luatable(self.shipclass_data) shipclass_luatable += '\n' shipclass_luatable += '\nreturn d\n' with open(OUPUT_PATH + LUATABLE_PATH + SHIPCLASSES_MAPPING_DATA + '.lua', 'w', encoding='utf-8') as fp: fp.write(shipclass_luatable) with open(OUPUT_PATH + JSON_PATH + SHIPCLASSES_MAPPING_DATA + '.json', 'w', encoding='utf-8') as fp: json.dump(self.shipclass_data, fp, ensure_ascii=False, indent=4)
async def genShinkaiItems(self): CATEGORY_MEMBERS = await self.__get_allitems() tasks = [] for category in CATEGORY_MEMBERS: title = category['title'] if title.startswith('Template'): continue tasks.append( asyncio.ensure_future(self.__append_shinkai_item(title))) dones, pendings = await asyncio.wait(tasks) print('Shinkai-Items: {} done, {} pendings.'.format( len(dones), len(pendings))) self.items_data = sortDict(self.items_data) items_luatable = 'local d = {}\n' items_luatable += '\nd.equipDataTable = ' items_luatable += luatable(self.items_data) items_luatable += '\n' items_luatable += '\nreturn d\n' with open(OUPUT_PATH + LUATABLE_PATH + SHINKAI_ITEMS_DATA + '.lua', 'w', encoding='utf-8') as fp: fp.write(items_luatable) with open(OUPUT_PATH + JSON_PATH + SHINKAI_ITEMS_DATA + '.json', 'w', encoding='utf-8') as fp: json.dump(self.items_data, fp, ensure_ascii=False, indent=4)
def genItemsData(self): self.__load_akashi_list() self.__load_ship_types() for item_id in self.ITEMS_DB.keys(): if item_id in self.SLOTITEMS_KCDATA: self.__append_item(item_id) self.items_data = sortDict(self.items_data) items_luatable = 'local d = {}\n' items_luatable += '------------------------\n' items_luatable += '-- 以下为装备数据列表 -- \n' items_luatable += '------------------------\n' items_luatable += '\nd.equipDataTb = ' items_luatable += luatable(self.items_data) items_luatable += '\n' items_luatable += '\nreturn d\n' with open(OUPUT_PATH + LUATABLE_PATH + ITEMS_DATA + '.lua', 'w', encoding='utf-8') as fp: fp.write(items_luatable) with open(OUPUT_PATH + JSON_PATH + ITEMS_DATA + '.json', 'w', encoding='utf-8') as fp: json.dump(self.items_data, fp, ensure_ascii=False, indent=4)
def genShipsData(self): self.__map_lvl_up() for ship_id in self.SHIPS_DB.keys(): if ship_id in self.SHIPS_KCDATA: self.__append_ship(ship_id) self.ships_data = sortDict(self.ships_data) ships_luatable = 'local d = {}\n' ships_luatable += '------------------------\n' ships_luatable += '-- 以下为舰娘数据列表 -- \n' ships_luatable += '------------------------\n' ships_luatable += '\nd.shipDataTb = ' ships_luatable += luatable(self.ships_data) ships_luatable += '\n' ships_luatable += '\nreturn d\n' with open(OUPUT_PATH + LUATABLE_PATH + SHIPS_DATA + '.lua', 'w', encoding='utf-8') as fp: fp.write(ships_luatable) with open(OUPUT_PATH + JSON_PATH + SHIPS_DATA + '.json', 'w', encoding='utf-8') as fp: json.dump(self.ships_data, fp, ensure_ascii=False, indent=4)
async def genShinkaiShips(self): self.__load_extra() categories = await self.__get_allships() tasks = [] for title in categories: tasks.append( asyncio.ensure_future(self.__append_shinkai_ship(title))) dones, pendings = await asyncio.wait(tasks) print('Shinkai-Ships: {} done, {} pendings.'.format( len(dones), len(pendings))) self.ships_data = sortDict(self.ships_data) ships_luatable = 'local d = {}\n' ships_luatable += '\nd.shipDataTable = ' ships_luatable += luatable(self.ships_data) ships_luatable += '\n' ships_luatable += '\nreturn d\n' with open(OUPUT_PATH + LUATABLE_PATH + SHINKAI_SHIPS_DATA + '.lua', 'w', encoding='utf-8') as fp: fp.write(ships_luatable) with open(OUPUT_PATH + JSON_PATH + SHINKAI_SHIPS_DATA + '.json', 'w', encoding='utf-8') as fp: json.dump(self.ships_data, fp, ensure_ascii=False, indent=4)
def gen_luatable(self): lua_table = 'local k = {}\n\n' lua_table += 'k.EquipUpdateTb = ' lua_table += utils.luatable(self.weapon_list) lua_table += '\n\nreturn k\n' return lua_table
def __map_lvl_up(self): ship_series_data = {} for series in self.SHIP_SERIES_DB.values(): ship_loopable = False series_ships = series['ships'] for i in range(len(series_ships)): series_ship = series_ships[i] #next_blueprint = 'next_blueprint' in series_ship and series_ship[ #'next_blueprint'] == 'on' #next_catapult = 'next_catapult' in series_ship and series_ship[ #'next_catapult'] == 'on' #next_level = series_ship['next_lvl'] if 'next_lvl' in series_ship \ #and series_ship['next_lvl'] else 0 shipid = series_ship['id'] _ship = self.SHIPS_DB[shipid] try: ship_kcid = str(self.SHIPS_KCDATA[shipid]['wiki_id']) except KeyError: continue next_loop = 'next_loop' in series_ship and series_ship['next_loop'] == 'on' is_last_ship = i == len(series_ships)-1 is_first_ship = i == 0 if not(ship_loopable) and next_loop: ship_loopable = True first_loopable_shipid = shipid first_loopable_kcid = ship_kcid if ship_loopable and is_last_ship: _ship['remodel'].update({ 'next': first_loopable_shipid, 'next_lvl': '' }) if is_first_ship: first_ship = ship_kcid ship_series_data[first_ship] = {} ship_series_data[first_ship]['编号'] = [] ship_series_data[first_ship]['符号'] = [] ship_series_data[first_ship]['编号'].append(ship_kcid) _ship['remodel_series'] = first_ship if ship_loopable: ship_series_data[first_ship]['符号'].append('⇒') if is_last_ship: ship_series_data[first_ship]['编号'].append(first_loopable_kcid) ship_series_data[first_ship]['符号'].append('end') else: if is_last_ship: ship_series_data[first_ship]['符号'].append('end') else: ship_series_data[first_ship]['符号'].append('→') if ('remodel' in _ship) and ('next' in _ship['remodel']) and not(is_last_ship): next_shipid = _ship['remodel']['next'] #can_remodel = 1 #if next_blueprint: #can_remodel += 1 #if next_catapult: #can_remodel += 1 self.SHIPS_DB[next_shipid]['remodel_info'] = 1 #self.SHIPS_DB[shipid]['next_type'] = can_remodel ships_series_luatable = 'local d = {}\n' ships_series_luatable += '------------------------\n' ships_series_luatable += '-- 以下为舰娘系列数据列表 -- \n' ships_series_luatable += '------------------------\n' ships_series_luatable += '\nd.shipSeriesDataTb = ' ships_series_luatable += luatable(ship_series_data) ships_series_luatable += '\n' ships_series_luatable += '\nreturn d\n' with open(OUPUT_PATH + LUATABLE_PATH + SHIP_SERIES_DB + '.lua', 'w', encoding='utf-8') as fp: fp.write(ships_series_luatable) with open(OUPUT_PATH + JSON_PATH + SHIP_SERIES_DB + '.json', 'w', encoding='utf-8') as fp: json.dump(ship_series_data, fp, ensure_ascii=False, indent=4)
try: options, args = getopt.getopt((sys.argv[1:]), "hce:s:", ["help", "clean", "equip", "ship"]) except getopt.GetoptError: print("usage: generator.py (--celan) ") db = db_session() for name, value in options: if name in ("-c", "--clean"): os.remove(os.getcwd() + "/kancolle.db") print("Database has been removed.") sys.exit(0) elif name in ("-h", "--help"): print("usage: generator.py (--celan) (--equip) (--ship)") generate_db() equip = db.query(Equipment).all() for each in equip: name = os.getcwd() + '/equipments/' + str( list(json.loads(str(each)))[0]) + ".lua" with open(name, 'w') as f: f.write(luatable(json.loads(str(each)))) ship = db.query(Ship).all() for each in ship: name = os.getcwd() + '/ships/' + str(list(json.loads( str(each)))[0]) + ".lua" with open(name, 'w') as f: f.write(luatable(json.loads(str(each))))