import base64 from copy import deepcopy adv = [ { 'id': 0, 'name': 'swordman_male', 'title': '鬼剑士(男)', 'children': [ {'id': 0, 'name': 'weapon_master', 'title': '极诣·剑魂', 'open': True, 'class': 'GF.swordman_male.weapon_master'}, {'id': 1, 'name': 'soul_bender', 'title': '极诣·鬼泣', 'open': True, 'class': 'GF.swordman_male.soul_bender'}, {'id': 2, 'name': 'berserker', 'title': '极诣·狂战士', 'open': True, 'class': 'GF.swordman_male.berserker'}, {'id': 3, 'name': 'asura', 'title': '极诣·阿修罗', 'open': True, 'class': 'GF.swordman_male.asura'}, {'id': 4, 'name': 'ghostblade', 'title': '极诣·剑影', 'open': True, 'class': 'GF.swordman_male.ghostblade'}, ], }, { 'id': 1, 'name': 'swordman_female', 'title': '鬼剑士(女)', 'children': [ {'id': 0, 'name': 'sword_master', 'title': '极诣·驭剑士', 'open': True, 'class': 'GF.swordman_female.sword_master'}, {'id': 1, 'name': 'dark_templar', 'title': '极诣·暗殿骑士', 'open': True, 'class': 'GF.swordman_female.dark_templar'}, {'id': 2, 'name': 'demon_slayer', 'title': '极诣·契魔者', 'open': True, 'class': 'GF.swordman_female.demon_slayer'}, {'id': 3, 'name': 'vegabond', 'title': '极诣·流浪武士', 'open': True, 'class': 'GF.swordman_female.vegabond'}, {'id': 4, 'name': 'spectre', 'title': '极诣·刃影', 'open': True, 'class': 'GF.swordman_female.spectre'}, ], }, { 'id': 2, 'name': 'fighter_male', 'title': '格斗家(男)', 'children': [ {'id': 0, 'name': 'nenmaster_male', 'title': '归元·气功师', 'open': True, 'class': 'GF.fighter_male.nenmaster_male'}, {'id': 1, 'name': 'striker_male', 'title': '归元·散打', 'open': True, 'class': 'GF.fighter_male.striker_male'}, {'id': 2, 'name': 'brawler_male', 'title': '归元·街霸', 'open': True, 'class': 'GF.fighter_male.brawler_male'}, {'id': 3, 'name': 'grappler_male', 'title': '归元·柔道家', 'open': True, 'class': 'GF.fighter_male.grappler_male'}, {'name': 'empty', 'title': '', 'comment': '首页'}, ], }, { 'id': 3, 'name': 'fighter_female', 'title': '格斗家(女)', 'children': [ {'id': 0, 'name': 'nenmaster_female', 'title': '归元·气功师', 'open': True, 'class': 'GF.fighter_female.nenmaster_female'}, {'id': 1, 'name': 'striker_female', 'title': '归元·散打', 'open': True, 'class': 'GF.fighter_female.striker_female'}, {'id': 2, 'name': 'brawler_female', 'title': '归元·街霸', 'open': False}, {'id': 3, 'name': 'grappler_female', 'title': '归元·柔道家', 'open': True, 'class': 'GF.fighter_female.grappler_female'}, {'name': 'sponsor', 'url': 'https://bbs.colg.cn', 'title': '', 'open': True}, ], }, { 'id': 4, 'name': 'gunner_male', 'title': '神枪手(男)', 'children': [ {'id': 0, 'name': 'ranger_male', 'title': '重霄·漫游枪手', 'open': True, 'class': 'GF.gunner_male.ranger_male'}, {'id': 1, 'name': 'launcher_male', 'title': '重霄·枪炮师', 'open': True, 'class': 'GF.gunner_male.launcher_male'}, {'id': 2, 'name': 'mechanic_male', 'title': '重霄·机械师', 'open': True, 'class': 'GF.gunner_male.mechanic_male'}, {'id': 3, 'name': 'spitfire_male', 'title': '重霄·弹药专家', 'open': True, 'class': 'GF.gunner_male.spitfire_male'}, {'id': 4, 'name': 'assault', 'title': '重霄·合金战士', 'open': False}, ], }, { 'id': 5, 'name': 'gunner_female', 'title': '神枪手(女)', 'children': [ {'id': 0, 'name': 'ranger_female', 'title': '重霄·漫游枪手', 'open': True, 'class': 'GF.gunner_female.ranger_female'}, {'id': 1, 'name': 'launcher_female', 'title': '重霄·枪炮师', 'open': True, 'class': 'GF.gunner_female.launcher_female'}, {'id': 2, 'name': 'mechanic_female', 'title': '重霄·机械师', 'open': False, 'class': 'GF.gunner_female.mechanic_female'}, {'id': 3, 'name': 'spitfire_female', 'title': '重霄·弹药专家', 'open': True, 'class': 'GF.gunner_female.spitfire_female'}, {'id': 4, 'name': 'paramedic', 'title': '重霄·协战师', 'open': True, 'class': 'GF.gunner_female.paramedic'}, ], }, { 'id': 6, 'name': 'mage_male', 'title': '魔法师(男)', 'children': [ {'id': 0, 'name': 'elemental_bomber', 'title': '知源·元素爆破师', 'open': True, 'class': 'GF.mage_male.elemental_bomber'}, {'id': 1, 'name': 'glacial_master', 'title': '知源·冰结师', 'open': True, 'class': 'GF.mage_male.glacial_master'}, {'id': 2, 'name': 'blood_mage', 'title': '知源·血法师', 'open': True, 'class': 'GF.mage_male.blood_mage'}, {'id': 3, 'name': 'swift_master', 'title': '知源·逐风者', 'open': True, 'class': 'GF.mage_male.swift_master'}, {'id': 4, 'name': 'dimension_walker', 'title': '知源·次元行者', 'open': True, 'class': 'GF.mage_male.dimension_walker'}, ], }, { 'id': 7, 'name': 'mage_female', 'title': '魔法师(女)', 'children': [ {'id': 0, 'name': 'elementalist', 'title': '知源·元素师', 'open': True, 'class': 'GF.mage_female.elementalist'}, {'id': 1, 'name': 'summoner', 'title': '知源·召唤师', 'open': False}, {'id': 2, 'name': 'battle_mage', 'title': '知源·战斗法师', 'open': True, 'class': 'GF.mage_female.battle_mage'}, {'id': 3, 'name': 'witch', 'title': '知源·魔道学者', 'open': True, 'class': 'GF.mage_female.witch'}, { 'id': 4, 'name': 'enchantress', 'title': '知源·小魔女', 'open': True, 'class': 'GF.mage_female.enchantress', }, ], }, { 'id': 8, 'name': 'priest_male', 'title': '圣职者(男)', 'children': [ { 'id': 0, 'name': 'crusader_male', 'title': '神启·圣骑士', 'open': True, 'class': 'GF.priest_male.crusader_male', 'options': [{'id': 0, 'name': 'crusader_male', 'title': '奶', 'class': 'GF.priest_male.crusader_male'}, {'id': 1, 'name': 'crusader_male_carry', 'title': '审判', 'class': 'GF.priest_male.crusader_male_carry'}], }, {'id': 1, 'name': 'infighter', 'title': '神启·蓝拳圣使', 'open': True, 'class': 'GF.priest_male.infighter'}, {'id': 2, 'name': 'exorcist', 'title': '神启·驱魔师', 'open': True, 'class': 'GF.priest_male.exorcist'}, {'id': 3, 'name': 'avenger', 'title': '神启·复仇者', 'open': True, 'class': 'GF.priest_male.avenger'}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, { 'id': 9, 'name': 'priest_female', 'title': '圣职者(女)', 'children': [ { 'id': 0, 'name': 'crusader_female', 'title': '神启·圣骑士', 'open': True, 'class': 'GF.priest_female.crusader_female', # 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'GF.priest_female.crusader_female', "open": True}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'crusader_female_carry'}], }, {'id': 1, 'name': 'inquistor', 'title': '神启·异端审判者', 'open': True, 'class': 'GF.priest_female.inquistor'}, {'id': 2, 'name': 'sorceress', 'title': '神启·巫女', 'open': True, 'class': 'GF.priest_female.sorceress'}, {'id': 3, 'name': 'mistress', 'title': '神启·诱魔者', 'open': True, 'class': 'GF.priest_female.mistress'}, {'id': 4, 'name': 'infighter_female', 'title': '神启·蓝拳圣使', 'open': False, 'class': 'GF.priest_female.infighter_female'}, ], }, { 'id': 10, 'name': 'thief', 'title': '暗夜使者', 'children': [ {'id': 0, 'name': 'rogue', 'title': '隐夜·刺客', 'open': True, 'class': 'GF.thief.rogue'}, {'id': 1, 'name': 'necro', 'title': '隐夜·死灵术士', 'open': True, 'class': 'GF.thief.necro'}, {'id': 2, 'name': 'kunoichi', 'title': '隐夜·忍者', 'open': True, 'class': 'GF.thief.kunoichi'}, {'id': 3, 'name': 'shadow_dancer', 'title': '隐夜·影舞者', 'open': True, 'class': 'GF.thief.shadow_dancer'}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, { 'id': 11, 'name': 'knight', 'title': '守护者', 'children': [ {'id': 0, 'name': 'elven_knight', 'title': '皓曦·精灵骑士', 'open': False}, {'id': 1, 'name': 'chaos', 'title': '皓曦·混沌魔灵', 'open': False}, {'id': 2, 'name': 'paladin', 'title': '皓曦·帕拉丁', 'open': True, 'class': 'GF.knight.paladin'}, {'id': 3, 'name': 'dragon_knight', 'title': '皓曦·龙骑士', 'open': True, 'class': 'GF.knight.dragon_knight'}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, { 'id': 12, 'name': 'demonic_lancer', 'title': '魔枪士', 'children': [ {'id': 0, 'name': 'vanguard', 'title': '千魂·征战者', 'open': True, 'class': 'GF.demonic_lancer.vanguard'}, {'id': 1, 'name': 'skirmisher', 'title': '千魂·决战者', 'open': True, 'class': 'GF.demonic_lancer.skirmisher'}, {'id': 2, 'name': 'dragoon', 'title': '千魂·狩猎者', 'open': True, 'class': 'GF.demonic_lancer.dragoon'}, {'id': 3, 'name': 'impaler', 'title': '千魂·暗枪士', 'open': True, 'class': 'GF.demonic_lancer.impaler'}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, { 'id': 13, 'name': 'gunblader', 'title': '枪剑士', 'children': [ {'id': 0, 'name': 'hitman', 'title': '苍暮·暗刃', 'open': True, 'class': 'GF.gunblader.hitman'}, {'id': 1, 'name': 'agent', 'title': '苍暮·特工', 'open': True, 'class': 'GF.gunblader.agent'}, {'id': 2, 'name': 'trouble_shooter', 'title': '苍暮·战线佣兵', 'open': True, 'class': 'GF.gunblader.trouble_shooter'}, {'id': 3, 'name': 'specialist', 'title': '苍暮·源能专家', 'open': True, 'class': 'GF.gunblader.specialist'}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, { 'id': 14, 'name': 'archer', 'title': '弓箭手', 'children': [ {'id': 0, 'name': 'muse', 'title': '聆风·缪斯', 'open': False}, {'id': 1, 'name': 'traveler', 'title': '聆风·旅人', 'open': True, 'class': 'GF.archer.traveler'}, {'id': 2, 'name': 'hunter', 'title': '聆风·猎人', 'open': True, 'class': 'GF.archer.hunter'}, {'id': 3, 'name': 'vigilante', 'title': '聆风·妖护使', 'open': True, 'class': 'GF.archer.vigilante'}, {'id': 4, 'name': 'chimera', 'title': '聆风·奇美拉', 'open': True, 'class': 'GF.archer.chimera'}, ], }, { 'id': 16, 'name': 'imperialknight', 'title': '帝国骑士', 'children': [ {'id': 0, 'name': 'breaker', 'title': '破浪者', 'open': False}, {'id': 1, 'name': 'empty', 'title': ''}, {'id': 2, 'name': 'empty', 'title': ''}, {'id': 3, 'name': 'empty', 'title': ''}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, { 'id': 15, 'name': 'extra', 'title': '外传', 'children': [ {'id': 0, 'name': 'creator', 'title': '知源·缔造者', 'open': False}, {'id': 1, 'name': 'dark_knight', 'title': '极诣·黑暗武士', 'open': False}, {'id': 2, 'name': 'empty', 'title': ''}, {'id': 3, 'name': 'empty', 'title': ''}, {'id': 4, 'name': 'empty', 'title': ''}, ], }, ] def get_adv_list(): temp = deepcopy(adv) for parent in temp: parent_id = f'{parent["id"]:02}' for child in parent['children']: child_id = f'{child.get("id", 0):02}' if 'options' in child: for idx, option in enumerate(child['options']): option['value'] = base64.b64encode(f'{parent_id}{child_id}{idx:02}'.encode()).decode() option.pop('class', None) else: child['value'] = base64.b64encode(f'{parent_id}{child_id}00'.encode()).decode() child.pop('class', None) return temp def get_adv_info(value): value = base64.b64decode(value).decode() parent_id, child_id, option_id = map(int, (value[:2], value[2:4], value[4:6])) parent = next((p for p in adv if p['id'] == parent_id), None) if not parent: return None child = next((c for c in parent['children'] if c.get('id', 0) == child_id), None) if not child: return None if 'options' in child: return next((o for o in child['options'] if o.get('id', 0) == option_id), None) else: return child if option_id == 0 else None