Initial commit: 上分帝(Climperor)

从 dota2-draft-vision 迁出并定名,作为天梯选将识别项目起点。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
voson
2026-07-26 11:47:39 +08:00
co-authored by Cursor
commit f32d24b8f8
211 changed files with 8450 additions and 0 deletions
+435
View File
@@ -0,0 +1,435 @@
{
"radiant": [
{
"slot": 1,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.598,
"margin": 0.296,
"top3": [
[
"drow_ranger",
0.598
],
[
"treant",
0.302
],
[
"kez",
0.237
]
]
},
{
"slot": 2,
"hero": "warlock",
"raw_best": "warlock",
"score": 0.676,
"margin": 0.367,
"top3": [
[
"warlock",
0.676
],
[
"treant",
0.309
],
[
"monkey_king",
0.221
]
]
},
{
"slot": 3,
"hero": "viper",
"raw_best": "viper",
"score": 0.651,
"margin": 0.256,
"top3": [
[
"viper",
0.651
],
[
"faceless_void",
0.396
],
[
"lycan",
0.317
]
]
},
{
"slot": 4,
"hero": null,
"raw_best": "earthshaker",
"score": 0.434,
"margin": 0.128,
"top3": [
[
"earthshaker",
0.434
],
[
"legion_commander",
0.306
],
[
"bounty_hunter",
0.297
]
]
},
{
"slot": 5,
"hero": null,
"raw_best": "vengefulspirit",
"score": 0.327,
"margin": 0.052,
"top3": [
[
"vengefulspirit",
0.327
],
[
"legion_commander",
0.275
],
[
"bounty_hunter",
0.266
]
]
}
],
"dire": [
{
"slot": 6,
"hero": "lich",
"raw_best": "lich",
"score": 0.603,
"margin": 0.393,
"top3": [
[
"lich",
0.603
],
[
"phantom_lancer",
0.21
],
[
"monkey_king",
0.197
]
]
},
{
"slot": 7,
"hero": "zuus",
"raw_best": "zuus",
"score": 0.461,
"margin": 0.231,
"top3": [
[
"zuus",
0.461
],
[
"abyssal_underlord",
0.23
],
[
"witch_doctor",
0.206
]
]
},
{
"slot": 8,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.691,
"margin": 0.247,
"top3": [
[
"skeleton_king",
0.691
],
[
"wisp",
0.445
],
[
"invoker",
0.396
]
]
},
{
"slot": 9,
"hero": "juggernaut",
"raw_best": "juggernaut",
"score": 0.67,
"margin": 0.201,
"top3": [
[
"juggernaut",
0.67
],
[
"wisp",
0.469
],
[
"ogre_magi",
0.379
]
]
},
{
"slot": 10,
"hero": "lion",
"raw_best": "lion",
"score": 0.509,
"margin": 0.194,
"top3": [
[
"lion",
0.509
],
[
"ogre_magi",
0.315
],
[
"juggernaut",
0.275
]
]
}
],
"recognized": 8,
"library_size": 127,
"elapsed_ms": 358,
"match_id": "0",
"trigger_state": "DOTA_GAMERULES_STATE_STRATEGY_TIME",
"captured_at": "2026-07-25 14:37:42",
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_143742.png",
"slots": [
{
"slot": 1,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.598,
"margin": 0.296,
"top3": [
[
"drow_ranger",
0.598
],
[
"treant",
0.302
],
[
"kez",
0.237
]
]
},
{
"slot": 2,
"hero": "warlock",
"raw_best": "warlock",
"score": 0.676,
"margin": 0.367,
"top3": [
[
"warlock",
0.676
],
[
"treant",
0.309
],
[
"monkey_king",
0.221
]
]
},
{
"slot": 3,
"hero": "viper",
"raw_best": "viper",
"score": 0.651,
"margin": 0.256,
"top3": [
[
"viper",
0.651
],
[
"faceless_void",
0.396
],
[
"lycan",
0.317
]
]
},
{
"slot": 4,
"hero": null,
"raw_best": "earthshaker",
"score": 0.434,
"margin": 0.128,
"top3": [
[
"earthshaker",
0.434
],
[
"legion_commander",
0.306
],
[
"bounty_hunter",
0.297
]
]
},
{
"slot": 5,
"hero": null,
"raw_best": "vengefulspirit",
"score": 0.327,
"margin": 0.052,
"top3": [
[
"vengefulspirit",
0.327
],
[
"legion_commander",
0.275
],
[
"bounty_hunter",
0.266
]
]
},
{
"slot": 6,
"hero": "lich",
"raw_best": "lich",
"score": 0.603,
"margin": 0.393,
"top3": [
[
"lich",
0.603
],
[
"phantom_lancer",
0.21
],
[
"monkey_king",
0.197
]
]
},
{
"slot": 7,
"hero": "zuus",
"raw_best": "zuus",
"score": 0.461,
"margin": 0.231,
"top3": [
[
"zuus",
0.461
],
[
"abyssal_underlord",
0.23
],
[
"witch_doctor",
0.206
]
]
},
{
"slot": 8,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.691,
"margin": 0.247,
"top3": [
[
"skeleton_king",
0.691
],
[
"wisp",
0.445
],
[
"invoker",
0.396
]
]
},
{
"slot": 9,
"hero": "juggernaut",
"raw_best": "juggernaut",
"score": 0.67,
"margin": 0.201,
"top3": [
[
"juggernaut",
0.67
],
[
"wisp",
0.469
],
[
"ogre_magi",
0.379
]
]
},
{
"slot": 10,
"hero": "lion",
"raw_best": "lion",
"score": 0.509,
"margin": 0.194,
"top3": [
[
"lion",
0.509
],
[
"ogre_magi",
0.315
],
[
"juggernaut",
0.275
]
]
}
]
}
+435
View File
@@ -0,0 +1,435 @@
{
"radiant": [
{
"slot": 1,
"hero": "crystal_maiden",
"raw_best": "crystal_maiden",
"score": 0.454,
"margin": 0.222,
"top3": [
[
"crystal_maiden",
0.454
],
[
"naga_siren",
0.232
],
[
"visage",
0.206
]
]
},
{
"slot": 2,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 0.637,
"margin": 0.277,
"top3": [
[
"witch_doctor",
0.637
],
[
"abyssal_underlord",
0.361
],
[
"invoker",
0.298
]
]
},
{
"slot": 3,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.688,
"margin": 0.255,
"top3": [
[
"skeleton_king",
0.688
],
[
"wisp",
0.433
],
[
"invoker",
0.401
]
]
},
{
"slot": 4,
"hero": "sniper",
"raw_best": "sniper",
"score": 0.652,
"margin": 0.523,
"top3": [
[
"sniper",
0.652
],
[
"primal_beast",
0.129
],
[
"naga_siren",
0.127
]
]
},
{
"slot": 5,
"hero": "sven",
"raw_best": "sven",
"score": 0.693,
"margin": 0.356,
"top3": [
[
"sven",
0.693
],
[
"furion",
0.337
],
[
"ringmaster",
0.324
]
]
}
],
"dire": [
{
"slot": 6,
"hero": null,
"raw_best": "earthshaker",
"score": 0.434,
"margin": 0.128,
"top3": [
[
"earthshaker",
0.434
],
[
"legion_commander",
0.306
],
[
"bounty_hunter",
0.297
]
]
},
{
"slot": 7,
"hero": null,
"raw_best": "necrolyte",
"score": 0.412,
"margin": 0.294,
"top3": [
[
"necrolyte",
0.412
],
[
"omniknight",
0.118
],
[
"alchemist",
0.111
]
]
},
{
"slot": 8,
"hero": "warlock",
"raw_best": "warlock",
"score": 0.711,
"margin": 0.413,
"top3": [
[
"warlock",
0.711
],
[
"treant",
0.297
],
[
"bristleback",
0.241
]
]
},
{
"slot": 9,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.657,
"margin": 0.286,
"top3": [
[
"drow_ranger",
0.657
],
[
"wisp",
0.372
],
[
"treant",
0.273
]
]
},
{
"slot": 10,
"hero": "lich",
"raw_best": "lich",
"score": 0.519,
"margin": 0.336,
"top3": [
[
"lich",
0.519
],
[
"wisp",
0.183
],
[
"nyx_assassin",
0.16
]
]
}
],
"recognized": 8,
"library_size": 127,
"elapsed_ms": 362,
"match_id": "0",
"trigger_state": "DOTA_GAMERULES_STATE_STRATEGY_TIME",
"captured_at": "2026-07-25 14:41:31",
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_144131.png",
"slots": [
{
"slot": 1,
"hero": "crystal_maiden",
"raw_best": "crystal_maiden",
"score": 0.454,
"margin": 0.222,
"top3": [
[
"crystal_maiden",
0.454
],
[
"naga_siren",
0.232
],
[
"visage",
0.206
]
]
},
{
"slot": 2,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 0.637,
"margin": 0.277,
"top3": [
[
"witch_doctor",
0.637
],
[
"abyssal_underlord",
0.361
],
[
"invoker",
0.298
]
]
},
{
"slot": 3,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.688,
"margin": 0.255,
"top3": [
[
"skeleton_king",
0.688
],
[
"wisp",
0.433
],
[
"invoker",
0.401
]
]
},
{
"slot": 4,
"hero": "sniper",
"raw_best": "sniper",
"score": 0.652,
"margin": 0.523,
"top3": [
[
"sniper",
0.652
],
[
"primal_beast",
0.129
],
[
"naga_siren",
0.127
]
]
},
{
"slot": 5,
"hero": "sven",
"raw_best": "sven",
"score": 0.693,
"margin": 0.356,
"top3": [
[
"sven",
0.693
],
[
"furion",
0.337
],
[
"ringmaster",
0.324
]
]
},
{
"slot": 6,
"hero": null,
"raw_best": "earthshaker",
"score": 0.434,
"margin": 0.128,
"top3": [
[
"earthshaker",
0.434
],
[
"legion_commander",
0.306
],
[
"bounty_hunter",
0.297
]
]
},
{
"slot": 7,
"hero": null,
"raw_best": "necrolyte",
"score": 0.412,
"margin": 0.294,
"top3": [
[
"necrolyte",
0.412
],
[
"omniknight",
0.118
],
[
"alchemist",
0.111
]
]
},
{
"slot": 8,
"hero": "warlock",
"raw_best": "warlock",
"score": 0.711,
"margin": 0.413,
"top3": [
[
"warlock",
0.711
],
[
"treant",
0.297
],
[
"bristleback",
0.241
]
]
},
{
"slot": 9,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.657,
"margin": 0.286,
"top3": [
[
"drow_ranger",
0.657
],
[
"wisp",
0.372
],
[
"treant",
0.273
]
]
},
{
"slot": 10,
"hero": "lich",
"raw_best": "lich",
"score": 0.519,
"margin": 0.336,
"top3": [
[
"lich",
0.519
],
[
"wisp",
0.183
],
[
"nyx_assassin",
0.16
]
]
}
]
}
+435
View File
@@ -0,0 +1,435 @@
{
"radiant": [
{
"slot": 1,
"hero": null,
"raw_best": "elder_titan",
"score": 0.446,
"margin": 0.184,
"top3": [
[
"elder_titan",
0.446
],
[
"warlock",
0.262
],
[
"lion",
0.222
]
]
},
{
"slot": 2,
"hero": "sniper",
"raw_best": "sniper",
"score": 1.0,
"margin": 0.871,
"top3": [
[
"sniper",
1.0
],
[
"primal_beast",
0.129
],
[
"naga_siren",
0.127
]
]
},
{
"slot": 3,
"hero": "lion",
"raw_best": "lion",
"score": 1.0,
"margin": 0.633,
"top3": [
[
"lion",
1.0
],
[
"juggernaut",
0.367
],
[
"skeleton_king",
0.34
]
]
},
{
"slot": 4,
"hero": "juggernaut",
"raw_best": "juggernaut",
"score": 1.0,
"margin": 0.516,
"top3": [
[
"juggernaut",
1.0
],
[
"wisp",
0.484
],
[
"ogre_magi",
0.395
]
]
},
{
"slot": 5,
"hero": null,
"raw_best": "vengefulspirit",
"score": 0.327,
"margin": 0.052,
"top3": [
[
"vengefulspirit",
0.327
],
[
"legion_commander",
0.275
],
[
"death_prophet",
0.266
]
]
}
],
"dire": [
{
"slot": 6,
"hero": "death_prophet",
"raw_best": "death_prophet",
"score": 0.951,
"margin": 0.551,
"top3": [
[
"death_prophet",
0.951
],
[
"ogre_magi",
0.4
],
[
"undying",
0.372
]
]
},
{
"slot": 7,
"hero": "tidehunter",
"raw_best": "tidehunter",
"score": 0.528,
"margin": 0.271,
"top3": [
[
"tidehunter",
0.528
],
[
"juggernaut",
0.257
],
[
"lich",
0.208
]
]
},
{
"slot": 8,
"hero": "lich",
"raw_best": "lich",
"score": 0.96,
"margin": 0.703,
"top3": [
[
"lich",
0.96
],
[
"warlock",
0.257
],
[
"skeleton_king",
0.201
]
]
},
{
"slot": 9,
"hero": "sven",
"raw_best": "sven",
"score": 0.912,
"margin": 0.576,
"top3": [
[
"sven",
0.912
],
[
"lion",
0.336
],
[
"furion",
0.324
]
]
},
{
"slot": 10,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 0.706,
"margin": 0.338,
"top3": [
[
"witch_doctor",
0.706
],
[
"abyssal_underlord",
0.368
],
[
"zuus",
0.298
]
]
}
],
"recognized": 8,
"library_size": 155,
"elapsed_ms": 447,
"match_id": "0",
"trigger_state": "DOTA_GAMERULES_STATE_STRATEGY_TIME",
"captured_at": "2026-07-25 14:51:36",
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_145136.png",
"slots": [
{
"slot": 1,
"hero": null,
"raw_best": "elder_titan",
"score": 0.446,
"margin": 0.184,
"top3": [
[
"elder_titan",
0.446
],
[
"warlock",
0.262
],
[
"lion",
0.222
]
]
},
{
"slot": 2,
"hero": "sniper",
"raw_best": "sniper",
"score": 1.0,
"margin": 0.871,
"top3": [
[
"sniper",
1.0
],
[
"primal_beast",
0.129
],
[
"naga_siren",
0.127
]
]
},
{
"slot": 3,
"hero": "lion",
"raw_best": "lion",
"score": 1.0,
"margin": 0.633,
"top3": [
[
"lion",
1.0
],
[
"juggernaut",
0.367
],
[
"skeleton_king",
0.34
]
]
},
{
"slot": 4,
"hero": "juggernaut",
"raw_best": "juggernaut",
"score": 1.0,
"margin": 0.516,
"top3": [
[
"juggernaut",
1.0
],
[
"wisp",
0.484
],
[
"ogre_magi",
0.395
]
]
},
{
"slot": 5,
"hero": null,
"raw_best": "vengefulspirit",
"score": 0.327,
"margin": 0.052,
"top3": [
[
"vengefulspirit",
0.327
],
[
"legion_commander",
0.275
],
[
"death_prophet",
0.266
]
]
},
{
"slot": 6,
"hero": "death_prophet",
"raw_best": "death_prophet",
"score": 0.951,
"margin": 0.551,
"top3": [
[
"death_prophet",
0.951
],
[
"ogre_magi",
0.4
],
[
"undying",
0.372
]
]
},
{
"slot": 7,
"hero": "tidehunter",
"raw_best": "tidehunter",
"score": 0.528,
"margin": 0.271,
"top3": [
[
"tidehunter",
0.528
],
[
"juggernaut",
0.257
],
[
"lich",
0.208
]
]
},
{
"slot": 8,
"hero": "lich",
"raw_best": "lich",
"score": 0.96,
"margin": 0.703,
"top3": [
[
"lich",
0.96
],
[
"warlock",
0.257
],
[
"skeleton_king",
0.201
]
]
},
{
"slot": 9,
"hero": "sven",
"raw_best": "sven",
"score": 0.912,
"margin": 0.576,
"top3": [
[
"sven",
0.912
],
[
"lion",
0.336
],
[
"furion",
0.324
]
]
},
{
"slot": 10,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 0.706,
"margin": 0.338,
"top3": [
[
"witch_doctor",
0.706
],
[
"abyssal_underlord",
0.368
],
[
"zuus",
0.298
]
]
}
]
}
+435
View File
@@ -0,0 +1,435 @@
{
"radiant": [
{
"slot": 1,
"hero": "undying",
"raw_best": "undying",
"score": 0.877,
"margin": 0.441,
"top3": [
[
"undying",
0.877
],
[
"death_prophet",
0.437
],
[
"faceless_void",
0.387
]
]
},
{
"slot": 2,
"hero": "death_prophet",
"raw_best": "death_prophet",
"score": 1.0,
"margin": 0.601,
"top3": [
[
"death_prophet",
1.0
],
[
"ogre_magi",
0.399
],
[
"undying",
0.382
]
]
},
{
"slot": 3,
"hero": "dragon_knight",
"raw_best": "dragon_knight",
"score": 0.917,
"margin": 0.629,
"top3": [
[
"dragon_knight",
0.917
],
[
"juggernaut",
0.289
],
[
"lion",
0.209
]
]
},
{
"slot": 4,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.955,
"margin": 0.583,
"top3": [
[
"drow_ranger",
0.955
],
[
"wisp",
0.372
],
[
"lycan",
0.316
]
]
},
{
"slot": 5,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 1.0,
"margin": 0.641,
"top3": [
[
"witch_doctor",
1.0
],
[
"abyssal_underlord",
0.359
],
[
"invoker",
0.321
]
]
}
],
"dire": [
{
"slot": 6,
"hero": "vengefulspirit",
"raw_best": "vengefulspirit",
"score": 1.0,
"margin": 0.728,
"top3": [
[
"vengefulspirit",
1.0
],
[
"legion_commander",
0.272
],
[
"death_prophet",
0.269
]
]
},
{
"slot": 7,
"hero": "warlock",
"raw_best": "warlock",
"score": 0.98,
"margin": 0.704,
"top3": [
[
"warlock",
0.98
],
[
"treant",
0.276
],
[
"bristleback",
0.263
]
]
},
{
"slot": 8,
"hero": "tidehunter",
"raw_best": "tidehunter",
"score": 0.968,
"margin": 0.71,
"top3": [
[
"tidehunter",
0.968
],
[
"juggernaut",
0.258
],
[
"lich",
0.199
]
]
},
{
"slot": 9,
"hero": "zuus",
"raw_best": "zuus",
"score": 1.0,
"margin": 0.691,
"top3": [
[
"zuus",
1.0
],
[
"witch_doctor",
0.309
],
[
"dark_willow",
0.243
]
]
},
{
"slot": 10,
"hero": "sven",
"raw_best": "sven",
"score": 0.974,
"margin": 0.631,
"top3": [
[
"sven",
0.974
],
[
"lion",
0.342
],
[
"ringmaster",
0.327
]
]
}
],
"recognized": 10,
"library_size": 167,
"elapsed_ms": 497,
"match_id": "0",
"trigger_state": "DOTA_GAMERULES_STATE_STRATEGY_TIME",
"captured_at": "2026-07-25 15:10:21",
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_151021.png",
"slots": [
{
"slot": 1,
"hero": "undying",
"raw_best": "undying",
"score": 0.877,
"margin": 0.441,
"top3": [
[
"undying",
0.877
],
[
"death_prophet",
0.437
],
[
"faceless_void",
0.387
]
]
},
{
"slot": 2,
"hero": "death_prophet",
"raw_best": "death_prophet",
"score": 1.0,
"margin": 0.601,
"top3": [
[
"death_prophet",
1.0
],
[
"ogre_magi",
0.399
],
[
"undying",
0.382
]
]
},
{
"slot": 3,
"hero": "dragon_knight",
"raw_best": "dragon_knight",
"score": 0.917,
"margin": 0.629,
"top3": [
[
"dragon_knight",
0.917
],
[
"juggernaut",
0.289
],
[
"lion",
0.209
]
]
},
{
"slot": 4,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.955,
"margin": 0.583,
"top3": [
[
"drow_ranger",
0.955
],
[
"wisp",
0.372
],
[
"lycan",
0.316
]
]
},
{
"slot": 5,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 1.0,
"margin": 0.641,
"top3": [
[
"witch_doctor",
1.0
],
[
"abyssal_underlord",
0.359
],
[
"invoker",
0.321
]
]
},
{
"slot": 6,
"hero": "vengefulspirit",
"raw_best": "vengefulspirit",
"score": 1.0,
"margin": 0.728,
"top3": [
[
"vengefulspirit",
1.0
],
[
"legion_commander",
0.272
],
[
"death_prophet",
0.269
]
]
},
{
"slot": 7,
"hero": "warlock",
"raw_best": "warlock",
"score": 0.98,
"margin": 0.704,
"top3": [
[
"warlock",
0.98
],
[
"treant",
0.276
],
[
"bristleback",
0.263
]
]
},
{
"slot": 8,
"hero": "tidehunter",
"raw_best": "tidehunter",
"score": 0.968,
"margin": 0.71,
"top3": [
[
"tidehunter",
0.968
],
[
"juggernaut",
0.258
],
[
"lich",
0.199
]
]
},
{
"slot": 9,
"hero": "zuus",
"raw_best": "zuus",
"score": 1.0,
"margin": 0.691,
"top3": [
[
"zuus",
1.0
],
[
"witch_doctor",
0.309
],
[
"dark_willow",
0.243
]
]
},
{
"slot": 10,
"hero": "sven",
"raw_best": "sven",
"score": 0.974,
"margin": 0.631,
"top3": [
[
"sven",
0.974
],
[
"lion",
0.342
],
[
"ringmaster",
0.327
]
]
}
]
}
+435
View File
@@ -0,0 +1,435 @@
{
"radiant": [
{
"slot": 1,
"hero": null,
"raw_best": "bounty_hunter",
"score": 0.283,
"margin": 0.01,
"top3": [
[
"bounty_hunter",
0.283
],
[
"grimstroke",
0.273
],
[
"witch_doctor",
0.257
]
]
},
{
"slot": 2,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.793,
"margin": 0.431,
"top3": [
[
"skeleton_king",
0.793
],
[
"invoker",
0.362
],
[
"wisp",
0.328
]
]
},
{
"slot": 3,
"hero": "sniper",
"raw_best": "sniper",
"score": 0.717,
"margin": 0.448,
"top3": [
[
"sniper",
0.717
],
[
"undying",
0.27
],
[
"spirit_breaker",
0.178
]
]
},
{
"slot": 4,
"hero": "invoker",
"raw_best": "invoker",
"score": 0.839,
"margin": 0.385,
"top3": [
[
"invoker",
0.839
],
[
"wisp",
0.454
],
[
"sand_king",
0.445
]
]
},
{
"slot": 5,
"hero": "silencer",
"raw_best": "silencer",
"score": 0.577,
"margin": 0.43,
"top3": [
[
"silencer",
0.577
],
[
"troll_warlord",
0.147
],
[
"necrolyte",
0.137
]
]
}
],
"dire": [
{
"slot": 6,
"hero": "skywrath_mage",
"raw_best": "skywrath_mage",
"score": 0.61,
"margin": 0.282,
"top3": [
[
"skywrath_mage",
0.61
],
[
"undying",
0.328
],
[
"ogre_magi",
0.322
]
]
},
{
"slot": 7,
"hero": "phantom_assassin",
"raw_best": "phantom_assassin",
"score": 0.621,
"margin": 0.382,
"top3": [
[
"phantom_assassin",
0.621
],
[
"crystal_maiden",
0.24
],
[
"drow_ranger",
0.235
]
]
},
{
"slot": 8,
"hero": "queenofpain",
"raw_best": "queenofpain",
"score": 0.686,
"margin": 0.395,
"top3": [
[
"queenofpain",
0.686
],
[
"lycan",
0.291
],
[
"drow_ranger",
0.283
]
]
},
{
"slot": 9,
"hero": "centaur",
"raw_best": "centaur",
"score": 0.71,
"margin": 0.428,
"top3": [
[
"centaur",
0.71
],
[
"sven",
0.282
],
[
"ringmaster",
0.281
]
]
},
{
"slot": 10,
"hero": "rubick",
"raw_best": "rubick",
"score": 0.623,
"margin": 0.415,
"top3": [
[
"rubick",
0.623
],
[
"death_prophet",
0.208
],
[
"elder_titan",
0.153
]
]
}
],
"recognized": 9,
"library_size": 177,
"elapsed_ms": 492,
"match_id": "8912562036",
"trigger_state": "DOTA_GAMERULES_STATE_STRATEGY_TIME",
"captured_at": "2026-07-25 15:18:28",
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_151828.png",
"slots": [
{
"slot": 1,
"hero": null,
"raw_best": "bounty_hunter",
"score": 0.283,
"margin": 0.01,
"top3": [
[
"bounty_hunter",
0.283
],
[
"grimstroke",
0.273
],
[
"witch_doctor",
0.257
]
]
},
{
"slot": 2,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.793,
"margin": 0.431,
"top3": [
[
"skeleton_king",
0.793
],
[
"invoker",
0.362
],
[
"wisp",
0.328
]
]
},
{
"slot": 3,
"hero": "sniper",
"raw_best": "sniper",
"score": 0.717,
"margin": 0.448,
"top3": [
[
"sniper",
0.717
],
[
"undying",
0.27
],
[
"spirit_breaker",
0.178
]
]
},
{
"slot": 4,
"hero": "invoker",
"raw_best": "invoker",
"score": 0.839,
"margin": 0.385,
"top3": [
[
"invoker",
0.839
],
[
"wisp",
0.454
],
[
"sand_king",
0.445
]
]
},
{
"slot": 5,
"hero": "silencer",
"raw_best": "silencer",
"score": 0.577,
"margin": 0.43,
"top3": [
[
"silencer",
0.577
],
[
"troll_warlord",
0.147
],
[
"necrolyte",
0.137
]
]
},
{
"slot": 6,
"hero": "skywrath_mage",
"raw_best": "skywrath_mage",
"score": 0.61,
"margin": 0.282,
"top3": [
[
"skywrath_mage",
0.61
],
[
"undying",
0.328
],
[
"ogre_magi",
0.322
]
]
},
{
"slot": 7,
"hero": "phantom_assassin",
"raw_best": "phantom_assassin",
"score": 0.621,
"margin": 0.382,
"top3": [
[
"phantom_assassin",
0.621
],
[
"crystal_maiden",
0.24
],
[
"drow_ranger",
0.235
]
]
},
{
"slot": 8,
"hero": "queenofpain",
"raw_best": "queenofpain",
"score": 0.686,
"margin": 0.395,
"top3": [
[
"queenofpain",
0.686
],
[
"lycan",
0.291
],
[
"drow_ranger",
0.283
]
]
},
{
"slot": 9,
"hero": "centaur",
"raw_best": "centaur",
"score": 0.71,
"margin": 0.428,
"top3": [
[
"centaur",
0.71
],
[
"sven",
0.282
],
[
"ringmaster",
0.281
]
]
},
{
"slot": 10,
"hero": "rubick",
"raw_best": "rubick",
"score": 0.623,
"margin": 0.415,
"top3": [
[
"rubick",
0.623
],
[
"death_prophet",
0.208
],
[
"elder_titan",
0.153
]
]
}
]
}
+436
View File
@@ -0,0 +1,436 @@
{
"radiant": [
{
"slot": 1,
"hero": "clinkz",
"raw_best": "clinkz",
"score": 0.873,
"margin": 0.478,
"top3": [
[
"clinkz",
0.873
],
[
"legion_commander",
0.395
],
[
"centaur",
0.392
]
]
},
{
"slot": 2,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 0.962,
"margin": 0.672,
"top3": [
[
"witch_doctor",
0.962
],
[
"invoker",
0.29
],
[
"tiny",
0.26
]
]
},
{
"slot": 3,
"hero": "abyssal_underlord",
"raw_best": "abyssal_underlord",
"score": 0.878,
"margin": 0.418,
"top3": [
[
"abyssal_underlord",
0.878
],
[
"invoker",
0.46
],
[
"legion_commander",
0.432
]
]
},
{
"slot": 4,
"hero": "pudge",
"raw_best": "pudge",
"score": 0.884,
"margin": 0.359,
"top3": [
[
"pudge",
0.884
],
[
"invoker",
0.526
],
[
"centaur",
0.443
]
]
},
{
"slot": 5,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.902,
"margin": 0.491,
"top3": [
[
"drow_ranger",
0.902
],
[
"wisp",
0.411
],
[
"arc_warden",
0.317
]
]
}
],
"dire": [
{
"slot": 6,
"hero": "life_stealer",
"raw_best": "life_stealer",
"score": 0.894,
"margin": 0.525,
"top3": [
[
"life_stealer",
0.894
],
[
"dawnbreaker",
0.369
],
[
"silencer",
0.313
]
]
},
{
"slot": 7,
"hero": "weaver",
"raw_best": "weaver",
"score": 0.877,
"margin": 0.379,
"top3": [
[
"weaver",
0.877
],
[
"sven",
0.498
],
[
"spirit_breaker",
0.497
]
]
},
{
"slot": 8,
"hero": "skywrath_mage",
"raw_best": "skywrath_mage",
"score": 0.998,
"margin": 0.701,
"top3": [
[
"skywrath_mage",
0.998
],
[
"legion_commander",
0.297
],
[
"sand_king",
0.259
]
]
},
{
"slot": 9,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.972,
"margin": 0.621,
"top3": [
[
"skeleton_king",
0.972
],
[
"phantom_assassin",
0.351
],
[
"invoker",
0.305
]
]
},
{
"slot": 10,
"hero": "storm_spirit",
"raw_best": "storm_spirit",
"score": 0.821,
"margin": 0.306,
"top3": [
[
"storm_spirit",
0.821
],
[
"wisp",
0.515
],
[
"skeleton_king",
0.46
]
]
}
],
"recognized": 10,
"ranked_overlay": true,
"library_size": 187,
"elapsed_ms": 507,
"match_id": "8912632259",
"trigger_state": "DOTA_GAMERULES_STATE_STRATEGY_TIME",
"captured_at": "2026-07-25 16:24:04",
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_162404.png",
"slots": [
{
"slot": 1,
"hero": "clinkz",
"raw_best": "clinkz",
"score": 0.873,
"margin": 0.478,
"top3": [
[
"clinkz",
0.873
],
[
"legion_commander",
0.395
],
[
"centaur",
0.392
]
]
},
{
"slot": 2,
"hero": "witch_doctor",
"raw_best": "witch_doctor",
"score": 0.962,
"margin": 0.672,
"top3": [
[
"witch_doctor",
0.962
],
[
"invoker",
0.29
],
[
"tiny",
0.26
]
]
},
{
"slot": 3,
"hero": "abyssal_underlord",
"raw_best": "abyssal_underlord",
"score": 0.878,
"margin": 0.418,
"top3": [
[
"abyssal_underlord",
0.878
],
[
"invoker",
0.46
],
[
"legion_commander",
0.432
]
]
},
{
"slot": 4,
"hero": "pudge",
"raw_best": "pudge",
"score": 0.884,
"margin": 0.359,
"top3": [
[
"pudge",
0.884
],
[
"invoker",
0.526
],
[
"centaur",
0.443
]
]
},
{
"slot": 5,
"hero": "drow_ranger",
"raw_best": "drow_ranger",
"score": 0.902,
"margin": 0.491,
"top3": [
[
"drow_ranger",
0.902
],
[
"wisp",
0.411
],
[
"arc_warden",
0.317
]
]
},
{
"slot": 6,
"hero": "life_stealer",
"raw_best": "life_stealer",
"score": 0.894,
"margin": 0.525,
"top3": [
[
"life_stealer",
0.894
],
[
"dawnbreaker",
0.369
],
[
"silencer",
0.313
]
]
},
{
"slot": 7,
"hero": "weaver",
"raw_best": "weaver",
"score": 0.877,
"margin": 0.379,
"top3": [
[
"weaver",
0.877
],
[
"sven",
0.498
],
[
"spirit_breaker",
0.497
]
]
},
{
"slot": 8,
"hero": "skywrath_mage",
"raw_best": "skywrath_mage",
"score": 0.998,
"margin": 0.701,
"top3": [
[
"skywrath_mage",
0.998
],
[
"legion_commander",
0.297
],
[
"sand_king",
0.259
]
]
},
{
"slot": 9,
"hero": "skeleton_king",
"raw_best": "skeleton_king",
"score": 0.972,
"margin": 0.621,
"top3": [
[
"skeleton_king",
0.972
],
[
"phantom_assassin",
0.351
],
[
"invoker",
0.305
]
]
},
{
"slot": 10,
"hero": "storm_spirit",
"raw_best": "storm_spirit",
"score": 0.821,
"margin": 0.306,
"top3": [
[
"storm_spirit",
0.821
],
[
"wisp",
0.515
],
[
"skeleton_king",
0.46
]
]
}
]
}
+198
View File
@@ -0,0 +1,198 @@
{
"match_id": "8912704440",
"captured_at": "2026-07-25 17:25:30",
"duration_s": 111.0,
"polls": 70,
"self": {
"slot": 3,
"team": "radiant",
"hero": "life_stealer",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"1": {
"position": 2,
"label": "中路",
"hero": "queenofpain"
},
"2": {
"position": 5,
"label": "纯辅助",
"hero": "lina"
},
"3": {
"position": 1,
"label": "优势路",
"hero": "life_stealer"
},
"4": {
"position": 3,
"label": "劣势路",
"hero": "lion"
},
"5": {
"position": 4,
"label": "辅助",
"hero": null
}
},
"final": {
"radiant": [
"queenofpain",
"lina",
"life_stealer",
"lion",
null
],
"dire": [
"spectre",
"lich",
"earth_spirit",
"undying",
"necrolyte"
]
},
"recognized": 9,
"timeline": [
{
"t": 13.8,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 2,
"team": "radiant",
"hero": "lina"
}
],
"radiant": [
"lina"
],
"dire": [],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_172352.png"
},
{
"t": 30.0,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 4,
"team": "radiant",
"hero": "lion"
},
{
"slot": 7,
"team": "dire",
"hero": "lich"
},
{
"slot": 9,
"team": "dire",
"hero": "undying"
}
],
"radiant": [
"lina",
"lion"
],
"dire": [
"lich",
"undying"
],
"count": 4,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_172409.png"
},
{
"t": 52.9,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 3,
"team": "radiant",
"hero": "life_stealer"
}
],
"radiant": [
"lina",
"life_stealer",
"lion"
],
"dire": [
"lich",
"undying"
],
"count": 5,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_172431.png"
},
{
"t": 54.6,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "queenofpain"
},
{
"slot": 6,
"team": "dire",
"hero": "spectre"
},
{
"slot": 8,
"team": "dire",
"hero": "earth_spirit"
}
],
"radiant": [
"queenofpain",
"lina",
"life_stealer",
"lion"
],
"dire": [
"spectre",
"lich",
"earth_spirit",
"undying"
],
"count": 8,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_172433.png"
},
{
"t": 82.2,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 10,
"team": "dire",
"hero": "necrolyte"
}
],
"radiant": [
"queenofpain",
"lina",
"life_stealer",
"lion"
],
"dire": [
"spectre",
"lich",
"earth_spirit",
"undying",
"necrolyte"
],
"count": 9,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_172501.png"
}
],
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_172530.png"
}
+250
View File
@@ -0,0 +1,250 @@
{
"match_id": "8912791143",
"captured_at": "2026-07-25 18:38:26",
"duration_s": 124.4,
"polls": 84,
"self": {
"slot": 9,
"team": "dire",
"hero": "drow_ranger",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"6": {
"position": 5,
"label": "纯辅助",
"hero": "witch_doctor"
},
"7": {
"position": 3,
"label": "劣势路",
"hero": null
},
"8": {
"position": 4,
"label": "辅助",
"hero": "faceless_void"
},
"9": {
"position": 1,
"label": "优势路",
"hero": "drow_ranger"
},
"10": {
"position": 2,
"label": "中路",
"hero": "queenofpain"
}
},
"final": {
"radiant": [
"razor",
"nyx_assassin",
"hoodwink",
"zuus",
"antimage"
],
"dire": [
"witch_doctor",
null,
"faceless_void",
"drow_ranger",
"queenofpain"
]
},
"recognized": 9,
"timeline": [
{
"t": 11.0,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 9,
"team": "dire",
"hero": "drow_ranger"
}
],
"radiant": [],
"dire": [
"drow_ranger"
],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183633.png"
},
{
"t": 25.7,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 8,
"team": "dire",
"hero": "faceless_void"
}
],
"radiant": [],
"dire": [
"faceless_void",
"drow_ranger"
],
"count": 2,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183648.png"
},
{
"t": 39.2,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "razor"
},
{
"slot": 4,
"team": "radiant",
"hero": "zuus"
},
{
"slot": 6,
"team": "dire",
"hero": "witch_doctor"
}
],
"radiant": [
"razor",
"zuus"
],
"dire": [
"witch_doctor",
"faceless_void",
"drow_ranger"
],
"count": 5,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183701.png"
},
{
"t": 40.7,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 10,
"team": "dire",
"hero": "queenofpain"
}
],
"radiant": [
"razor",
"zuus"
],
"dire": [
"witch_doctor",
"faceless_void",
"drow_ranger",
"queenofpain"
],
"count": 6,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183703.png"
},
{
"t": 62.9,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 2,
"team": "radiant",
"hero": "nyx_assassin"
},
{
"slot": 5,
"team": "radiant",
"hero": "antimage"
}
],
"radiant": [
"razor",
"nyx_assassin",
"zuus",
"antimage"
],
"dire": [
"witch_doctor",
"faceless_void",
"drow_ranger",
"queenofpain"
],
"count": 8,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183725.png"
},
{
"t": 96.8,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 3,
"team": "radiant",
"hero": "hoodwink"
}
],
"radiant": [
"razor",
"nyx_assassin",
"hoodwink",
"zuus",
"antimage"
],
"dire": [
"witch_doctor",
"faceless_void",
"drow_ranger",
"queenofpain"
],
"count": 9,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183759.png"
}
],
"bans": [
"venomancer",
"obsidian_destroyer",
"necrolyte",
"silencer",
"ursa",
"nevermore",
"lina",
"lion",
"magnataur",
"ember_spirit",
"snapfire",
"alchemist",
"windrunner",
"sniper",
"pudge",
"abyssal_underlord"
],
"bans_loc": [
"剧毒术士",
"殁境神蚀者",
"瘟疫法师",
"沉默术士",
"熊战士",
"影魔",
"莉娜",
"莱恩",
"马格纳斯",
"灰烬之灵",
"电炎绝手",
"炼金术士",
"风行者",
"狙击手",
"帕吉",
"孽主"
],
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_183826.png"
}
+256
View File
@@ -0,0 +1,256 @@
{
"match_id": "8912846004",
"captured_at": "2026-07-25 19:21:11",
"duration_s": 65.7,
"polls": 45,
"self": {
"slot": 2,
"team": "radiant",
"hero": "juggernaut",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"2": {
"position": 1,
"label": "优势路",
"hero": "juggernaut"
},
"3": {
"position": 5,
"label": "纯辅助",
"hero": "shadow_shaman"
},
"4": {
"position": 4,
"label": "辅助",
"hero": "death_prophet"
},
"5": {
"position": 3,
"label": "劣势路",
"hero": "tidehunter"
}
},
"final": {
"radiant": [
"necrolyte",
"juggernaut",
"shadow_shaman",
"death_prophet",
"tidehunter"
],
"dire": [
"invoker",
"hoodwink",
"axe",
"earthshaker",
"skeleton_king"
]
},
"recognized": 10,
"timeline": [
{
"t": 7.0,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 5,
"team": "radiant",
"hero": "tidehunter"
}
],
"radiant": [
"tidehunter"
],
"dire": [],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192012.png"
},
{
"t": 10.0,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 3,
"team": "radiant",
"hero": "shadow_shaman"
},
{
"slot": 7,
"team": "dire",
"hero": "hoodwink"
},
{
"slot": 9,
"team": "dire",
"hero": "earthshaker"
}
],
"radiant": [
"shadow_shaman",
"tidehunter"
],
"dire": [
"hoodwink",
"earthshaker"
],
"count": 4,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192015.png"
},
{
"t": 13.0,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 2,
"team": "radiant",
"hero": "juggernaut"
}
],
"radiant": [
"spectre",
"shadow_shaman",
"tidehunter"
],
"dire": [
"hoodwink",
"earthshaker"
],
"count": 5,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192018.png"
},
{
"t": 32.2,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 4,
"team": "radiant",
"hero": "death_prophet"
}
],
"radiant": [
"spectre",
"shadow_shaman",
"death_prophet",
"tidehunter"
],
"dire": [
"hoodwink",
"earthshaker"
],
"count": 6,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192038.png"
},
{
"t": 36.6,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 8,
"team": "dire",
"hero": "axe"
},
{
"slot": 10,
"team": "dire",
"hero": "skeleton_king"
}
],
"radiant": [
"spectre",
"shadow_shaman",
"death_prophet",
"tidehunter"
],
"dire": [
"hoodwink",
"axe",
"earthshaker",
"skeleton_king"
],
"count": 8,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192042.png"
},
{
"t": 65.6,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "necrolyte"
},
{
"slot": 6,
"team": "dire",
"hero": "invoker"
}
],
"radiant": [
"necrolyte",
"spectre",
"shadow_shaman",
"death_prophet",
"tidehunter"
],
"dire": [
"invoker",
"hoodwink",
"axe",
"earthshaker",
"skeleton_king"
],
"count": 10,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192111.png"
}
],
"bans": [
"disruptor",
"phantom_lancer",
"lion",
"zuus",
"rubick",
"silencer",
"weaver",
"dark_willow",
"abyssal_underlord",
"windrunner",
"medusa",
"razor",
"pudge",
"bristleback",
"drow_ranger",
"sniper",
"huskar"
],
"bans_loc": [
"干扰者",
"幻影长矛手",
"莱恩",
"宙斯",
"拉比克",
"沉默术士",
"编织者",
"邪影芳灵",
"孽主",
"风行者",
"美杜莎",
"雷泽",
"帕吉",
"钢背兽",
"卓尔游侠",
"狙击手",
"哈斯卡"
],
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_192111_1.png"
}
+240
View File
@@ -0,0 +1,240 @@
{
"match_id": "8912903800",
"captured_at": "2026-07-25 20:03:24",
"duration_s": 80.0,
"polls": 51,
"self": {
"slot": 5,
"team": "radiant",
"hero": "bloodseeker",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"1": {
"position": 3,
"label": "劣势路",
"hero": "pudge"
},
"2": {
"position": 5,
"label": "纯辅助",
"hero": "venomancer"
},
"3": {
"position": 4,
"label": "辅助",
"hero": "weaver"
},
"4": {
"position": 2,
"label": "中路",
"hero": "kunkka"
},
"5": {
"position": 1,
"label": "优势路",
"hero": "bloodseeker"
}
},
"final": {
"radiant": [
"pudge",
"venomancer",
"weaver",
"kunkka",
"bloodseeker"
],
"dire": [
"undying",
"warlock",
"luna",
"hoodwink",
"queenofpain"
]
},
"recognized": 10,
"timeline": [
{
"t": 5.7,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "pudge"
}
],
"radiant": [
"pudge"
],
"dire": [],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_200210.png"
},
{
"t": 28.4,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 2,
"team": "radiant",
"hero": "venomancer"
},
{
"slot": 9,
"team": "dire",
"hero": "hoodwink"
},
{
"slot": 10,
"team": "dire",
"hero": "queenofpain"
}
],
"radiant": [
"pudge",
"venomancer"
],
"dire": [
"hoodwink",
"queenofpain"
],
"count": 4,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_200233.png"
},
{
"t": 51.2,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 3,
"team": "radiant",
"hero": "weaver"
}
],
"radiant": [
"pudge",
"venomancer",
"weaver"
],
"dire": [
"hoodwink",
"queenofpain"
],
"count": 5,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_200256.png"
},
{
"t": 54.3,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 5,
"team": "radiant",
"hero": "bloodseeker"
},
{
"slot": 6,
"team": "dire",
"hero": "undying"
},
{
"slot": 7,
"team": "dire",
"hero": "warlock"
}
],
"radiant": [
"pudge",
"venomancer",
"weaver",
"bloodseeker"
],
"dire": [
"undying",
"warlock",
"hoodwink",
"queenofpain"
],
"count": 8,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_200259.png"
},
{
"t": 79.9,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 4,
"team": "radiant",
"hero": "kunkka"
},
{
"slot": 8,
"team": "dire",
"hero": "luna"
}
],
"radiant": [
"pudge",
"venomancer",
"weaver",
"kunkka",
"bloodseeker"
],
"dire": [
"undying",
"warlock",
"luna",
"hoodwink",
"queenofpain"
],
"count": 10,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_200324.png"
}
],
"bans": [
"disruptor",
"skywrath_mage",
"phantom_assassin",
"lich",
"lion",
"meepo",
"riki",
"tidehunter",
"axe",
"abyssal_underlord",
"tusk",
"phoenix",
"legion_commander",
"snapfire",
"bounty_hunter",
"sniper"
],
"bans_loc": [
"干扰者",
"天怒法师",
"幻影刺客",
"巫妖",
"莱恩",
"米波",
"力丸",
"潮汐猎人",
"斧王",
"孽主",
"巨牙海民",
"凤凰",
"军团指挥官",
"电炎绝手",
"赏金猎人",
"狙击手"
],
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_200324_1.png"
}
+141
View File
@@ -0,0 +1,141 @@
{
"match_id": "8913003670",
"captured_at": "2026-07-25 21:07:27",
"duration_s": 116.2,
"polls": 76,
"self": {
"slot": 10,
"team": "dire",
"hero": "juggernaut",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"6": {
"position": 3,
"label": "劣势路",
"hero": null
},
"7": {
"position": 2,
"label": "中路",
"hero": null
},
"8": {
"position": 5,
"label": "纯辅助",
"hero": null
},
"9": {
"position": 4,
"label": "辅助",
"hero": null
},
"10": {
"position": 1,
"label": "优势路",
"hero": "juggernaut"
}
},
"final": {
"radiant": [
"spirit_breaker",
null,
null,
null,
null
],
"dire": [
null,
null,
null,
null,
"juggernaut"
]
},
"recognized": 2,
"revisions": [],
"timeline": [
{
"t": 42.0,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "spirit_breaker"
}
],
"radiant": [
"spirit_breaker"
],
"dire": [],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_210612.png"
},
{
"t": 56.9,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 10,
"team": "dire",
"hero": "invoker"
}
],
"radiant": [
"spirit_breaker"
],
"dire": [
"invoker"
],
"count": 2,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_210627.png"
}
],
"bans": [
"invoker",
"zuus",
"pugna",
"silencer",
"nevermore",
"nyx_assassin",
"magnataur",
"lion",
"pudge",
"gyrocopter",
"storm_spirit",
"mirana",
"axe",
"pangolier",
"abyssal_underlord",
"sven",
"legion_commander",
"dawnbreaker"
],
"bans_loc": [
"祈求者",
"宙斯",
"帕格纳",
"沉默术士",
"影魔",
"司夜刺客",
"马格纳斯",
"莱恩",
"帕吉",
"矮人直升机",
"风暴之灵",
"米拉娜",
"斧王",
"石鳞剑士",
"孽主",
"斯温",
"军团指挥官",
"破晓辰星"
],
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_210727.png"
}
+148
View File
@@ -0,0 +1,148 @@
{
"match_id": "8913098624",
"captured_at": "2026-07-25 22:02:49",
"duration_s": 12.3,
"polls": 8,
"self": {
"slot": 7,
"team": "dire",
"hero": "phantom_lancer",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"6": {
"position": 5,
"label": "纯辅助",
"hero": "lina"
},
"7": {
"position": 1,
"label": "优势路",
"hero": "phantom_lancer"
},
"8": {
"position": 3,
"label": "劣势路",
"hero": "necrolyte"
},
"9": {
"position": 4,
"label": "辅助",
"hero": "zuus"
},
"10": {
"position": 2,
"label": "中路",
"hero": "lion"
}
},
"final": {
"radiant": [
"weaver",
"huskar",
"venomancer",
"furion",
"juggernaut"
],
"dire": [
"lina",
"phantom_lancer",
"necrolyte",
"zuus",
"lion"
]
},
"recognized": 9,
"revisions": [],
"timeline": [
{
"t": 2.1,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "weaver"
},
{
"slot": 2,
"team": "radiant",
"hero": "huskar"
},
{
"slot": 3,
"team": "radiant",
"hero": "venomancer"
},
{
"slot": 4,
"team": "radiant",
"hero": "furion"
},
{
"slot": 5,
"team": "radiant",
"hero": "juggernaut"
},
{
"slot": 6,
"team": "dire",
"hero": "lina"
},
{
"slot": 7,
"team": "dire",
"hero": "phantom_lancer"
},
{
"slot": 8,
"team": "dire",
"hero": "necrolyte"
},
{
"slot": 10,
"team": "dire",
"hero": "lion"
}
],
"radiant": [
"weaver",
"huskar",
"venomancer",
"furion",
"juggernaut"
],
"dire": [
"lina",
"phantom_lancer",
"necrolyte",
"lion"
],
"count": 9,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_220239.png"
}
],
"best_lineup": {
"recognized": 10,
"t": 0.1,
"state": "STRATEGY_TIME",
"heroes": [
"weaver",
"huskar",
"venomancer",
"furion",
"juggernaut",
"lina",
"phantom_lancer",
"necrolyte",
"zuus",
"lion"
],
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_best_220249.png"
},
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_best_220249.png"
}
+273
View File
@@ -0,0 +1,273 @@
{
"match_id": "8913190580",
"captured_at": "2026-07-25 22:54:09",
"duration_s": 119.6,
"polls": 81,
"self": {
"slot": 9,
"team": "dire",
"hero": "templar_assassin",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"6": {
"position": 4,
"label": "辅助",
"hero": "windrunner"
},
"7": {
"position": 3,
"label": "劣势路",
"hero": "slardar"
},
"8": {
"position": 5,
"label": "纯辅助",
"hero": "lina"
},
"9": {
"position": 1,
"label": "优势路",
"hero": "templar_assassin"
},
"10": {
"position": 2,
"label": "中路",
"hero": "void_spirit"
}
},
"final": {
"radiant": [
"undying",
"rubick",
"death_prophet",
"legion_commander",
"luna"
],
"dire": [
"windrunner",
"slardar",
"lina",
"templar_assassin",
"void_spirit"
]
},
"recognized": 9,
"revisions": [],
"timeline": [
{
"t": 12.6,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 8,
"team": "dire",
"hero": "lina"
}
],
"radiant": [],
"dire": [
"lina"
],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_225222.png"
},
{
"t": 29.8,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 2,
"team": "radiant",
"hero": "rubick"
},
{
"slot": 4,
"team": "radiant",
"hero": "legion_commander"
},
{
"slot": 6,
"team": "dire",
"hero": "windrunner"
}
],
"radiant": [
"rubick",
"legion_commander"
],
"dire": [
"windrunner",
"lina"
],
"count": 4,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_225239.png"
},
{
"t": 43.4,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 9,
"team": "dire",
"hero": "templar_assassin"
}
],
"radiant": [
"rubick",
"legion_commander"
],
"dire": [
"windrunner",
"lina",
"templar_assassin"
],
"count": 5,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_225252.png"
},
{
"t": 64.6,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "undying"
},
{
"slot": 5,
"team": "radiant",
"hero": "luna"
}
],
"radiant": [
"undying",
"rubick",
"legion_commander",
"luna"
],
"dire": [
"windrunner",
"lina",
"templar_assassin"
],
"count": 7,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_225314.png"
},
{
"t": 84.4,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 10,
"team": "dire",
"hero": "void_spirit"
}
],
"radiant": [
"undying",
"rubick",
"legion_commander",
"luna"
],
"dire": [
"windrunner",
"lina",
"templar_assassin",
"void_spirit"
],
"count": 8,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_225333.png"
},
{
"t": 90.0,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 3,
"team": "radiant",
"hero": "death_prophet"
}
],
"radiant": [
"undying",
"rubick",
"death_prophet",
"legion_commander",
"luna"
],
"dire": [
"windrunner",
"lina",
"templar_assassin",
"void_spirit"
],
"count": 9,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_225339.png"
}
],
"bans": [
"leshrac",
"techies",
"bane",
"antimage",
"puck",
"queenofpain",
"magnataur",
"ringmaster",
"lion",
"snapfire",
"juggernaut",
"clinkz",
"axe",
"treant",
"pudge",
"rattletrap"
],
"bans_loc": [
"拉席克",
"工程师",
"祸乱之源",
"敌法师",
"帕克",
"痛苦女王",
"马格纳斯",
"百戏大王",
"莱恩",
"电炎绝手",
"主宰",
"克林克兹",
"斧王",
"树精卫士",
"帕吉",
"发条技师"
],
"best_lineup": {
"recognized": 9,
"t": 101.0,
"state": "STRATEGY_TIME",
"heroes": [
"undying",
"rubick",
"death_prophet",
"legion_commander",
"luna",
null,
"slardar",
"lina",
"templar_assassin",
"void_spirit"
],
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_best_225408.png"
},
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_best_225408.png"
}
+273
View File
@@ -0,0 +1,273 @@
{
"match_id": "8913254704",
"captured_at": "2026-07-25 23:30:32",
"duration_s": 124.6,
"polls": 84,
"self": {
"slot": 10,
"team": "dire",
"hero": "antimage",
"role": "safe",
"role_label": "优势路",
"position": 1,
"gsi_name": "refining"
},
"team_roles": {
"6": {
"position": 4,
"label": "辅助",
"hero": "snapfire"
},
"7": {
"position": 2,
"label": "中路",
"hero": "sniper"
},
"8": {
"position": 5,
"label": "纯辅助",
"hero": "abyssal_underlord"
},
"9": {
"position": 3,
"label": "劣势路",
"hero": "undying"
},
"10": {
"position": 1,
"label": "优势路",
"hero": "antimage"
}
},
"final": {
"radiant": [
"vengefulspirit",
"earthshaker",
"ogre_magi",
"bristleback",
"enchantress"
],
"dire": [
"snapfire",
"sniper",
"abyssal_underlord",
"undying",
"antimage"
]
},
"recognized": 10,
"revisions": [],
"timeline": [
{
"t": 22.9,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 8,
"team": "dire",
"hero": "abyssal_underlord"
}
],
"radiant": [],
"dire": [
"abyssal_underlord"
],
"count": 1,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_232850.png"
},
{
"t": 35.3,
"state": "HERO_SELECTION",
"round": 1,
"added": [
{
"slot": 2,
"team": "radiant",
"hero": "earthshaker"
},
{
"slot": 3,
"team": "radiant",
"hero": "ogre_magi"
},
{
"slot": 6,
"team": "dire",
"hero": "snapfire"
}
],
"radiant": [
"earthshaker",
"ogre_magi"
],
"dire": [
"snapfire",
"abyssal_underlord"
],
"count": 4,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_232902.png"
},
{
"t": 47.5,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 9,
"team": "dire",
"hero": "undying"
}
],
"radiant": [
"earthshaker",
"ogre_magi"
],
"dire": [
"snapfire",
"abyssal_underlord",
"undying"
],
"count": 5,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_232915.png"
},
{
"t": 61.5,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 1,
"team": "radiant",
"hero": "vengefulspirit"
},
{
"slot": 4,
"team": "radiant",
"hero": "bristleback"
}
],
"radiant": [
"vengefulspirit",
"earthshaker",
"ogre_magi",
"bristleback"
],
"dire": [
"snapfire",
"abyssal_underlord",
"undying"
],
"count": 7,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_232928.png"
},
{
"t": 91.5,
"state": "HERO_SELECTION",
"round": 2,
"added": [
{
"slot": 7,
"team": "dire",
"hero": "sniper"
}
],
"radiant": [
"vengefulspirit",
"earthshaker",
"ogre_magi",
"bristleback"
],
"dire": [
"snapfire",
"sniper",
"abyssal_underlord",
"undying"
],
"count": 8,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_232959.png"
},
{
"t": 95.4,
"state": "STRATEGY_TIME",
"round": 3,
"added": [
{
"slot": 5,
"team": "radiant",
"hero": "enchantress"
}
],
"radiant": [
"vengefulspirit",
"earthshaker",
"ogre_magi",
"bristleback",
"enchantress"
],
"dire": [
"snapfire",
"sniper",
"abyssal_underlord",
"undying"
],
"count": 9,
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_233002.png"
}
],
"bans": [
"invoker",
"meepo",
"sven",
"clinkz",
"chaos_knight",
"juggernaut",
"slark",
"elder_titan",
"ember_spirit",
"necrolyte",
"kunkka",
"lion",
"magnataur",
"monkey_king",
"drow_ranger",
"legion_commander"
],
"bans_loc": [
"祈求者",
"米波",
"斯温",
"克林克兹",
"混沌骑士",
"主宰",
"斯拉克",
"上古巨神",
"灰烬之灵",
"瘟疫法师",
"昆卡",
"莱恩",
"马格纳斯",
"齐天大圣",
"卓尔游侠",
"军团指挥官"
],
"best_lineup": {
"recognized": 8,
"t": 89.6,
"state": "HERO_SELECTION",
"heroes": [
"vengefulspirit",
"earthshaker",
"ogre_magi",
"bristleback",
null,
"snapfire",
"sniper",
"abyssal_underlord",
"undying",
null
],
"frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_best_233032.png"
},
"last_frame": "C:\\Users\\Administrator\\Documents\\wrok\\dota2-draft-vision\\samples\\raw\\draft_best_233032.png"
}