Replay Parser

Download latest version 1.4 for windows: dem2json.exe.

Tool parses DEM files. It's based on 'official' parser demoinfo2.exe. The output of dem2json is JSON file with structure very similar to JSON returned by web method GetMatchDetails from Dota 2 Web API. Usage:

	dem2json.exe 123456789.dem

The output file name is

	123456789.json

Comparison to web method GetMatchDetails follows. Missing fields are marked red, added fields green, identical or similar (with comment) white.

Result object:

	"result": {
		"players": [...],
		"radiant_win": true,
		"duration": 3028,
		"start_time": 1393955805,
		"match_id": 555631285,
		"lobby_type": 0,                - always 0 so far
		"human_players": 8,
		"game_mode": 4
		"season"
		"match_seq_num"
		"tower_status_radiant"
		"tower_status_dire"
		"barracks_status_radiant"
		"barracks_status_radiant"
		"cluster"
		"first_blood_time"
		"replay_salt"
		"leagueid"
		"positive_votes"
		"negative_votes"
		"radiant_logo"
		"radiant_team_complete"
		"dire_name"
		"dire_logo"
		"dire_team_complete"
	}

Player object:

	{
		"account_id": 123456789,
		"player_slot": 0,               - could be slightly different from GetMatchDetails
		"hero_id": 89,
		"kills": 9,
		"deaths": 3,
		"assists": 10,
		"leaver_status": 0,             - always 0 (we do not leave:)
		"last_hits": 184,
		"neutrals": 39,                 - number of neutrals killed, subset of 'last_hits'
		"denies": 10,
		"hero_damage": 15670,           - 'bruto' damage given (without armor and imunity reduction), excluding enemy illusions
		"tower_damage": 2995,           - " -
		"hero_healing": 1800,           - " -
		"damage_taken": 5660,           - 'bruto' damage taken, including owned illusions
		"level": 24,
		"tower_kills": 1,               - tower last hits
		"tower_denies": 1,              - tower denies
		"runes": 0,                     - runes picked up
		"bottled_runes": 0,             - runes in bottle
		"buybacks": 0,                  - buybacks count
		"wards": 0,                     - approximated only so far (cannot detect acquisition of more then 2 wards at once)
		"is_bot": 0,                    - player is a bot
		"item_0"
		"item_1"
		"item_2"
		"item_3"
		"item_4"
		"item_5"
		"gold"
		"gold_per_min"
		"xp_per_min"
		"gold_spent"
		"ability_upgrades"
		"additional_units"
	},

ChangeLog:

1.0 - initial version

1.1 - parses all heroes, parses wards (limited)

1.2 - added damage taken, fixed crash for replays without a single deny

1.3 - fixes for reworked bloodseeker, fixed meepo's deaths and assists for opposite team

1.4 - added techies, oracle and winter wyvern