What it does:
Input is one of
a) csv results file of https://www.datdota.com/frames query
b) json results file of https://www.opendota.com/explorer query
Functionality 1)
Download all the matching replays for this query. This makes analysing teams/games easier for the user through being able to simply use "playdemo replays/match-id.dem" console cmd. No backing out and having to download next game, and then load it up.
Functionality 2)
Parse these downloaded replays for 'tick of interest' Definition of interesting would be up to user/script writer for that particular case. Simples examples would be teamfight starts, impressive ultimate uses (i.e chrones that catch multiple people), ganks etc You can use "demo_gototick tick_number" console cmd to jump around a replay instantly, no messing with having to manually search through replays (demo_gototime exists but has to factor in draft time and other starts. Is just plain more awkward than always correct tick number)
Instructions requirements: python3, java 1.8
- Clone this repo (https://github.com/ThePianoDentist/dotaHighlightHelper)
- Clone https://github.com/ThePianoDentist/clarity-examples repo
- Set PARSER_FOLDER in config.ini to where clarity-examples was cloned to
- Set REPLAY_FOLDER in config.ini
- make a query on https://www.opendota.com/explorer (click JSON to save result) or https://www.datdota.com/frames (click CSV to save result)
example usage: cd to hightlightHelper directory python main.py "C:\Users\Johnny\Downloads\data (4).json" teamfights
(if just testing, filtering tournament: Kiev major, Player: Boboka, Hero: Riki....and searching for courierkills is a nice short example e.g. https://youtu.be/WzH2RR0dT5M or https://www.youtube.com/watch?v=jmhubgQrh9E&feature=youtu.be)
you can set a limit on numnber of parallel replay downloads with MAX_PARALLEL_DOWNLOADS in config file.
Possible use cases:
-
Making it easier to produce short broadcasting segments/clips for pre-game analysis. i.e. you first do some statistical analysis to find interesting points to highlight pre-game. Such as team has 80% winrate this patch with void. You can then write a simple script to extract ticks where > x enemies were chronoed. Then making a small highlight video to illustrate point is simple and easy.
-
Making montages of players/teams/tournaments. I.e. could extract every rampage in a tournament, every flawless teamwipe, every courier kill etc.
-
Professional teams preparing for opponents (helps when breaking game down into 'sections' to analayse. i.e. easier to ask multiple questions, "how do they lane, how do they teamfight, what are farming patterns* etc", broken down. Rather than having to analyze every aspect simultaneously.
*(When camera angles/choices dont matter. i.e player perspective for farming patterns, could generate automated videos aggregating this info)
Known Bugs:
- For chronospheres, when specifying minimum enemies caught it will include friendlies
TODOs:
- Move the analysis parts to a server, not local
- Let parts that can be async, be async. (I.e. dont need to wait for all match_its found to start downloading replays, same for parsing)
- The output from parallel java tasks mixes lines. Solved by putting matchID into entries, but is this poor solution?
Notes:
- https://github.com/ThePianoDentist/simpleDotaMatchIDtoReplayUrlAPI is the server for getting replay urls
- Many thanks to clarity, datdota and opendota who material this relies on; and/or directly uses....and valve obviously.
- You can extend project yourself with your own search classes in the python, following the examples