mirror of
https://github.com/Jylpah/blitz-tools.git
synced 2026-10-23 19:19:53 +02:00
Fix --filters for BattleNumberCategorization(), add new categorizations
This commit is contained in:
1 parent
9d6f6da7d5
commit
d907371ea9
1 file changed
+45
-4
+45
-4
@@ -135,6 +135,11 @@ class BattleCategorizationList():
|
|||||||
'player_wins' : [ 'Player WR', 'bucket', [ 0, .35, .45, .50, .55, .65], '%' ],
|
'player_wins' : [ 'Player WR', 'bucket', [ 0, .35, .45, .50, .55, .65], '%' ],
|
||||||
'player_battles' : [ 'Player Battles', 'bucket', [ 0, 500, 1000, 2500, 5e3, 10e3, 15e3, 25e3], 'int' ],
|
'player_battles' : [ 'Player Battles', 'bucket', [ 0, 500, 1000, 2500, 5e3, 10e3, 15e3, 25e3], 'int' ],
|
||||||
'player_damage_dealt' : [ 'Player Avg Dmg', 'bucket', [ 0, 500, 1000, 1250, 1500, 1750, 2000, 2500], 'int' ],
|
'player_damage_dealt' : [ 'Player Avg Dmg', 'bucket', [ 0, 500, 1000, 1250, 1500, 1750, 2000, 2500], 'int' ],
|
||||||
|
'damage_made' : [ 'Player Dmg made', 'bucket', [ 0, 500, 1000, 1250, 1500, 1750, 2000, 2500], 'int' ],
|
||||||
|
'enemies_destroyed' : [ 'Player Kills', 'number'],
|
||||||
|
'enemies_spotted' : [ 'Player Spots', 'number'],
|
||||||
|
'hit_rate' : [ 'Player Hit Rate', 'bucket', [ 0, .25, .5, .6, .7, .8, .9, .95 ], '%' ],
|
||||||
|
'pen_rate' : [ 'Player Pen Rate', 'bucket', [ 0, .25, .5, .6, .7, .8, .9, .95 ], '%' ],
|
||||||
'map_name' : [ 'Map', 'string' ],
|
'map_name' : [ 'Map', 'string' ],
|
||||||
'tank_name' : [ 'Tank', 'string' ],
|
'tank_name' : [ 'Tank', 'string' ],
|
||||||
'player_name' : [ 'Player', 'string' ],
|
'player_name' : [ 'Player', 'string' ],
|
||||||
@@ -586,7 +591,7 @@ class BattleNumberCategorization(BattleCategorization):
|
|||||||
|
|
||||||
def get_filter_categories(self, filters: list) -> list:
|
def get_filter_categories(self, filters: list) -> list:
|
||||||
try:
|
try:
|
||||||
return filters
|
return list(map(str,filters))
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
bu.error('Category: ' + str(self.category_key), exception=err)
|
bu.error('Category: ' + str(self.category_key), exception=err)
|
||||||
return None
|
return None
|
||||||
@@ -758,7 +763,7 @@ class BattleCategory():
|
|||||||
'default' : [ 'battles', 'win','damage_made', 'enemies_destroyed', 'enemies_spotted', 'top_tier', 'DR', 'survived', 'allies_wins', 'enemies_wins'],
|
'default' : [ 'battles', 'win','damage_made', 'enemies_destroyed', 'enemies_spotted', 'top_tier', 'DR', 'survived', 'allies_wins', 'enemies_wins'],
|
||||||
'team' : [ 'battles', 'win','player_wins','allies_wins','enemies_wins'],
|
'team' : [ 'battles', 'win','player_wins','allies_wins','enemies_wins'],
|
||||||
'team_extended' : [ 'battles', 'battles%', 'win','player_wins','allies_wins','enemies_wins', 'player_damage_dealt', 'allies_damage_dealt', 'enemies_damage_dealt', 'player_battles','allies_battles','enemies_battles' ],
|
'team_extended' : [ 'battles', 'battles%', 'win','player_wins','allies_wins','enemies_wins', 'player_damage_dealt', 'allies_damage_dealt', 'enemies_damage_dealt', 'player_battles','allies_battles','enemies_battles' ],
|
||||||
'extended' : [ 'battles', 'battles%', 'win','damage_made', 'enemies_destroyed', 'enemies_spotted', 'top_tier', 'DR', 'KDR', 'hit_rate', 'pen_rate', 'survived', 'time_alive%', 'player_wins', 'allies_damage_wins', 'enemies_wins', MISSING_STATS ]
|
'extended' : [ 'battles', 'battles%', 'win','damage_made', 'enemies_destroyed', 'enemies_spotted', 'top_tier', 'DR', 'KDR', 'hit_rate', 'pen_rate', 'survived', 'time_alive%', 'player_wins', 'allies_wins', 'enemies_wins', MISSING_STATS ]
|
||||||
}
|
}
|
||||||
|
|
||||||
_team_fields = [ 'wins', 'battles', 'damage_dealt' ]
|
_team_fields = [ 'wins', 'battles', 'damage_dealt' ]
|
||||||
@@ -821,6 +826,12 @@ class BattleCategory():
|
|||||||
def get_result_fields(cls) -> list:
|
def get_result_fields(cls) -> list:
|
||||||
return cls.result_fields
|
return cls.result_fields
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_result_fields_ratio(cls) -> list:
|
||||||
|
return cls.result_fields_ratio
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_avg_fields(cls) -> set:
|
def get_avg_fields(cls) -> set:
|
||||||
return cls.avg_fields
|
return cls.avg_fields
|
||||||
@@ -851,6 +862,23 @@ class BattleCategory():
|
|||||||
return cls._team_fields
|
return cls._team_fields
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def calc_ratio(cls, ratio: str, result: dict):
|
||||||
|
try:
|
||||||
|
value = result[cls._result_ratios[ratio][0]]
|
||||||
|
divider = result[cls._result_ratios[ratio][1]]
|
||||||
|
if divider != 0:
|
||||||
|
return value / divider
|
||||||
|
else:
|
||||||
|
if value == 0:
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return float('Inf')
|
||||||
|
except Exception as err:
|
||||||
|
bu.error(exception=err)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def print_headers(cls, cat_name: str):
|
def print_headers(cls, cat_name: str):
|
||||||
try:
|
try:
|
||||||
@@ -1396,16 +1424,23 @@ def process_battle_results(results: dict, args : argparse.Namespace):
|
|||||||
try:
|
try:
|
||||||
url = args.url
|
url = args.url
|
||||||
cats = BattleCategorizationList.get_categorizations(args)
|
cats = BattleCategorizationList.get_categorizations(args)
|
||||||
blt_cat_list = BattleCategorizationList(cats)
|
|
||||||
|
|
||||||
if args.filters != None:
|
if args.filters != None:
|
||||||
results = filter_replays(results, args.filters)
|
results = filter_replays(results, args.filters)
|
||||||
|
if len(results) > 0:
|
||||||
|
blt_cat_list = BattleCategorizationList(cats)
|
||||||
for result in results:
|
for result in results:
|
||||||
blt_cat_list.record_result(result)
|
blt_cat_list.record_result(result)
|
||||||
if url:
|
if url:
|
||||||
blt_cat_list.record_url(result)
|
blt_cat_list.record_url(result)
|
||||||
|
|
||||||
blt_cat_list.calc_results()
|
blt_cat_list.calc_results()
|
||||||
|
else:
|
||||||
|
warning_txt = 'No replays to process '
|
||||||
|
if args.filter != None:
|
||||||
|
warning_txt = warning_txt + 'after filtering'
|
||||||
|
bu.warning(warning_txt)
|
||||||
|
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
bu.error(exception=err)
|
bu.error(exception=err)
|
||||||
@@ -1433,7 +1468,9 @@ def filter_replays(results: list, filter_json : str) -> bool:
|
|||||||
|
|
||||||
res = list()
|
res = list()
|
||||||
for result in results:
|
for result in results:
|
||||||
|
try:
|
||||||
cats = filter_cats.get_categories(result)
|
cats = filter_cats.get_categories(result)
|
||||||
|
bu.debug(str(cats))
|
||||||
ret = False
|
ret = False
|
||||||
for cat in cats:
|
for cat in cats:
|
||||||
if cats[cat] not in filters[cat]:
|
if cats[cat] not in filters[cat]:
|
||||||
@@ -1442,7 +1479,9 @@ def filter_replays(results: list, filter_json : str) -> bool:
|
|||||||
ret = True
|
ret = True
|
||||||
if ret:
|
if ret:
|
||||||
res.append(result)
|
res.append(result)
|
||||||
|
except Exception as err:
|
||||||
|
bu.error(exception=err)
|
||||||
|
bu.verbose('Battles after filtering: ' + str(len(res)))
|
||||||
return res
|
return res
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
bu.error(exception=err)
|
bu.error(exception=err)
|
||||||
@@ -2120,6 +2159,8 @@ async def read_replay_JSON(replay_json: dict, args : argparse.Namespace) -> dict
|
|||||||
# platoon buddy removed from stats
|
# platoon buddy removed from stats
|
||||||
result['allies'].remove(get_stat_id(tmp_account_id, tmp_tank_id, tmp_battletime))
|
result['allies'].remove(get_stat_id(tmp_account_id, tmp_tank_id, tmp_battletime))
|
||||||
break
|
break
|
||||||
|
for ratio in BattleCategory.get_result_fields_ratio():
|
||||||
|
result[ratio] = BattleCategory.calc_ratio(ratio, result)
|
||||||
|
|
||||||
result['time_alive%'] = result['time_alive'] / btl_duration
|
result['time_alive%'] = result['time_alive'] / btl_duration
|
||||||
result['battle_tier'] = btl_tier
|
result['battle_tier'] = btl_tier
|
||||||
|
|||||||
Reference in new issue
Block a user