Reorganize repository into pc web shared monorepo

Separate the local recognition, web publishing, and shared data paths while preserving direct script execution and existing site content.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
voson
2026-07-29 14:29:08 +08:00
co-authored by Cursor
parent 96a9312194
commit 9c5aa5b610
280 changed files with 1451 additions and 450 deletions
+832
View File
@@ -0,0 +1,832 @@
{
"meta": {
"note": "Manual add/remove tags merged after auto-tagging in fetch_hero_abilities.py. Tags mean the ability applies the effect (not that it is dispellable)."
},
"abilities": {
"abaddon_aphotic_shield": {
"add": [
"basic_dispel"
],
"remove": []
},
"abaddon_borrowed_time": {
"add": [
"strong_dispel"
],
"remove": []
},
"legion_commander_press_the_attack": {
"add": [
"basic_dispel"
],
"remove": []
},
"oracle_false_promise": {
"add": [
"strong_dispel"
],
"remove": []
},
"oracle_fates_edict": {
"add": [
"disarm"
],
"remove": []
},
"keeper_of_the_light_chakra_magic": {
"add": [
"basic_dispel"
],
"remove": []
},
"shadow_demon_demonic_purge": {
"add": [
"basic_dispel"
],
"remove": []
},
"shadow_demon_demonic_cleanse": {
"add": [
"strong_dispel"
],
"remove": []
},
"brewmaster_storm_dispel_magic": {
"add": [
"basic_dispel"
],
"remove": []
},
"tidehunter_kraken_shell": {
"add": [
"strong_dispel"
],
"remove": []
},
"enchantress_enchant": {
"add": [
"basic_dispel"
],
"remove": []
},
"phoenix_supernova": {
"add": [
"strong_dispel"
],
"remove": []
},
"viper_nethertoxin": {
"add": [
"break"
],
"remove": []
},
"huskar_inner_fire": {
"add": [
"disarm"
],
"remove": []
},
"troll_warlord_whirling_axes_melee": {
"add": [
"disarm"
],
"remove": []
},
"doom_bringer_doom": {
"add": [
"mute",
"break"
],
"remove": [
"silence"
]
},
"lion_voodoo": {
"add": [
"hex"
],
"remove": [
"silence",
"disarm",
"mute"
]
},
"shadow_shaman_voodoo": {
"add": [
"hex"
],
"remove": [
"silence",
"disarm",
"mute"
]
},
"omniknight_purification": {
"add": [],
"remove": [
"basic_dispel"
]
},
"silencer_glaives_of_wisdom": {
"add": [],
"remove": [
"silence"
]
},
"silencer_brain_drain": {
"add": [],
"remove": [
"silence"
]
},
"silencer_curse_of_the_silent": {
"add": [],
"remove": [
"silence"
]
},
"spirit_breaker_bull_rush": {
"add": [],
"remove": [
"stun"
]
},
"lone_druid_spirit_bear": {
"add": [],
"remove": [
"root"
]
},
"ringmaster_the_box": {
"add": [],
"remove": [
"disarm",
"silence",
"mute"
]
},
"largo_amphibian_rhapsody": {
"add": [],
"remove": [
"disarm"
]
},
"kez_shodo_sai": {
"add": [],
"remove": [
"disarm"
]
},
"bane_enfeeble": {
"add": [],
"remove": [
"silence"
]
},
"axe_culling_blade": {
"add": [],
"remove": [
"basic_dispel",
"strong_dispel"
]
},
"chen_hand_of_god": {
"add": [],
"remove": [
"basic_dispel",
"strong_dispel"
]
},
"omniknight_martyr": {
"add": [],
"remove": [
"basic_dispel",
"strong_dispel"
]
},
"winter_wyvern_cold_embrace": {
"add": [],
"remove": [
"basic_dispel"
]
},
"disruptor_glimpse": {
"add": [],
"remove": [
"basic_dispel"
]
},
"legion_commander_duel": {
"add": [
"taunt"
],
"remove": [
"stun",
"disarm"
]
},
"axe_berserkers_call": {
"add": [
"taunt"
],
"remove": [
"stun"
]
},
"doom_bringer_infernal_blade": {
"add": [],
"remove": [
"stun"
]
},
"elder_titan_earth_splitter": {
"add": [],
"remove": [
"stun"
]
},
"ursa_earthshock": {
"add": [],
"remove": [
"stun"
]
},
"brewmaster_thunder_clap": {
"add": [],
"remove": [
"stun"
]
},
"batrider_sticky_napalm": {
"add": [],
"remove": [
"root"
]
},
"templar_assassin_trap": {
"add": [],
"remove": [
"root"
]
},
"enchantress_untouchable": {
"add": [],
"remove": [
"disarm",
"blind"
]
},
"keeper_of_the_light_blinding_light": {
"add": [
"blind"
],
"remove": [
"disarm"
]
},
"muerta_pierce_the_veil": {
"add": [],
"remove": [
"disarm",
"ethereal"
]
},
"mars_gods_rebuke": {
"add": [],
"remove": [
"disarm"
]
},
"pangolier_shield_crash": {
"add": [],
"remove": [
"disarm"
]
},
"bristleback_bristleback": {
"add": [],
"remove": [
"disarm"
]
},
"centaur_hoof_stomp": {
"add": [
"stun"
],
"remove": [
"disarm"
]
},
"queenofpain_blink": {
"add": [],
"remove": [
"silence"
]
},
"dazzle_nothl_projection": {
"add": [],
"remove": [
"hex",
"ethereal"
]
},
"naga_siren_ensnare": {
"add": [
"root"
],
"remove": [
"break"
]
},
"sven_storm_bolt": {
"add": [
"stun"
],
"remove": [
"basic_dispel"
]
},
"juggernaut_omni_slash": {
"add": [],
"remove": [
"basic_dispel",
"strong_dispel"
]
},
"juggernaut_blade_fury": {
"add": [],
"remove": [
"basic_dispel",
"strong_dispel"
]
},
"bounty_hunter_wind_walk": {
"add": [
"invis"
],
"remove": []
},
"riki_blink_strike": {
"add": [],
"remove": [
"invis"
]
},
"clinkz_wind_walk": {
"add": [
"invis"
],
"remove": []
},
"clinkz_skeleton_walk": {
"add": [
"invis"
],
"remove": []
},
"weaver_shukuchi": {
"add": [
"invis"
],
"remove": []
},
"mirana_invis": {
"add": [
"invis"
],
"remove": []
},
"invoker_ghost_walk": {
"add": [
"invis"
],
"remove": []
},
"nyx_assassin_vendetta": {
"add": [
"invis"
],
"remove": []
},
"sandking_sand_storm": {
"add": [
"invis"
],
"remove": []
},
"templar_assassin_meld": {
"add": [
"invis"
],
"remove": []
},
"treant_natures_guise": {
"add": [
"invis"
],
"remove": []
},
"windrunner_windrun": {
"add": [],
"remove": [
"invis"
]
},
"sniper_assassinate": {
"add": [],
"remove": [
"invis"
]
},
"drow_ranger_wave_of_silence": {
"add": [
"silence"
],
"remove": [
"invis"
]
},
"phantom_lancer_juxtapose": {
"add": [],
"remove": [
"invis"
]
},
"slardar_amplify_damage": {
"add": [],
"remove": [
"basic_dispel",
"strong_dispel",
"invis"
]
},
"riki_backstab": {
"add": [],
"remove": [
"invis"
]
},
"riki_smoke_screen": {
"add": [
"silence"
],
"remove": [
"invis"
]
},
"clinkz_strafe": {
"add": [],
"remove": [
"invis"
]
},
"bounty_hunter_track": {
"add": [],
"remove": [
"invis"
]
},
"lycan_summon_wolves": {
"add": [],
"remove": [
"invis"
]
},
"treant_overgrowth": {
"add": [
"root"
],
"remove": [
"invis"
]
},
"nyx_assassin_spiked_carapace": {
"add": [],
"remove": [
"invis"
]
},
"nyx_assassin_burrow": {
"add": [],
"remove": [
"invis"
]
},
"arc_warden_tempest_double": {
"add": [],
"remove": [
"invis"
]
},
"monkey_king_wukongs_command": {
"add": [],
"remove": [
"invis"
]
},
"hoodwink_decoy": {
"add": [],
"remove": [
"invis"
]
},
"ringmaster_spotlight": {
"add": [],
"remove": [
"invis"
]
},
"kez_ravens_veil": {
"add": [
"invis"
],
"remove": []
},
"slark_shadow_dance": {
"add": [
"invis"
],
"remove": []
},
"visage_silent_as_the_grave": {
"add": [
"invis"
],
"remove": []
},
"bounty_hunter_wind_walk_ally": {
"add": [
"invis"
],
"remove": []
},
"bane_nightmare": {
"add": [
"sleep"
],
"remove": []
},
"naga_siren_song_of_the_siren": {
"add": [
"sleep"
],
"remove": []
},
"dark_willow_terrorize": {
"add": [
"fear"
],
"remove": []
},
"lone_druid_savage_roar": {
"add": [
"fear"
],
"remove": [
"stun"
]
},
"nevermore_requiem": {
"add": [
"fear"
],
"remove": []
},
"brewmaster_cinder_brew": {
"add": [
"blind"
],
"remove": []
},
"brewmaster_drunken_haze": {
"add": [
"blind"
],
"remove": []
},
"tinker_laser": {
"add": [
"blind"
],
"remove": []
},
"troll_warlord_whirling_axes_ranged": {
"add": [
"blind"
],
"remove": [
"disarm"
]
},
"disruptor_kinetic_field": {
"add": [
"leash"
],
"remove": []
},
"grimstroke_soul_chain": {
"add": [
"leash"
],
"remove": []
},
"puck_dream_coil": {
"add": [
"leash",
"stun"
],
"remove": []
},
"mars_arena_of_blood": {
"add": [
"leash"
],
"remove": []
},
"pugna_decrepify": {
"add": [
"ethereal"
],
"remove": []
},
"necrolyte_ghost_shroud": {
"add": [
"ethereal"
],
"remove": []
},
"obsidian_destroyer_astral_imprisonment": {
"add": [
"cyclone"
],
"remove": []
},
"invoker_tornado": {
"add": [
"cyclone"
],
"remove": []
},
"brewmaster_storm_cyclone": {
"add": [
"cyclone"
],
"remove": []
},
"shadow_demon_disruption": {
"add": [
"cyclone"
],
"remove": []
},
"bane_fiends_grip": {
"add": [
"stun"
],
"remove": [
"sleep"
]
},
"bane_ichor_of_nyctasha": {
"add": [],
"remove": [
"fear"
]
},
"death_prophet_spirit_siphon": {
"add": [],
"remove": [
"fear"
]
},
"muerta_dead_shot": {
"add": [],
"remove": [
"fear"
]
},
"night_stalker_crippling_fear": {
"add": [
"silence"
],
"remove": [
"fear"
]
},
"ringmaster_tame_the_beasts": {
"add": [],
"remove": [
"fear"
]
},
"spectre_haunt": {
"add": [],
"remove": [
"fear"
]
},
"meepo_earthbind": {
"add": [
"root"
],
"remove": [
"leash"
]
},
"meepo_petrify": {
"add": [],
"remove": [
"root"
]
},
"meepo_megameepo": {
"add": [],
"remove": [
"leash"
]
},
"nevermore_necromastery": {
"add": [],
"remove": [
"leash"
]
},
"windrunner_shackleshot": {
"add": [
"stun"
],
"remove": [
"leash"
]
},
"leshrac_greater_lightning_storm": {
"add": [],
"remove": [
"ethereal"
]
},
"muerta_spectral_slug": {
"add": [],
"remove": [
"ethereal"
]
},
"void_spirit_aether_remnant": {
"add": [
"stun"
],
"remove": [
"ethereal"
]
},
"void_spirit_astral_step": {
"add": [],
"remove": [
"ethereal"
]
},
"void_spirit_dissimilate": {
"add": [],
"remove": [
"ethereal"
]
},
"void_spirit_intrinsic_edge": {
"add": [],
"remove": [
"ethereal"
]
},
"void_spirit_resonant_pulse": {
"add": [],
"remove": [
"ethereal"
]
},
"marci_special_delivery": {
"add": [],
"remove": [
"cyclone"
]
},
"slark_pounce": {
"add": [
"leash"
],
"remove": []
},
"tidehunter_dead_in_the_water": {
"add": [
"leash"
],
"remove": []
},
"terrorblade_terror_wave": {
"add": [
"fear"
],
"remove": []
}
}
}
File diff suppressed because it is too large Load Diff
+96
View File
@@ -0,0 +1,96 @@
{
"meta": {
"note": "Manual hero→item fears merged in item_fears.py (add/remove). Use for iconic counters auto-rules miss."
},
"heroes": {
"juggernaut": {
"add": [
{ "item": "lotus_orb", "reason": "反射无敌斩/迅捷斩", "tags": ["spell_reflect"] },
{ "item": "ghost", "reason": "虚无免疫无敌斩的物理攻击", "tags": ["ethereal"] },
{ "item": "abyssal_blade", "reason": "打断输出与无敌斩", "tags": [] },
{ "item": "butterfly", "reason": "闪避克制普攻与斩击", "tags": [] }
],
"remove": ["sphere"]
},
"phantom_assassin": {
"add": [
{ "item": "monkey_king_bar", "reason": "无视模糊闪避", "tags": ["true_strike"] },
{ "item": "ghost", "reason": "虚无规避幻影刺客的物理爆发", "tags": ["ethereal"] }
],
"remove": []
},
"lina": {
"add": [
{ "item": "lotus_orb", "reason": "反射神灭斩", "tags": ["spell_reflect"] },
{ "item": "black_king_bar", "reason": "魔免克制爆发", "tags": ["magic_immune"] },
{ "item": "sphere", "reason": "格挡神灭斩", "tags": ["spell_block"] }
],
"remove": []
},
"lion": {
"add": [
{ "item": "lotus_orb", "reason": "反射死亡一指", "tags": ["spell_reflect"] }
],
"remove": []
},
"necrolyte": {
"add": [
{ "item": "lotus_orb", "reason": "反射死神镰刀", "tags": ["spell_reflect"] }
],
"remove": []
},
"axe": {
"add": [
{ "item": "lotus_orb", "reason": "反射淘汰之刃", "tags": ["spell_reflect"] },
{ "item": "eternal_shroud", "reason": "抵消旋转魔法伤害", "tags": [] }
],
"remove": []
},
"legion_commander": {
"add": [
{ "item": "lotus_orb", "reason": "反射决斗", "tags": ["spell_reflect"] },
{ "item": "ethereal_blade", "reason": "虚无无法被决斗普攻", "tags": [] },
{ "item": "ghost", "reason": "虚无无法被决斗普攻", "tags": [] }
],
"remove": []
},
"bane": {
"add": [
{ "item": "lotus_orb", "reason": "反射虚弱/噩梦/蚀脑", "tags": ["spell_reflect"] }
],
"remove": []
},
"doom_bringer": {
"add": [
{ "item": "lotus_orb", "reason": "反射末日", "tags": ["spell_reflect"] }
],
"remove": []
},
"puck": {
"add": [
{ "item": "orchid", "reason": "沉默限制技能逃生与反打", "tags": ["silence"] }
],
"remove": []
},
"weaver": {
"add": [
{ "item": "ghost", "reason": "虚无规避连击与普攻爆发", "tags": ["ethereal"] },
{ "item": "cyclone", "reason": "驱散缩地状态并限制逃生", "tags": ["basic_dispel", "cyclone"] }
],
"remove": []
},
"pangolier": {
"add": [
{ "item": "ghost", "reason": "虚无规避剑舞与普攻伤害", "tags": ["ethereal"] },
{ "item": "sheepstick", "reason": "妖术限制技能连段与逃生", "tags": ["hex"] }
],
"remove": []
},
"void_spirit": {
"add": [
{ "item": "sheepstick", "reason": "妖术限制技能连段与逃生", "tags": ["hex"] }
],
"remove": []
}
}
}
+138
View File
@@ -0,0 +1,138 @@
{
"_comment": "CN in-client order: Unicode code-point of name_loc within each attr.",
"str": [
"elder_titan",
"undying",
"shredder",
"omniknight",
"legion_commander",
"skeleton_king",
"phoenix",
"centaur",
"rattletrap",
"huskar",
"life_stealer",
"earth_spirit",
"abyssal_underlord",
"tiny",
"tusk",
"pudge",
"earthshaker",
"axe",
"slardar",
"sven",
"kunkka",
"night_stalker",
"largo",
"doom_bringer",
"treant",
"chaos_knight",
"tidehunter",
"alchemist",
"lycan",
"primal_beast",
"mars",
"dawnbreaker",
"spirit_breaker",
"bristleback",
"ogre_magi",
"dragon_knight"
],
"agi": [
"juggernaut",
"clinkz",
"viper",
"kez",
"riki",
"drow_ranger",
"morphling",
"templar_assassin",
"vengefulspirit",
"naga_siren",
"troll_warlord",
"phantom_assassin",
"phantom_lancer",
"spectre",
"nevermore",
"terrorblade",
"antimage",
"slark",
"hoodwink",
"ember_spirit",
"ursa",
"sniper",
"lone_druid",
"gyrocopter",
"mirana",
"meepo",
"weaver",
"medusa",
"broodmother",
"faceless_void",
"bloodseeker",
"bounty_hunter",
"razor",
"luna",
"monkey_king"
],
"int": [
"tinker",
"keeper_of_the_light",
"skywrath_mage",
"grimstroke",
"zuus",
"winter_wyvern",
"witch_doctor",
"lich",
"puck",
"pugna",
"disruptor",
"leshrac",
"rubick",
"shadow_demon",
"shadow_shaman",
"warlock",
"jakiro",
"obsidian_destroyer",
"crystal_maiden",
"silencer",
"muerta",
"queenofpain",
"necrolyte",
"ringmaster",
"invoker",
"oracle",
"lina",
"lion",
"ancient_apparition",
"dark_willow",
"chen",
"storm_spirit",
"enchantress",
"dark_seer"
],
"all": [
"abaddon",
"beastmaster",
"venomancer",
"nyx_assassin",
"arc_warden",
"techies",
"dazzle",
"death_prophet",
"sand_king",
"marci",
"snapfire",
"pangolier",
"bane",
"visage",
"furion",
"wisp",
"void_spirit",
"batrider",
"enigma",
"brewmaster",
"windrunner",
"magnataur"
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+313
View File
@@ -0,0 +1,313 @@
{
"meta": {
"note": "Manual add/remove tags merged after auto-tagging in fetch_items_meta.py. Prefer offensive mechanics for fear mapping."
},
"items": {
"diffusal_blade": {
"add": [
"basic_dispel",
"mana_burn"
],
"remove": [
"illusion_clear"
]
},
"disperser": {
"add": [
"basic_dispel",
"mana_burn"
],
"remove": [
"illusion_clear"
]
},
"nullifier": {
"add": [
"basic_dispel"
],
"remove": []
},
"cyclone": {
"add": [
"basic_dispel",
"cyclone"
],
"remove": []
},
"wind_waker": {
"add": [
"basic_dispel",
"cyclone"
],
"remove": []
},
"satanic": {
"add": [],
"remove": [
"basic_dispel"
]
},
"lotus_orb": {
"add": [
"spell_reflect"
],
"remove": [
"basic_dispel",
"mana_burn"
]
},
"guardian_greaves": {
"add": [],
"remove": [
"basic_dispel"
]
},
"manta": {
"add": [],
"remove": [
"basic_dispel",
"illusion_clear"
]
},
"black_king_bar": {
"add": [
"magic_immune"
],
"remove": [
"basic_dispel",
"strong_dispel"
]
},
"aeon_disk": {
"add": [],
"remove": [
"strong_dispel",
"basic_dispel"
]
},
"sphere": {
"add": [
"spell_block"
],
"remove": []
},
"monkey_king_bar": {
"add": [
"true_strike"
],
"remove": []
},
"silver_edge": {
"add": [
"break",
"invis_break",
"invis"
],
"remove": []
},
"invis_sword": {
"add": [
"invis"
],
"remove": []
},
"spirit_vessel": {
"add": [
"heal_reduce"
],
"remove": []
},
"bfury": {
"add": [
"illusion_clear"
],
"remove": []
},
"radiance": {
"add": [
"illusion_clear"
],
"remove": []
},
"maelstrom": {
"add": [
"illusion_clear"
],
"remove": [
"true_strike"
]
},
"mjollnir": {
"add": [
"illusion_clear"
],
"remove": [
"true_strike"
]
},
"gungir": {
"add": [
"root",
"illusion_clear"
],
"remove": []
},
"gem": {
"add": [
"invis_detect"
],
"remove": [
"invis"
]
},
"dust": {
"add": [
"invis_detect"
],
"remove": [
"invis"
]
},
"glimmer_cape": {
"add": [
"invis"
],
"remove": []
},
"desolator": {
"add": [
"armor_reduce"
],
"remove": []
},
"solar_crest": {
"add": [
"armor_reduce"
],
"remove": []
},
"orchid": {
"add": [
"silence"
],
"remove": [
"mana_burn"
]
},
"bloodthorn": {
"add": [
"silence",
"true_strike"
],
"remove": []
},
"sheepstick": {
"add": [
"hex"
],
"remove": [
"illusion_clear",
"silence",
"disarm",
"mute"
]
},
"abyssal_blade": {
"add": [
"stun"
],
"remove": []
},
"basher": {
"add": [
"stun"
],
"remove": []
},
"heavens_halberd": {
"add": [
"disarm"
],
"remove": []
},
"ethereal_blade": {
"add": [
"ethereal"
],
"remove": [
"disarm"
]
},
"rod_of_atos": {
"add": [
"root"
],
"remove": []
},
"mask_of_madness": {
"add": [],
"remove": [
"silence"
]
},
"necronomicon": {
"add": [
"invis_detect"
],
"remove": [
"basic_dispel",
"mana_burn",
"break",
"invis"
]
},
"necronomicon_2": {
"add": [
"invis_detect"
],
"remove": [
"basic_dispel",
"mana_burn",
"break",
"invis"
]
},
"necronomicon_3": {
"add": [
"invis_detect"
],
"remove": [
"basic_dispel",
"mana_burn",
"break",
"invis"
]
},
"witch_blade": {
"add": [],
"remove": [
"true_strike"
]
},
"devastator": {
"add": [
"armor_reduce"
],
"remove": [
"true_strike"
]
},
"essence_distiller": {
"add": [],
"remove": [
"invis_detect"
]
},
"ghost": {
"add": [
"ethereal"
],
"remove": []
}
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+32223
View File
File diff suppressed because it is too large Load Diff
+242
View File
@@ -0,0 +1,242 @@
{
"fetched_at": "2026-07-28T14:20:00+00:00",
"source": "manual+douyin+bilibili",
"platform_meta": {
"douyin": {
"label_zh": "抖音",
"icon": "ui-icon/platform_douyin.png"
},
"bilibili": {
"label_zh": "哔哩哔哩",
"icon": "ui-icon/platform_bilibili.png"
}
},
"streamers": [
{
"id": "xiaowang",
"platform": "douyin",
"live_url": "https://live.douyin.com/343871812758",
"profile_url": "https://v.douyin.com/MM3U-EpqI2E/",
"tagline": "天怒绝活哥",
"heroes": [
"skywrath_mage"
],
"nickname": "DOTA2小王",
"unique_id": "chenshiweidota",
"signature": "有事请私信,最高东南亚前100,上车玩加同名绿泡泡抖音号",
"following_count": 87,
"follower_count": 14000,
"total_favorited": 591,
"avatar": "streamer_avatars/xiaowang.jpg",
"video": "streamer_videos/xiaowang.mp4",
"video_title": "7000分单排天怒如何乱杀",
"profile_fetched_at": "2026-07-28T08:30:00+00:00",
"is_live": true,
"live_probed_at": "2026-07-29T05:14:10.990062+00:00"
},
{
"id": "jianxin",
"platform": "douyin",
"live_url": "https://live.douyin.com/892762012034",
"profile_url": "https://v.douyin.com/FcUd6qHXYwc/",
"heroes": [
"juggernaut"
],
"nickname": "Dota2剑心犹在",
"unique_id": "33552682609",
"signature": "万分选手,前国服第一,绝活剑圣。土木双灵根,先天打灰圣体。",
"following_count": 353,
"follower_count": 35000,
"total_favorited": 4255,
"avatar": "streamer_avatars/jianxin.jpg",
"video": "streamer_videos/jianxin.mp4",
"video_title": "落后四十人头的惊天大翻盘!剑心犹在!!",
"profile_fetched_at": "2026-07-28T10:10:00+00:00",
"is_live": true,
"live_probed_at": "2026-07-29T05:14:12.853946+00:00"
},
{
"id": "yaseguilai",
"platform": "douyin",
"profile_url": "https://v.douyin.com/gQDc0B9yPv4/",
"heroes": [
"slark"
],
"nickname": "亚瑟归来(Dota2",
"unique_id": "yaseguilai",
"signature": "dota2主播,万分小鱼王! 上车+v375874361",
"following_count": 1024,
"follower_count": 23000,
"total_favorited": 5302,
"avatar": "streamer_avatars/yaseguilai.jpg",
"video": "streamer_videos/yaseguilai.mp4",
"video_aspect": "1920/2317",
"video_fit": "cover",
"video_title": "狂战小鱼6连暴走",
"profile_fetched_at": "2026-07-28T10:12:00+00:00"
},
{
"id": "gudu",
"platform": "douyin",
"profile_url": "https://v.douyin.com/411MHPZgDeY/",
"heroes": [
"kez"
],
"nickname": "Dota2孤独",
"unique_id": "71129362227",
"signature": "和dota2结婚的小哥一枚 12点左右直播,最高东南亚200",
"following_count": 7,
"follower_count": 2147,
"total_favorited": 4016,
"avatar": "streamer_avatars/gudu.jpg",
"video": "streamer_videos/gudu.mp4",
"video_title": "场均杀20个,双倍了一晚上没输过的神秘中单出现在对面? 看来只有我来终结你的无解连胜了",
"profile_fetched_at": "2026-07-28T10:14:00+00:00"
},
{
"id": "yangfanqiguo",
"platform": "douyin",
"live_url": "https://live.douyin.com/546982489107",
"profile_url": "https://v.douyin.com/bodeOPLFFuo/",
"heroes": [
"riki"
],
"nickname": "Dota2杨帆起锅",
"unique_id": "26535099603",
"signature": "完美官方主播 每天早9点到12点,晚6点半到10点",
"following_count": 14,
"follower_count": 8259,
"total_favorited": 270,
"avatar": "streamer_avatars/yangfanqiguo.jpg",
"video": "streamer_videos/yangfanqiguo.mp4",
"video_title": "冠绝中单力丸对线保姆级思路",
"profile_fetched_at": "2026-07-28T10:16:00+00:00",
"is_live": false,
"live_probed_at": "2026-07-29T05:14:14.619514+00:00"
},
{
"id": "dadigua",
"platform": "douyin",
"profile_url": "https://v.douyin.com/t1E-4M1xrJ4/",
"heroes": [
"axe"
],
"nickname": "DOTA2 大地瓜",
"unique_id": "189764720",
"signature": "6月10号播",
"following_count": 805,
"follower_count": 8006,
"total_favorited": 8015,
"avatar": "streamer_avatars/dadigua.jpg",
"video": "streamer_videos/dadigua.mp4",
"video_aspect": "1080/1440",
"video_fit": "cover",
"video_title": "电风扇斧王10秒肉山",
"profile_fetched_at": "2026-07-28T10:28:00+00:00"
},
{
"id": "dota25830",
"platform": "douyin",
"live_url": "https://live.douyin.com/336796244386",
"profile_url": "https://v.douyin.com/Bk6PZIs7kCE/",
"heroes": [
"lion"
],
"nickname": "5830 Dota2",
"unique_id": "583093455jj",
"signature": "dota2 国服第一lion 上牢车:dota258",
"following_count": 172,
"follower_count": 8466,
"total_favorited": 7074,
"avatar": "streamer_avatars/dota25830.jpg",
"video": "streamer_videos/dota25830.mp4",
"video_title": "Lion亡养成班,中单lion新手教学",
"profile_fetched_at": "2026-07-28T10:30:00+00:00",
"is_live": true,
"live_probed_at": "2026-07-29T05:14:16.578632+00:00"
},
{
"id": "mayi",
"platform": "douyin",
"profile_url": "https://v.douyin.com/9KwWjZPjB3U/",
"heroes": [
"weaver"
],
"nickname": "橙子dota2",
"unique_id": "72388849434",
"signature": "泡泡 : chengzidota (不只是带你赢,更是教会你赢)",
"following_count": 1424,
"follower_count": 2049,
"total_favorited": 300,
"avatar": "streamer_avatars/mayi.jpg",
"video": "streamer_videos/mayi.mp4",
"video_title": "蚂蚁暴走",
"profile_fetched_at": "2026-07-28T10:50:00+00:00"
},
{
"id": "huomao",
"platform": "douyin",
"live_url": "https://live.douyin.com/401878837924",
"profile_url": "https://v.douyin.com/GG79CCGREhc/",
"heroes": [
"ember_spirit"
],
"nickname": "dota2火影猫",
"unique_id": "44772013956",
"signature": "打号、上车、陪后台踢踢",
"following_count": 188,
"follower_count": 1781,
"total_favorited": 524,
"avatar": "streamer_avatars/huomao.jpg",
"video": "streamer_videos/huomao.mp4",
"video_title": "7500单排局火猫如何应对哈斯卡",
"profile_fetched_at": "2026-07-28T10:52:00+00:00",
"is_live": true,
"live_probed_at": "2026-07-29T05:14:18.605968+00:00"
},
{
"id": "gugong",
"platform": "douyin",
"live_url": "https://live.douyin.com/517090873115",
"profile_url": "https://v.douyin.com/T0eNOgDLB1g/",
"heroes": [
"clinkz"
],
"nickname": "爪爪熊想遇见樱岛麻衣",
"unique_id": "21811462417",
"signature": "dota2天梯最高9500分",
"following_count": 30,
"follower_count": 1499,
"total_favorited": 637,
"avatar": "streamer_avatars/gugong.jpg",
"video": "streamer_videos/gugong.mp4",
"video_title": "小骷髅后期教科书,大吹风魅力时刻",
"profile_fetched_at": "2026-07-28T10:55:00+00:00",
"is_live": false,
"live_probed_at": "2026-07-29T05:14:20.319003+00:00"
},
{
"id": "shawang",
"platform": "bilibili",
"live_url": "https://live.bilibili.com/1865937232",
"profile_url": "https://space.bilibili.com/1439688338",
"tagline": "三号位 · 天梯8500分",
"heroes": [
"doom_bringer",
"axe",
"sand_king",
"spirit_breaker"
],
"nickname": "沙王",
"unique_id": "1439688338",
"signature": "主播擅长三号位,天梯8500分。今年36岁,20年刀龄,真三dota,dota2 四泰斗末日斧王沙王白牛 直播时间 10.00-18.00",
"following_count": 231,
"follower_count": 7081,
"avatar": "streamer_avatars/shawang.jpg",
"video": "streamer_videos/shawang.mp4",
"video_title": "Dota2沙王直播录像",
"is_live": true,
"live_probed_at": "2026-07-29T05:14:20.981087+00:00"
}
]
}
+8
View File
@@ -0,0 +1,8 @@
{
"meta": {
"note": "Manual name_loc overrides for talents Valve omits bonus data for (auto-resolves to '?'). Applied in fetch_hero_abilities.py talent_rows when a talent still shows '?' after bonus lookup. Value is the full final name_loc string."
},
"talents": {
"special_bonus_unique_naga_siren_reel_in_speed": "+125 捕捞速度"
}
}