From 35e7e89cfb36eb3e76074dfafa8002f4ea0331fe Mon Sep 17 00:00:00 2001 From: Ahrimdon Date: Tue, 3 Oct 2023 01:50:06 -0400 Subject: [PATCH] Initial commit --- README.md | 10 +- beautify_data.py | 231 ++++ beautify_json.py | 23 + example.json | 1767 ++++++++++++++++++++++++++++ get_stats.bat | 11 + get_stats.ps1 | 9 + src/CSharp-CODAPI | 1 + src/Node-CallOfDuty | 1 + src/cod-python-api | 1 + src/cod_api-2.0.1-py3-none-any.whl | Bin 0 -> 22391 bytes src/cod_api-2.0.1.tar | Bin 0 -> 26360 bytes 11 files changed, 2053 insertions(+), 1 deletion(-) create mode 100644 beautify_data.py create mode 100644 beautify_json.py create mode 100644 example.json create mode 100644 get_stats.bat create mode 100644 get_stats.ps1 create mode 160000 src/CSharp-CODAPI create mode 160000 src/Node-CallOfDuty create mode 160000 src/cod-python-api create mode 100644 src/cod_api-2.0.1-py3-none-any.whl create mode 100644 src/cod_api-2.0.1.tar diff --git a/README.md b/README.md index 5afb551..4f9154f 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -# mw2019-detailed-stats \ No newline at end of file +# Modern Warfare 2019 Detailed Statistic Tracker + +Tired of visiting cod.tracker.gg to check your stats? With this repository, you'll never have to visit that site again. + +Get every single statistic Call of Duty tracks in ONE PLACE, in under a minute! + +This repository is still a work in progress. + +> To see an example, look at `example.json` \ No newline at end of file diff --git a/beautify_data.py b/beautify_data.py new file mode 100644 index 0000000..725f971 --- /dev/null +++ b/beautify_data.py @@ -0,0 +1,231 @@ +import json + +def replace_keys_in_json(file_path, replacements): + """Replace keys in the JSON file based on the replacements dictionary.""" + + with open(file_path, 'r') as file: + data = json.load(file) + + def recursive_key_replace(obj, replacements): + if isinstance(obj, dict): + new_obj = {} + for key, value in obj.items(): + new_key = replacements.get(key, key) + new_obj[new_key] = recursive_key_replace(value, replacements) + return new_obj + elif isinstance(obj, list): + for index, value in enumerate(obj): + obj[index] = recursive_key_replace(value, replacements) + return obj + + data = recursive_key_replace(data, replacements) + + with open(file_path, 'w') as file: + json.dump(data, file, indent=4) + +if __name__ == "__main__": + # Define the keys to be replaced and their replacements + replacements = { + # Gamemodes + "dom": "Domination", + "hc_dom": "Hardcore Domination", + "war": "Team Deathmatch", + "hc_war": "Hardcore Team Deathmatch", + "hq": "Headquarters", + "hc_hq": "Hardcore Headquarters", + "conf": "Kill Confirmed", + "hc_conf": "Hardcore Kill Confirmed", + "koth": "Hardpoint", + "koth_hc": "Hardcore Hardpoint", + "sd": "Search and Destroy", + "hc_sd": "Hardcore Search and Destroy", + "cyber": "Cyber Attack", + "hc_cyber": "Hardcore Cyber Attack", + "grnd": "Grind", + "arm": "Ground War", + "infect": "Infected", + "gun": "Gun Game", + "arena": "Gunfight", + "br": "Battle Royale (Warzone)", + "br_dmz": "Plunder", + "br_all": "Battle Royale (Warzone & Plunder)", + # Weapons + "weapon_assault_rifle": "Assault Rifles", + "weapon_shotgun": "Shotguns", + "weapon_marksman": "Marksman Rifles", + "weapon_sniper": "Snipers", + "tacticals": "Tactical Equipment", + "lethals": "Lethal Equipment", + "weapon_lmg": "LMGs", + "weapon_launcher": "Launchers", + "supers": "Field Upgrades", + "weapon_pistol": "Pistols", + "weapon_other": "Primary Melee", + "weapon_smg": "SMGs", + "weapon_melee": "Melee", + "scorestreakData": "Scorestreaks", + "lethalScorestreakData": "Lethal Scorestreaks", + "supportScorestreakData": "Support Scorestreaks", + # Guns + ## Assault Rifles + "iw8_ar_tango21": "RAM-7", + "iw8_ar_mike4": "M4A1", + "iw8_ar_valpha": "AS VAL", + "iw8_ar_falpha": "FR 5.56", + "iw8_ar_mcharlie": "M13", + "iw8_ar_akilo47": "AK-47", + "iw8_ar_asierra12": "Oden", + "iw8_ar_galima": "CR-56 AMAX", + "iw8_ar_sierra552": "Grau 5.56", + "iw8_ar_falima": "FAL", + "iw8_ar_anovember94": "AN-94", + "iw8_ar_kilo433": "Kilo 141", + "iw8_ar_scharlie": "FN Scar 17", + "iw8_sh_mike26": "VLK Rogue", + ## Shotguns + "iw8_sh_charlie725": "725", + "iw8_sh_oscar12": "Origin 12 Shotgun", + "iw8_sh_aalpha12": "JAK-12", + "iw8_sh_romeo870": "Model 680", + "iw8_sh_dpapa12": "R9-0 Shotgun", + ## Marksman Rifles + "iw8_sn_sbeta": "MK2 Carbine", + "iw8_sn_crossbow": "Crossbow", + "iw8_sn_romeo700": "SP-R 208", + "iw8_sn_kilo98": "Kar98k", + "iw8_sn_mike14": "EBR-14", + "iw8_sn_sksierra": "SKS", + ## Sniper Rifles + "iw8_sn_alpha50": "AX-50", + "iw8_sn_hdromeo": "HDR", + "iw8_sn_delta": "Dragunov", + "iw8_sn_xmike109": "Rytec AMR", + ## Tactical Equipment + "equip_gas_grenade": "Gas Grenade", + "equip_snapshot_grenade": "Snapshot Grenade", + "equip_decoy": "Decoy Grenade", + "equip_smoke": "Smoke Grenade", + "equip_concussion": "Concussion Grenade", + "equip_hb_sensor": "Heartbeat Sensor", + "equip_flash": "Flash Grenade", + "equip_adrenaline": "Stim", + ## Lethal Equipment + "equip_frag": "Frag Grenade", + "equip_thermite": "Thermite", + "equip_semtex": "Semtex", + "equip_claymore": "Claymore", + "equip_c4": "C4", + "equip_at_mine": "Proximity Mine", + "equip_throwing_knife": "Throwing Knife", + "equip_molotov": "Mototov Cocktail", + ## LMGs + "iw8_lm_kilo121": "M91", + "iw8_lm_mkilo3": "Bruen Mk9", + "iw8_lm_mgolf34": "MG34", + "iw8_lm_lima86": "SA87", + "iw8_lm_pkilo": "PKM", + "iw8_lm_sierrax": "FiNN LMG", + "iw8_lm_mgolf36": "Holger-26", + # "": "", ### RAAL LMG not implemented + ## Launchers + "iw8_la_gromeo": "PILA", + "iw8_la_rpapa7": "RPG-7", + "iw8_la_juliet": "JOKR", + "iw8_la_kgolf": "Strela-P", + # "": "", ### Unknown Launcher + ## Field Upgrades + "super_emp_drone": "EMP Drone", + "super_trophy": "Trophy System", + "super_ammo_drop": "Munitions Box", + "super_weapon_drop": "Weapon Drop", + "super_fulton": "Cash Deposit Balloon", + "super_armor_drop": "Armor Box", + "super_select": "Field Upgrade Pro (Any)", + "super_tac_insert": "Tactical Insertion", + "super_recon_drone": "Recon Drone", + "super_deadsilence": "Dead Silence", + "super_supply_drop": "Loadout Drop", ### Unsure if this is Loadout Drop + "super_tac_cover": "Deployable Cover", + "super_support_box": "Stopping Power Rounds", + ## Pistols + "iw8_pi_cpapa": ".357", + "iw8_pi_mike9": "Renetti", + "iw8_pi_mike1911": "1911", + "iw8_pi_golf21": "X16", + "iw8_pi_decho": ".50 GS", + "iw8_pi_papa320": "M19", + # "": "", ### Sykov not implemented + ## Primary Melee + "iw8_me_riotshield": "Riot Shield", + ## SMGs + "iw8_sm_mpapa7": "MP7", + "iw8_sm_augolf": "AUG", + "iw8_sm_papa90": "P90", + "iw8_sm_charlie9": "ISO", + "iw8_sm_mpapa5": "MP5", + "iw8_sm_smgolf45": "Striker 45", + "iw8_sm_beta": "PP19 Bizon", + "iw8_sm_victor": "Fennec", + "iw8_sm_uzulu": "Uzi", + # "": "", ### CX9 not implemented + ## Melee + "iw8_me_akimboblunt": "Kali Sticks", + "iw8_me_akimboblades": "Dual Kodachis", + "iw8_knife": "Knife", + # Scorestreaks + "precision_airstrike": "Precision Airstrike", + "cruise_predator": "Cruise Missile", + "manual_turret": "Shield Turret", + "white_phosphorus": "White Phosphorus", + "hover_jet": "VTOL Jet", + "chopper_gunner": "Chopper Gunner", + "gunship": "Gunship", + "sentry_gun": "Sentry Gun", + "toma_strike": "Cluster Strike", + "nuke": "Nuke", + "juggernaut": "Juggernaut", + "pac_sentry": "Wheelson", + "chopper_support": "Support Helo", + "bradley": "Infantry Assault Vehicle", + "airdrop": "Care Package", + "radar_drone_overwatch": "Personal Radar", + "scrambler_drone_guard": "Counter UAV", + "uav": "UAV", + "airdrop_multiple": "Emergency Airdrop", + "directional_uav": "Advanced UAV", + # Accolades + "accoladeData": "Accolades", + "classChanges": "Most Classes Changed (Evolver)", + "highestAvgAltitude": "Highest Average Altitude (High Command)", + "killsFromBehind": "Most Kills from Behind (Flanker)", + "lmgDeaths": "Most LMG Deaths (Target Practice)", + "riotShieldDamageAbsorbed": "Most Damage Absorbed with Riot Shield (Guardian)", + "flashbangHits": "Most Flashbang Hits (Blinder)", + "meleeKills": "Most Melee Kills (Brawler)", + "tagsLargestBank": "Largest Bank (Bank Account)", + "shotgunKills": "Most Shotgun Kills (Buckshot)", + "sniperDeaths": "Most Sniper Deaths (Zeroed In)", + "timeProne": "Most Time Spent Prone (Grassy Knoll)", + "killstreakWhitePhosphorousKillsAssists": "Most Kills and Assists with White Phosphorus (Burnout)", + "shortestLife": "Shortest Life (Terminal)", + "deathsFromBehind": "Most Deaths from Behind (Blindsided)", + "higherRankedKills": "Most Kills on Higher Ranked Scoreboard Players (Upriser)", + "mostAssists": "Most Assists (Wingman)", + "leastKills": "Fewest Kills (The Fearful)", + "": "", + "": "", + "": "", + "": "", + "": "", + "": "", + "": "", + "": "", + "": "", + "": "", + "": "" + } + + file_path = "stats.json" + + replace_keys_in_json(file_path, replacements) + print(f"Keys replaced in {file_path}!") \ No newline at end of file diff --git a/beautify_json.py b/beautify_json.py new file mode 100644 index 0000000..1b13f56 --- /dev/null +++ b/beautify_json.py @@ -0,0 +1,23 @@ +import json +import os +from json.decoder import JSONDecodeError + +def pretty_print_json_file(input_file, output_file): + try: + with open(input_file, 'r', encoding='utf-8') as infile: + content = infile.read() + data = json.loads(content) + with open(output_file, 'w', encoding='utf-8') as outfile: + json.dump(data, outfile, indent=4) + except JSONDecodeError as e: + print(f"Error decoding JSON in {input_file}: {e}") + +# Hardcoding the input and output file paths +input_file = 'stats.json' +output_file = 'stats_temp.json' + +pretty_print_json_file(input_file, output_file) + +# Remove the original file and rename the beautified file +os.remove(input_file) +os.rename(output_file, input_file) \ No newline at end of file diff --git a/example.json b/example.json new file mode 100644 index 0000000..916528e --- /dev/null +++ b/example.json @@ -0,0 +1,1767 @@ +{ + "status": "success", + "data": { + "title": "mw", + "platform": "battle", + "username": "Ahrimdon#1597", + "type": "mp", + "level": 154.0, + "maxLevel": 1.0, + "levelXpRemainder": 40660.0, + "levelXpGained": 2240.0, + "prestige": 0.0, + "prestigeId": 0.0, + "maxPrestige": 0.0, + "totalXp": 3377604.0, + "paragonRank": 0.0, + "paragonId": 0.0, + "s": 1.0, + "p": 1.0, + "lifetime": { + "all": { + "properties": { + "recordLongestWinStreak": 30.0, + "recordXpInAMatch": 65793.0, + "accuracy": 0.17409594357013702, + "losses": 4046.0, + "totalGamesPlayed": 11573.0, + "score": 23213724.0, + "winLossRatio": 1.143351435661316, + "totalShots": 1898637.0, + "bestScoreXp": 0.0, + "gamesPlayed": 11573.0, + "bestSquardKills": 0.0, + "bestSguardWave": 0.0, + "bestConfirmed": 70.0, + "deaths": 98014.0, + "wins": 4626.0, + "bestSquardCrates": 0.0, + "kdRatio": 1.3084865808486938, + "bestAssists": 45.0, + "bestFieldgoals": 0.0, + "bestScore": 19600.0, + "recordDeathsInAMatch": 106.0, + "scorePerGame": 2005.8518966560098, + "bestSPM": 4265.0, + "bestKillChains": 0.0, + "recordKillsInAMatch": 155.0, + "suicides": 1658.0, + "wlRatio": 1.143351435661316, + "currentWinStreak": 2.0, + "bestMatchBonusXp": 0.0, + "bestMatchXp": 0.0, + "bestSguardWeaponLevel": 0.0, + "bestKD": 19.0, + "kills": 128250.0, + "bestKillsAsInfected": 7.0, + "bestReturns": 2.0, + "bestStabs": 2.0, + "bestKillsAsSurvivor": 17.0, + "timePlayedTotal": 3113285.0, + "bestDestructions": 3.0, + "headshots": 19797.0, + "bestRescues": 12.0, + "assists": 19207.0, + "ties": 14.0, + "recordKillStreak": 30.0, + "bestPlants": 6.0, + "misses": 1568092.0, + "bestDamage": 0.0, + "bestSetbacks": 1.0, + "bestTouchdowns": 0.0, + "scorePerMinute": 447.3806413482864, + "bestDeaths": 106.0, + "bestMedalXp": 0.0, + "bestDefends": 59.0, + "bestSquardRevives": 0.0, + "bestKills": 155.0, + "bestDefuses": 11.0, + "bestCaptures": 19.0, + "hits": 330545.0, + "bestKillStreak": 30.0, + "bestDenied": 26.0 + } + }, + "mode": { + "Gun Game": { + "properties": { + "kills": 140.0, + "score": 15340.0, + "timePlayed": 2286.0, + "kdRatio": 1.1864406779661016, + "setBacks": 3.0, + "scorePerMinute": 402.62467191601047, + "stabs": 2.0, + "deaths": 118.0 + } + }, + "Domination": { + "properties": { + "kills": 8675.0, + "score": 1344920.0, + "timePlayed": 129833.0, + "kdRatio": 1.4179470415168356, + "captures": 1580.0, + "defends": 2008.0, + "scorePerMinute": 621.5307356373188, + "deaths": 6118.0 + } + }, + "Team Deathmatch": { + "properties": { + "kills": 10854.0, + "score": 1467140.0, + "timePlayed": 162520.0, + "kdRatio": 1.3737501582078218, + "assists": 2220.0, + "scorePerMinute": 541.6465665764214, + "deaths": 7901.0 + } + }, + "Headquarters": { + "properties": { + "kills": 2798.0, + "score": 350310.0, + "timePlayed": 48958.0, + "kdRatio": 1.4102822580645162, + "captures": 315.0, + "defends": 50.0, + "scorePerMinute": 429.31900812941706, + "deaths": 1984.0 + } + }, + "Hardcore Domination": { + "properties": { + "kills": 13408.0, + "score": 1791110.0, + "timePlayed": 187815.0, + "kdRatio": 1.2779260388867708, + "captures": 1633.0, + "defends": 3279.0, + "scorePerMinute": 572.1939142241035, + "deaths": 10492.0 + } + }, + "Hardcore Kill Confirmed": { + "properties": { + "kills": 6501.0, + "score": 874495.0, + "timePlayed": 80075.0, + "kdRatio": 1.2754561506768687, + "confirms": 2594.0, + "scorePerMinute": 655.2569466125508, + "denies": 1451.0, + "deaths": 5097.0 + } + }, + "Hardpoint": { + "properties": { + "kills": 9319.0, + "score": 1384660.0, + "timePlayed": 132266.0, + "kdRatio": 1.3231577452790004, + "defends": 918.0, + "objTime": 12114.0, + "scorePerMinute": 628.1251417597871, + "deaths": 7043.0 + } + }, + "Kill Confirmed": { + "properties": { + "kills": 2278.0, + "score": 375830.0, + "timePlayed": 35639.0, + "kdRatio": 1.464951768488746, + "confirms": 1501.0, + "scorePerMinute": 632.7281910266843, + "denies": 524.0, + "deaths": 1555.0 + } + }, + "Hardcore Headquarters": { + "properties": { + "kills": 154.0, + "score": 17950.0, + "timePlayed": 5338.0, + "kdRatio": 0.9625, + "captures": 24.0, + "defends": 3.0, + "scorePerMinute": 201.76095916073436, + "deaths": 160.0 + } + }, + "Gunfight": { + "properties": { + "kills": 16235.0, + "score": 8817655.0, + "timePlayed": 2177596.0, + "damage": 1855011.0, + "kdRatio": 1.2470235809201935, + "assists": 1806.0, + "scorePerMinute": 242.95567221835452, + "deaths": 13019.0 + } + }, + "Plunder": { + "properties": { + "wins": 3.0, + "kills": 824.0, + "kdRatio": 1.2372372372372373, + "downs": 873.0, + "topTwentyFive": 3.0, + "objTime": 0.0, + "topTen": 3.0, + "contracts": 152.0, + "revives": 45.0, + "topFive": 3.0, + "score": 386640.0, + "timePlayed": 114507.0, + "gamesPlayed": 105.0, + "tokens": 0.0, + "scorePerMinute": 202.59372789436452, + "cash": 5758.0, + "deaths": 666.0 + } + }, + "Battle Royale (Warzone)": { + "properties": { + "wins": 15.0, + "kills": 2111.0, + "kdRatio": 0.9850676621558563, + "downs": 1410.0, + "topTwentyFive": 443.0, + "objTime": 0.0, + "topTen": 152.0, + "contracts": 827.0, + "revives": 209.0, + "topFive": 70.0, + "score": 2685570.0, + "timePlayed": 832982.0, + "gamesPlayed": 828.0, + "tokens": 0.0, + "scorePerMinute": 193.4425953982199, + "cash": 0.0, + "deaths": 2143.0 + } + }, + "Search and Destroy": { + "properties": { + "kills": 6383.0, + "score": 4158260.0, + "timePlayed": 2459897.0, + "kdRatio": 1.1654190250136935, + "plants": 530.0, + "scorePerMinute": 101.42522227556682, + "defuses": 68.0, + "deaths": 5477.0 + } + }, + "Grind": { + "properties": { + "kills": 636.0, + "score": 101415.0, + "timePlayed": 11823.0, + "kdRatio": 1.5142857142857142, + "defends": 52.0, + "objTime": 1873.0, + "scorePerMinute": 514.6663283430601, + "deaths": 420.0 + } + }, + "Cyber Attack": { + "properties": { + "kills": 7021.0, + "score": 4195170.0, + "timePlayed": 1978672.0, + "kdRatio": 1.189395222768084, + "plants": 270.0, + "scorePerMinute": 127.21168541324685, + "revives": 0.0, + "deaths": 5903.0 + } + }, + "Hardcore Team Deathmatch": { + "properties": { + "kills": 6305.0, + "score": 757610.0, + "timePlayed": 81937.0, + "kdRatio": 1.2635270541082164, + "assists": 386.0, + "scorePerMinute": 554.7750100687114, + "deaths": 4990.0 + } + }, + "Battle Royale (Warzone & Plunder)": { + "properties": { + "wins": 18.0, + "kills": 2935.0, + "kdRatio": 1.0448558205767178, + "downs": 2283.0, + "topTwentyFive": 446.0, + "objTime": 0.0, + "topTen": 155.0, + "contracts": 979.0, + "revives": 254.0, + "topFive": 73.0, + "score": 3072210.0, + "timePlayed": 947489.0, + "gamesPlayed": 933.0, + "tokens": 0.0, + "scorePerMinute": 194.548538294376, + "cash": 5758.0, + "deaths": 2809.0 + } + }, + "Hardcore Search and Destroy": { + "properties": { + "kills": 4805.0, + "score": 2948945.0, + "timePlayed": 1901877.0, + "kdRatio": 1.1976570289132602, + "plants": 290.0, + "scorePerMinute": 93.03267245989093, + "defuses": 71.0, + "deaths": 4012.0 + } + }, + "Ground War": { + "properties": { + "kills": 44.0, + "score": 7975.0, + "timePlayed": 4115.0, + "kdRatio": 0.5569620253164557, + "captures": 4.0, + "defends": 2.0, + "scorePerMinute": 116.28189550425274, + "deaths": 79.0 + } + }, + "Hardcore Cyber Attack": { + "properties": { + "kills": 1410.0, + "score": 795610.0, + "timePlayed": 447586.0, + "kdRatio": 1.0545998504113687, + "plants": 39.0, + "scorePerMinute": 106.65346994767486, + "revives": 0.0, + "deaths": 1337.0 + } + }, + "Infected": { + "properties": { + "kills": 174.0, + "score": 88280.0, + "infected": 42.0, + "timePlayed": 12092.0, + "kdRatio": 0.9354838709677419, + "scorePerMinute": 438.0416804498842, + "time": 7094.0, + "deaths": 186.0 + } + } + }, + "map": {}, + "itemData": { + "Assault Rifles": { + "RAM-7": { + "properties": { + "hits": 26252.0, + "kills": 5882.0, + "kdRatio": 1.353428439944777, + "headshots": 1051.0, + "accuracy": 0.19299535376110097, + "shots": 136024.0, + "deaths": 4346.0 + } + }, + "M4A1": { + "properties": { + "hits": 19497.0, + "kills": 4694.0, + "kdRatio": 1.3912270302311796, + "headshots": 855.0, + "accuracy": 0.1891590344613474, + "shots": 103072.0, + "deaths": 3374.0 + } + }, + "AS VAL": { + "properties": { + "hits": 25188.0, + "kills": 6792.0, + "kdRatio": 1.196828193832599, + "headshots": 1045.0, + "accuracy": 0.16033610235844553, + "shots": 157095.0, + "deaths": 5675.0 + } + }, + "FR 5.56": { + "properties": { + "hits": 1401.0, + "kills": 981.0, + "kdRatio": 1.1380510440835268, + "headshots": 138.0, + "accuracy": 0.19498956158663883, + "shots": 7185.0, + "deaths": 862.0 + } + }, + "M13": { + "properties": { + "hits": 11572.0, + "kills": 2381.0, + "kdRatio": 1.2304909560723514, + "headshots": 509.0, + "accuracy": 0.1795138296387075, + "shots": 64463.0, + "deaths": 1935.0 + } + }, + "AK-47": { + "properties": { + "hits": 6540.0, + "kills": 2841.0, + "kdRatio": 1.2487912087912088, + "headshots": 402.0, + "accuracy": 0.15131883387320685, + "shots": 43220.0, + "deaths": 2275.0 + } + }, + "Oden": { + "properties": { + "hits": 1481.0, + "kills": 1111.0, + "kdRatio": 1.2330743618201998, + "headshots": 176.0, + "accuracy": 0.15753643229443676, + "shots": 9401.0, + "deaths": 901.0 + } + }, + "CR-56 AMAX": { + "properties": { + "hits": 29139.0, + "kills": 9932.0, + "kdRatio": 1.5142552218325964, + "headshots": 1138.0, + "accuracy": 0.18013612675490384, + "shots": 161761.0, + "deaths": 6559.0 + } + }, + "Grau 5.56": { + "properties": { + "hits": 2026.0, + "kills": 386.0, + "kdRatio": 1.180428134556575, + "headshots": 75.0, + "accuracy": 0.1598674347037008, + "shots": 12673.0, + "deaths": 327.0 + } + }, + "FAL": { + "properties": { + "hits": 2423.0, + "kills": 1323.0, + "kdRatio": 1.2016348773841963, + "headshots": 252.0, + "accuracy": 0.18166141850352377, + "shots": 13338.0, + "deaths": 1101.0 + } + }, + "AN-94": { + "properties": { + "hits": 1871.0, + "kills": 579.0, + "kdRatio": 1.035778175313059, + "headshots": 88.0, + "accuracy": 0.14443415161340126, + "shots": 12954.0, + "deaths": 559.0 + } + }, + "Kilo 141": { + "properties": { + "hits": 2201.0, + "kills": 730.0, + "kdRatio": 1.2943262411347518, + "headshots": 122.0, + "accuracy": 0.15624334492794775, + "shots": 14087.0, + "deaths": 564.0 + } + }, + "FN Scar 17": { + "properties": { + "hits": 4372.0, + "kills": 2985.0, + "kdRatio": 1.2411642411642412, + "headshots": 397.0, + "accuracy": 0.12390534221340513, + "shots": 35285.0, + "deaths": 2405.0 + } + } + }, + "Shotguns": { + "VLK Rogue": { + "properties": { + "hits": 663.0, + "kills": 372.0, + "kdRatio": 1.2077922077922079, + "headshots": 51.0, + "accuracy": 0.44377510040160645, + "shots": 1494.0, + "deaths": 308.0 + } + }, + "725": { + "properties": { + "hits": 1989.0, + "kills": 1478.0, + "kdRatio": 1.3231871083258728, + "headshots": 187.0, + "accuracy": 0.6233155750548417, + "shots": 3191.0, + "deaths": 1117.0 + } + }, + "Origin 12 Shotgun": { + "properties": { + "hits": 1333.0, + "kills": 628.0, + "kdRatio": 1.2076923076923076, + "headshots": 77.0, + "accuracy": 0.3746486790331647, + "shots": 3558.0, + "deaths": 520.0 + } + }, + "JAK-12": { + "properties": { + "hits": 1334.0, + "kills": 576.0, + "kdRatio": 1.037837837837838, + "headshots": 77.0, + "accuracy": 0.31440018854584023, + "shots": 4243.0, + "deaths": 555.0 + } + }, + "Model 680": { + "properties": { + "hits": 1130.0, + "kills": 822.0, + "kdRatio": 1.0858652575957728, + "headshots": 99.0, + "accuracy": 0.5155109489051095, + "shots": 2192.0, + "deaths": 757.0 + } + }, + "R9-0 Shotgun": { + "properties": { + "hits": 1753.0, + "kills": 1069.0, + "kdRatio": 1.0841784989858012, + "headshots": 114.0, + "accuracy": 0.3986809188082784, + "shots": 4397.0, + "deaths": 986.0 + } + } + }, + "Marksman Rifles": { + "MK2 Carbine": { + "properties": { + "hits": 799.0, + "kills": 700.0, + "kdRatio": 0.875, + "headshots": 133.0, + "accuracy": 0.38636363636363635, + "shots": 2068.0, + "deaths": 800.0 + } + }, + "Crossbow": { + "properties": { + "hits": 174.0, + "kills": 290.0, + "kdRatio": 0.8529411764705882, + "headshots": 63.0, + "accuracy": 0.14536340852130325, + "shots": 1197.0, + "deaths": 340.0 + } + }, + "SP-R 208": { + "properties": { + "hits": 2200.0, + "kills": 2054.0, + "kdRatio": 0.9120781527531083, + "headshots": 437.0, + "accuracy": 0.3264094955489614, + "shots": 6740.0, + "deaths": 2252.0 + } + }, + "Kar98k": { + "properties": { + "hits": 1344.0, + "kills": 1075.0, + "kdRatio": 0.9429824561403509, + "headshots": 345.0, + "accuracy": 0.3095347766006449, + "shots": 4342.0, + "deaths": 1140.0 + } + }, + "EBR-14": { + "properties": { + "hits": 915.0, + "kills": 715.0, + "kdRatio": 1.1068111455108358, + "headshots": 115.0, + "accuracy": 0.27518796992481204, + "shots": 3325.0, + "deaths": 646.0 + } + }, + "SKS": { + "properties": { + "hits": 454.0, + "kills": 193.0, + "kdRatio": 1.2215189873417722, + "headshots": 50.0, + "accuracy": 0.23210633946830267, + "shots": 1956.0, + "deaths": 158.0 + } + } + }, + "Snipers": { + "AX-50": { + "properties": { + "hits": 2055.0, + "kills": 2438.0, + "kdRatio": 1.2573491490459, + "headshots": 468.0, + "accuracy": 0.2816611842105263, + "shots": 7296.0, + "deaths": 1939.0 + } + }, + "HDR": { + "properties": { + "hits": 1065.0, + "kills": 1103.0, + "kdRatio": 1.2174392935982339, + "headshots": 231.0, + "accuracy": 0.35858585858585856, + "shots": 2970.0, + "deaths": 906.0 + } + }, + "Dragunov": { + "properties": { + "hits": 1596.0, + "kills": 1274.0, + "kdRatio": 1.2380952380952381, + "headshots": 289.0, + "accuracy": 0.31843575418994413, + "shots": 5012.0, + "deaths": 1029.0 + } + }, + "Rytec AMR": { + "properties": { + "hits": 1012.0, + "kills": 1178.0, + "kdRatio": 1.3940828402366865, + "headshots": 239.0, + "accuracy": 0.31763967357187695, + "shots": 3186.0, + "deaths": 845.0 + } + } + }, + "Tactical Equipment": { + "Gas Grenade": { + "properties": { + "extraStat1": 270.0, + "uses": 785.0 + } + }, + "Snapshot Grenade": { + "properties": { + "extraStat1": 176.0, + "uses": 310.0 + } + }, + "Decoy Grenade": { + "properties": { + "extraStat1": 1190.0, + "uses": 175.0 + } + }, + "Smoke Grenade": { + "properties": { + "extraStat1": 0.0, + "uses": 1409.0 + } + }, + "Concussion Grenade": { + "properties": { + "extraStat1": 1883.0, + "uses": 4004.0 + } + }, + "Heartbeat Sensor": { + "properties": { + "extraStat1": 0.0, + "uses": 6362.0 + } + }, + "Flash Grenade": { + "properties": { + "extraStat1": 1282.0, + "uses": 2736.0 + } + }, + "Stim": { + "properties": { + "extraStat1": 730059.0, + "uses": 24505.0 + } + } + }, + "Lethal Equipment": { + "Frag Grenade": { + "properties": { + "kills": 202.0, + "uses": 3794.0 + } + }, + "Thermite": { + "properties": { + "kills": 914.0, + "uses": 9013.0 + } + }, + "Semtex": { + "properties": { + "kills": 1128.0, + "uses": 10443.0 + } + }, + "Claymore": { + "properties": { + "kills": 13.0, + "uses": 286.0 + } + }, + "C4": { + "properties": { + "kills": 149.0, + "uses": 1101.0 + } + }, + "Proximity Mine": { + "properties": { + "kills": 25.0, + "uses": 264.0 + } + }, + "Throwing Knife": { + "properties": { + "kills": 810.0, + "uses": 3749.0 + } + }, + "Mototov Cocktail": { + "properties": { + "kills": 45.0, + "uses": 1218.0 + } + } + }, + "LMGs": { + "M91": { + "properties": { + "hits": 1443.0, + "kills": 568.0, + "kdRatio": 1.3027522935779816, + "headshots": 112.0, + "accuracy": 0.12412903225806451, + "shots": 11625.0, + "deaths": 436.0 + } + }, + "Bruen Mk9": { + "properties": { + "hits": 1445.0, + "kills": 269.0, + "kdRatio": 1.2809523809523808, + "headshots": 42.0, + "accuracy": 0.136, + "shots": 10625.0, + "deaths": 210.0 + } + }, + "MG34": { + "properties": { + "hits": 1644.0, + "kills": 750.0, + "kdRatio": 1.4534883720930232, + "headshots": 153.0, + "accuracy": 0.12619943194902894, + "shots": 13027.0, + "deaths": 516.0 + } + }, + "SA87": { + "properties": { + "hits": 1340.0, + "kills": 693.0, + "kdRatio": 1.391566265060241, + "headshots": 105.0, + "accuracy": 0.14635211882918306, + "shots": 9156.0, + "deaths": 498.0 + } + }, + "PKM": { + "properties": { + "hits": 1850.0, + "kills": 664.0, + "kdRatio": 1.1507798960138649, + "headshots": 129.0, + "accuracy": 0.09582016885067592, + "shots": 19307.0, + "deaths": 577.0 + } + }, + "FiNN LMG": { + "properties": { + "hits": 2043.0, + "kills": 407.0, + "kdRatio": 1.1, + "headshots": 43.0, + "accuracy": 0.13453180561043065, + "shots": 15186.0, + "deaths": 370.0 + } + }, + "Holger-26": { + "properties": { + "hits": 1359.0, + "kills": 302.0, + "kdRatio": 1.336283185840708, + "headshots": 71.0, + "accuracy": 0.1410921926910299, + "shots": 9632.0, + "deaths": 226.0 + } + } + }, + "Launchers": { + "PILA": { + "properties": { + "hits": 55.0, + "kills": 11.0, + "kdRatio": 0.14666666666666667, + "headshots": 0.0, + "accuracy": 0.3333333333333333, + "shots": 165.0, + "deaths": 75.0 + } + }, + "RPG-7": { + "properties": { + "hits": 133.0, + "kills": 295.0, + "kdRatio": 0.8477011494252874, + "headshots": 5.0, + "accuracy": 0.13260219341974078, + "shots": 1003.0, + "deaths": 348.0 + } + }, + "JOKR": { + "properties": { + "hits": 20.0, + "kills": 46.0, + "kdRatio": 0.45544554455445546, + "headshots": 0.0, + "accuracy": 0.14084507042253522, + "shots": 142.0, + "deaths": 101.0 + } + }, + "Strela-P": { + "properties": { + "hits": 3.0, + "kills": 3.0, + "kdRatio": 3.0, + "headshots": 0.0, + "accuracy": 0.15789473684210525, + "shots": 19.0, + "deaths": 1.0 + } + }, + "iw8_la_mike32": { + "properties": { + "hits": 0.0, + "kills": 0.0, + "kdRatio": 0.0, + "headshots": 0.0, + "accuracy": 0.0, + "shots": 6.0, + "deaths": 0.0 + } + } + }, + "Field Upgrades": { + "EMP Drone": { + "properties": { + "kills": 0.0, + "misc1": 2.0, + "misc2": 0.0, + "uses": 3.0 + } + }, + "Trophy System": { + "properties": { + "kills": 0.0, + "misc1": 13.0, + "misc2": 0.0, + "uses": 102.0 + } + }, + "Munitions Box": { + "properties": { + "kills": 5.0, + "misc1": 1198.0, + "misc2": 0.0, + "uses": 443.0 + } + }, + "Weapon Drop": { + "properties": { + "kills": 0.0, + "misc1": 2.0, + "misc2": 0.0, + "uses": 2.0 + } + }, + "Cash Deposit Balloon": { + "properties": { + "kills": 0.0, + "misc1": 0.0, + "misc2": 0.0, + "uses": 26.0 + } + }, + "Armor Box": { + "properties": { + "kills": 0.0, + "misc1": 0.0, + "misc2": 0.0, + "uses": 196.0 + } + }, + "Field Upgrade Pro (Any)": { + "properties": { + "kills": 0.0, + "misc1": 0.0, + "misc2": 0.0, + "uses": 37.0 + } + }, + "Tactical Insertion": { + "properties": { + "kills": 0.0, + "misc1": 1.0, + "misc2": 0.0, + "uses": 3.0 + } + }, + "Recon Drone": { + "properties": { + "kills": 0.0, + "misc1": 26.0, + "misc2": 0.0, + "uses": 47.0 + } + }, + "Dead Silence": { + "properties": { + "kills": 17757.0, + "misc1": 19.0, + "misc2": 0.0, + "uses": 17143.0 + } + }, + "Loadout Drop": { + "properties": { + "kills": 0.0, + "misc1": 0.0, + "misc2": 0.0, + "uses": 782.0 + } + }, + "Deployable Cover": { + "properties": { + "kills": 0.0, + "misc1": 4520.0, + "misc2": 0.0, + "uses": 41.0 + } + }, + "Stopping Power Rounds": { + "properties": { + "kills": 108.0, + "misc1": 0.0, + "misc2": 0.0, + "uses": 276.0 + } + } + }, + "Pistols": { + ".357": { + "properties": { + "hits": 1033.0, + "kills": 550.0, + "kdRatio": 1.0638297872340425, + "headshots": 113.0, + "accuracy": 0.2539955741332678, + "shots": 4067.0, + "deaths": 517.0 + } + }, + "Renetti": { + "properties": { + "hits": 2791.0, + "kills": 814.0, + "kdRatio": 1.0111801242236025, + "headshots": 139.0, + "accuracy": 0.1707242476143871, + "shots": 16348.0, + "deaths": 805.0 + } + }, + "1911": { + "properties": { + "hits": 1360.0, + "kills": 472.0, + "kdRatio": 1.0238611713665944, + "headshots": 97.0, + "accuracy": 0.21147566474887264, + "shots": 6431.0, + "deaths": 461.0 + } + }, + "X16": { + "properties": { + "hits": 2267.0, + "kills": 480.0, + "kdRatio": 1.273209549071618, + "headshots": 112.0, + "accuracy": 0.20819175314537608, + "shots": 10889.0, + "deaths": 377.0 + } + }, + ".50 GS": { + "properties": { + "hits": 961.0, + "kills": 501.0, + "kdRatio": 0.9690522243713733, + "headshots": 133.0, + "accuracy": 0.23857994041708044, + "shots": 4028.0, + "deaths": 517.0 + } + }, + "M19": { + "properties": { + "hits": 2348.0, + "kills": 629.0, + "kdRatio": 1.0733788395904438, + "headshots": 96.0, + "accuracy": 0.18780995040793472, + "shots": 12502.0, + "deaths": 586.0 + } + } + }, + "Primary Melee": { + "Riot Shield": { + "properties": { + "hits": 0.0, + "kills": 8.0, + "kdRatio": 0.064, + "headshots": 0.0, + "accuracy": 0.0, + "shots": 0.0, + "deaths": 125.0 + } + } + }, + "SMGs": { + "MP7": { + "properties": { + "hits": 38866.0, + "kills": 8339.0, + "kdRatio": 1.2758567931456548, + "headshots": 1517.0, + "accuracy": 0.1762918208868568, + "shots": 220464.0, + "deaths": 6536.0 + } + }, + "AUG": { + "properties": { + "hits": 3256.0, + "kills": 1452.0, + "kdRatio": 1.2670157068062826, + "headshots": 245.0, + "accuracy": 0.13367820339122224, + "shots": 24357.0, + "deaths": 1146.0 + } + }, + "P90": { + "properties": { + "hits": 4345.0, + "kills": 1142.0, + "kdRatio": 1.2874859075535512, + "headshots": 226.0, + "accuracy": 0.15172148893079127, + "shots": 28638.0, + "deaths": 887.0 + } + }, + "ISO": { + "properties": { + "hits": 2336.0, + "kills": 515.0, + "kdRatio": 1.0404040404040404, + "headshots": 83.0, + "accuracy": 0.13954599761051373, + "shots": 16740.0, + "deaths": 495.0 + } + }, + "MP5": { + "properties": { + "hits": 28724.0, + "kills": 7460.0, + "kdRatio": 1.1955128205128205, + "headshots": 1220.0, + "accuracy": 0.18341336330200245, + "shots": 156608.0, + "deaths": 6240.0 + } + }, + "Striker 45": { + "properties": { + "hits": 3789.0, + "kills": 2422.0, + "kdRatio": 1.2828389830508475, + "headshots": 297.0, + "accuracy": 0.11602412958936828, + "shots": 32657.0, + "deaths": 1888.0 + } + }, + "PP19 Bizon": { + "properties": { + "hits": 11827.0, + "kills": 7718.0, + "kdRatio": 1.7212310437109724, + "headshots": 1002.0, + "accuracy": 0.11375068527406154, + "shots": 103973.0, + "deaths": 4484.0 + } + }, + "Fennec": { + "properties": { + "hits": 4167.0, + "kills": 1091.0, + "kdRatio": 1.3469135802469137, + "headshots": 222.0, + "accuracy": 0.15412782956058588, + "shots": 27036.0, + "deaths": 810.0 + } + }, + "Uzi": { + "properties": { + "hits": 26026.0, + "kills": 11238.0, + "kdRatio": 1.3150011701380764, + "headshots": 1583.0, + "accuracy": 0.1668515158703192, + "shots": 155983.0, + "deaths": 8546.0 + } + } + }, + "Melee": { + "Kali Sticks": { + "properties": { + "hits": 0.0, + "kills": 569.0, + "kdRatio": 0.8014084507042254, + "headshots": 0.0, + "accuracy": 0.0, + "shots": 0.0, + "deaths": 710.0 + } + }, + "Dual Kodachis": { + "properties": { + "hits": 0.0, + "kills": 86.0, + "kdRatio": 1.5087719298245614, + "headshots": 0.0, + "accuracy": 0.0, + "shots": 0.0, + "deaths": 57.0 + } + }, + "Knife": { + "properties": { + "hits": 1.0, + "kills": 675.0, + "kdRatio": 0.6086564472497745, + "headshots": 0.0, + "accuracy": 1.0, + "shots": 0.0, + "deaths": 1109.0 + } + } + } + }, + "Scorestreaks": { + "Lethal Scorestreaks": { + "Precision Airstrike": { + "properties": { + "extraStat1": 24.0, + "uses": 154.0, + "awardedCount": 3.0 + } + }, + "Cruise Missile": { + "properties": { + "extraStat1": 68.0, + "uses": 73.0, + "awardedCount": 175.0 + } + }, + "Shield Turret": { + "properties": { + "extraStat1": 0.0, + "uses": 21.0, + "awardedCount": 0.0 + } + }, + "White Phosphorus": { + "properties": { + "extraStat1": 61.0, + "uses": 36.0, + "awardedCount": 35.0 + } + }, + "VTOL Jet": { + "properties": { + "extraStat1": 1243.0, + "uses": 387.0, + "awardedCount": 429.0 + } + }, + "Chopper Gunner": { + "properties": { + "extraStat1": 402.0, + "uses": 51.0, + "awardedCount": 45.0 + } + }, + "Gunship": { + "properties": { + "extraStat1": 576.0, + "uses": 70.0, + "awardedCount": 72.0 + } + }, + "Sentry Gun": { + "properties": { + "extraStat1": 11.0, + "uses": 13.0, + "awardedCount": 0.0 + } + }, + "Cluster Strike": { + "properties": { + "extraStat1": 44.0, + "uses": 190.0, + "awardedCount": 59.0 + } + }, + "Nuke": { + "properties": { + "extraStat1": 7.0, + "uses": 2.0, + "awardedCount": 0.0 + } + }, + "Juggernaut": { + "properties": { + "extraStat1": 213.0, + "uses": 24.0, + "awardedCount": 16.0 + } + }, + "Wheelson": { + "properties": { + "extraStat1": 708.0, + "uses": 76.0, + "awardedCount": 96.0 + } + }, + "Support Helo": { + "properties": { + "extraStat1": 535.0, + "uses": 145.0, + "awardedCount": 151.0 + } + }, + "Infantry Assault Vehicle": { + "properties": { + "extraStat1": 0.0, + "uses": 0.0, + "awardedCount": 0.0 + } + } + }, + "Support Scorestreaks": { + "Care Package": { + "properties": { + "extraStat1": 0.0, + "uses": 39.0, + "awardedCount": 68.0 + } + }, + "Personal Radar": { + "properties": { + "extraStat1": 0.0, + "uses": 80.0, + "awardedCount": 248.0 + } + }, + "Counter UAV": { + "properties": { + "extraStat1": 0.0, + "uses": 22.0, + "awardedCount": 14.0 + } + }, + "UAV": { + "properties": { + "extraStat1": 8490.0, + "uses": 1837.0, + "awardedCount": 2058.0 + } + }, + "Emergency Airdrop": { + "properties": { + "extraStat1": 0.0, + "uses": 1.0, + "awardedCount": 1.0 + } + }, + "Advanced UAV": { + "properties": { + "extraStat1": 232.0, + "uses": 31.0, + "awardedCount": 26.0 + } + } + } + }, + "Accolades": { + "properties": { + "Most Classes Changed (Evolver)": 108.0, + "Highest Average Altitude (High Command)": 359.0, + "Most Kills from Behind (Flanker)": 526.0, + "Most LMG Deaths (Target Practice)": 327.0, + "Most Damage Absorbed with Riot Shield (Guardian)": 20.0, + "Most Flashbang Hits (Blinder)": 254.0, + "Most Melee Kills (Brawler)": 234.0, + "Largest Bank (Bank Account)": 0.0, + "Most Shotgun Kills (Buckshot)": 310.0, + "Most Sniper Deaths (Zeroed In)": 539.0, + "Most Time Spent Prone (Grassy Knoll)": 284.0, + "Most Kills and Assists with White Phosphorus (Burnout)": 4.0, + "Shortest Life (Terminal)": 441.0, + "Most Deaths from Behind (Blindsided)": 411.0, + "Most Kills on Higher Ranked Scoreboard Players (Upriser)": 594.0, + "Most Assists (Wingman)": 667.0, + "Fewest Kills (The Fearful)": 397.0, + "tagsDenied": 51.0, + "killstreakWheelsonKills": 17.0, + "sniperHeadshots": 371.0, + "killstreakJuggernautKills": 0.0, + "smokesUsed": 206.0, + "avengerKills": 486.0, + "decoyHits": 12.0, + "killstreakCarePackageUsed": 0.0, + "molotovKills": 23.0, + "gasHits": 16.0, + "comebackKills": 320.0, + "lmgHeadshots": 140.0, + "smgDeaths": 485.0, + "carrierKills": 0.0, + "deployableCoverUsed": 9.0, + "thermiteKills": 42.0, + "arKills": 505.0, + "c4Kills": 0.0, + "suicides": 141.0, + "clutch": 58.0, + "survivorKills": 3.0, + "killstreakGunshipKills": 6.0, + "timeSpentAsPassenger": 1.0, + "returns": 0.0, + "smgHeadshots": 405.0, + "launcherDeaths": 52.0, + "oneShotOneKills": 594.0, + "ammoBoxUsed": 0.0, + "spawnSelectSquad": 0.0, + "weaponPickups": 111.0, + "pointBlankKills": 533.0, + "tagsCaptured": 47.0, + "killstreakGroundKills": 17.0, + "distanceTraveledInVehicle": 2.0, + "longestLife": 342.0, + "stunHits": 270.0, + "spawnSelectFlag": 0.0, + "shotgunHeadshots": 116.0, + "bombDefused": 32.0, + "snapshotHits": 1.0, + "noKillsWithDeath": 36.0, + "killstreakAUAVAssists": 0.0, + "killstreakPersonalUAVKills": 22.0, + "tacticalInsertionSpawns": 6.0, + "launcherKills": 25.0, + "spawnSelectVehicle": 0.0, + "mostKillsLeastDeaths": 293.0, + "mostKills": 656.0, + "defends": 124.0, + "timeSpentAsDriver": 2.0, + "bombDetonated": 28.0, + "arHeadshots": 353.0, + "timeOnPoint": 15.0, + "lmgKills": 260.0, + "killstreakUAVAssists": 97.0, + "carepackagesCaptured": 4.0, + "mostKillsLongestStreak": 445.0, + "killstreakCruiseMissileKills": 10.0, + "longestStreak": 671.0, + "destroyedKillstreaks": 10.0, + "hipfireKills": 535.0, + "stimDamageHealed": 352.0, + "skippedKillcams": 355.0, + "leastAssists": 1213.0, + "mostMultikills": 731.0, + "highestRankedKills": 675.0, + "killstreakAirstrikeKills": 2.0, + "distanceTravelled": 530.0, + "killstreakKills": 88.0, + "semtexKills": 222.0, + "penetrationKills": 324.0, + "explosionsSurvived": 457.0, + "highestMultikill": 681.0, + "arDeaths": 466.0, + "longshotKills": 536.0, + "proximityMineKills": 5.0, + "tagsMegaBanked": 17.0, + "mostKillsMostHeadshots": 331.0, + "firstInfected": 2.0, + "killstreakCUAVAssists": 0.0, + "throwingKnifeKills": 55.0, + "executionKills": 36.0, + "lastSurvivor": 0.0, + "reconDroneMarks": 1.0, + "deadSilenceKills": 252.0, + "revengeKills": 247.0, + "infectedKills": 3.0, + "killEnemyTeam": 185.0, + "sniperKills": 496.0, + "killstreakCluserStrikeKills": 8.0, + "meleeDeaths": 268.0, + "timeWatchingKillcams": 398.0, + "killstreakTankKills": 0.0, + "noKillNoDeath": 12.0, + "shotgunDeaths": 389.0, + "killstreakChopperGunnerKills": 28.0, + "shotsFired": 819.0, + "stoppingPowerKills": 1.0, + "pistolPeaths": 503.0, + "killstreakShieldTurretKills": 0.0, + "timeCrouched": 311.0, + "noDeathsFromBehind": 2610.0, + "bombPlanted": 93.0, + "setbacks": 0.0, + "smgKills": 603.0, + "claymoreKills": 2.0, + "kills10NoDeaths": 2.0, + "pistolHeadshots": 168.0, + "killstreakVTOLJetKills": 77.0, + "headshots": 699.0, + "mostDeaths": 548.0, + "adsKills": 687.0, + "empDroneHits": 1.0, + "defenderKills": 385.0, + "launcherHeadshots": 4.0, + "timesSelectedAsSquadLeader": 0.0, + "killstreakAirKills": 84.0, + "assaults": 1.0, + "fragKills": 44.0, + "killstreakEmergencyAirdropUsed": 0.0, + "captures": 82.0, + "killstreakChopperSupportKills": 5.0, + "spawnSelectBase": 0.0, + "noKill10Deaths": 0.0, + "leastDeaths": 621.0, + "killstreakSentryGunKills": 0.0, + "longestTimeSpentOnWeapon": 0.0, + "lowerRankedKills": 623.0, + "trophySystemHits": 2.0, + "clutchRevives": 0.0, + "lowestAvgAltitude": 449.0, + "pickups": 2.0, + "pistolKills": 313.0, + "reloads": 952.0 + } + } + }, + "weekly": { + "all": { + "properties": { + "kills": 597.0, + "medalXp": 131740.0, + "matchXp": 74712.0, + "averageSpeedDuringMatch": 2309.9165540000004, + "scoreXp": 65330.0, + "accuracy": 0.1536339522546419, + "losses": 15.0, + "wallBangs": 6.0, + "avgLifeTime": 54.5655737704918, + "shotsLanded": 1448.0, + "score": 70530.0, + "totalXp": 272602.0, + "headshots": 91.0, + "assists": 80.0, + "draws": 0.0, + "rank": 3132.0, + "scorePerMinute": 211.89725101397025, + "distanceTraveled": 258222.56802000006, + "deaths": 308.0, + "wins": 43.0, + "kdRatio": 1.9383116883116882, + "shotsMissed": 7977.0, + "scorePerGame": 1216.0344827586207, + "timePlayed": 19971.0, + "headshotPercentage": 0.152428810720268, + "executions": 0.0, + "matchesPlayed": 58.0, + "suicides": 7.0, + "seasonRank": 522.0, + "wlRatio": 2.8666666666666667, + "nearmisses": 4165.0, + "percentTimeMoving": 1357.7244190000001, + "miscXp": 0.0, + "longestStreak": 24.0, + "damageDone": 46177.0, + "shotsFired": 9425.0, + "damageTaken": 28706.0 + } + }, + "mode": { + "Search and Destroy": { + "properties": { + "kills": 59.0, + "medalXp": 26790.0, + "matchXp": 17481.0, + "averageSpeedDuringMatch": 615.665709, + "scoreXp": 7025.0, + "accuracy": 0.17013086989992302, + "wallBangs": 0.0, + "losses": 7.0, + "avgLifeTime": 88.35849056603773, + "shotsLanded": 221.0, + "score": 7975.0, + "totalXp": 51356.0, + "headshots": 8.0, + "assists": 7.0, + "rank": 594.0, + "draws": 0.0, + "scorePerMinute": 102.17809096732863, + "distanceTraveled": 140913.51665, + "deaths": 42.0, + "wins": 4.0, + "kdRatio": 1.4047619047619047, + "shotsMissed": 1078.0, + "scorePerGame": 725.0, + "timePlayed": 4683.0, + "headshotPercentage": 0.13559322033898305, + "matchesPlayed": 11.0, + "executions": 0.0, + "suicides": 0.0, + "seasonRank": 99.0, + "wlRatio": 0.5714285714285714, + "nearmisses": 612.0, + "percentTimeMoving": 369.778823, + "miscXp": 0.0, + "longestStreak": 10.0, + "damageDone": 7172.0, + "shotsFired": 1299.0, + "damageTaken": 5314.0 + } + }, + "Cyber Attack": { + "properties": { + "kills": 23.0, + "medalXp": 9605.0, + "matchXp": 6415.0, + "averageSpeedDuringMatch": 531.3910599999999, + "scoreXp": 2950.0, + "accuracy": 0.140625, + "wallBangs": 0.0, + "losses": 0.0, + "avgLifeTime": 143.8181818181818, + "shotsLanded": 72.0, + "score": 3025.0, + "totalXp": 19030.0, + "headshots": 6.0, + "assists": 4.0, + "rank": 216.0, + "draws": 0.0, + "scorePerMinute": 114.72819216182047, + "distanceTraveled": 40479.1927, + "deaths": 7.0, + "wins": 4.0, + "kdRatio": 3.2857142857142856, + "shotsMissed": 440.0, + "scorePerGame": 756.25, + "timePlayed": 1582.0, + "headshotPercentage": 0.2608695652173913, + "matchesPlayed": 4.0, + "executions": 0.0, + "suicides": 0.0, + "seasonRank": 36.0, + "wlRatio": 0.0, + "nearmisses": 238.0, + "percentTimeMoving": 264.27785, + "miscXp": 0.0, + "longestStreak": 12.0, + "damageDone": 2467.0, + "shotsFired": 512.0, + "damageTaken": 1101.0 + } + }, + "Hardcore Hardpoint": { + "properties": { + "kills": 274.0, + "medalXp": 24505.0, + "matchXp": 9713.0, + "averageSpeedDuringMatch": 618.6498200000001, + "scoreXp": 28265.0, + "accuracy": 0.09447264523406655, + "wallBangs": 2.0, + "losses": 0.0, + "avgLifeTime": 14.991869918699187, + "shotsLanded": 335.0, + "score": 32440.0, + "totalXp": 63183.0, + "headshots": 28.0, + "assists": 14.0, + "rank": 162.0, + "draws": 0.0, + "scorePerMinute": 1055.531453362256, + "distanceTraveled": 21206.3418, + "deaths": 120.0, + "wins": 3.0, + "kdRatio": 2.283333333333333, + "shotsMissed": 3211.0, + "scorePerGame": 10813.333333333334, + "timePlayed": 1844.0, + "headshotPercentage": 0.10218978102189781, + "matchesPlayed": 3.0, + "executions": 0.0, + "suicides": 7.0, + "seasonRank": 27.0, + "wlRatio": 0.0, + "nearmisses": 1157.0, + "percentTimeMoving": 295.223826, + "miscXp": 0.0, + "longestStreak": 24.0, + "damageDone": 8682.0, + "shotsFired": 3546.0, + "damageTaken": 4280.0 + } + }, + "Gunfight": { + "properties": { + "kills": 241.0, + "medalXp": 70840.0, + "matchXp": 41103.0, + "averageSpeedDuringMatch": 544.209965, + "scoreXp": 27090.0, + "accuracy": 0.2015732546705998, + "wallBangs": 4.0, + "losses": 8.0, + "avgLifeTime": 66.26815642458101, + "shotsLanded": 820.0, + "score": 27090.0, + "totalXp": 139033.0, + "headshots": 49.0, + "assists": 55.0, + "rank": 2160.0, + "draws": 0.0, + "scorePerMinute": 137.0257966616085, + "distanceTraveled": 55623.51686999999, + "deaths": 139.0, + "wins": 32.0, + "kdRatio": 1.7338129496402879, + "shotsMissed": 3248.0, + "scorePerGame": 677.25, + "timePlayed": 11862.0, + "headshotPercentage": 0.2033195020746888, + "matchesPlayed": 40.0, + "executions": 0.0, + "suicides": 0.0, + "seasonRank": 360.0, + "wlRatio": 4.0, + "nearmisses": 2158.0, + "percentTimeMoving": 428.44392, + "miscXp": 0.0, + "longestStreak": 9.0, + "damageDone": 27856.0, + "shotsFired": 4068.0, + "damageTaken": 18011.0 + } + } + }, + "map": {} + }, + "engagement": null + } +} \ No newline at end of file diff --git a/get_stats.bat b/get_stats.bat new file mode 100644 index 0000000..0a91663 --- /dev/null +++ b/get_stats.bat @@ -0,0 +1,11 @@ +@echo off +:: Set your default values here +set "PROF=Ahrimdon%%231597" +:: The %% replaces the # for the Activision ID +set "COOKIE_VALUE=INSERT ACT_SSO_COOKIE COOKIE HERE FOR AUTHENTICATION" + +set "URL=https://my.callofduty.com/api/papi-client/stats/cod/v1/title/mw/platform/battle/gamer/%PROF%/profile/type/mp" +set "USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" +set "OUTPUT_FILE=stats.json" + +curl -v "%URL%" -H "Cookie: ACT_SSO_COOKIE=%COOKIE_VALUE%" -H "User-Agent: %USER_AGENT%" -o %OUTPUT_FILE% \ No newline at end of file diff --git a/get_stats.ps1 b/get_stats.ps1 new file mode 100644 index 0000000..2294cc4 --- /dev/null +++ b/get_stats.ps1 @@ -0,0 +1,9 @@ +# Set your default values here +$PROF = "Ahrimdon%231597" # The % replaces the # for the Activision ID +$COOKIE_VALUE = "INSERT ACT_SSO_COOKIE COOKIE HERE FOR AUTHENTICATION" + +$URL = "https://my.callofduty.com/api/papi-client/stats/cod/v1/title/mw/platform/battle/gamer/$PROF/profile/type/mp" +$USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" +$OUTPUT_FILE = "stats.json" + +curl -v $URL -H "Cookie: ACT_SSO_COOKIE=$COOKIE_VALUE" -H "User-Agent: $USER_AGENT" -o $OUTPUT_FILE \ No newline at end of file diff --git a/src/CSharp-CODAPI b/src/CSharp-CODAPI new file mode 160000 index 0000000..58b6e51 --- /dev/null +++ b/src/CSharp-CODAPI @@ -0,0 +1 @@ +Subproject commit 58b6e510b9ee2c0820fd01827fba181def5385ab diff --git a/src/Node-CallOfDuty b/src/Node-CallOfDuty new file mode 160000 index 0000000..0c54178 --- /dev/null +++ b/src/Node-CallOfDuty @@ -0,0 +1 @@ +Subproject commit 0c541784ae99e001d2c0073049bde993fb9eb53c diff --git a/src/cod-python-api b/src/cod-python-api new file mode 160000 index 0000000..465d741 --- /dev/null +++ b/src/cod-python-api @@ -0,0 +1 @@ +Subproject commit 465d7416d8e82a6768473f7fcac947d8e0c9a857 diff --git a/src/cod_api-2.0.1-py3-none-any.whl b/src/cod_api-2.0.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..6af470dfd87dba180cbeec511e1413d72f1923d6 GIT binary patch literal 22391 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 Z{#EfBDu_t`xE|?w?|<%*&$|CO`yYq4h5rBm literal 0 HcmV?d00001 diff --git a/src/cod_api-2.0.1.tar b/src/cod_api-2.0.1.tar new file mode 100644 index 0000000000000000000000000000000000000000..459d94c760c8e2b41518471865c14549c92dac86 GIT binary patch literal 26360 zcmV(#K;*w4iwFog)?Q-*|6^}tUtw@*Eix`JE-@~2VR8WNefwJ*N3v*sJ^feA#ot~Y z5ds9*F*)8{f^ouG3|zo*a`NSaku-=|OEb#M2&`oDzu$WGV_qOI#_RRy%dXL=r@Okk zs=BJWx~jd>Uitfx|Ne)-?+3|OALX;kpSpinSJyY}-}roOwX@dw%6tFSBYY-l<|i=x zS6}9*^Nlyk!cp*I?dj8JYn#uXu0C&fo^>`h*E;H}=JOx_>Bapse;h7%+Ni`K$7FuYzP6L%(6_je}$qW?9hpve@gv0G=Q9y?&TxN!Xoa zfd_57(BTMw41-j8@r9RN!kfde7er~`!D3EEL6o&TXz%qd{b&$I124?5`zX#le>jY< zgMM4p&6qw%N#KvV!vI^IUIvV~0LaK6dPkEkjOOjjh|sU^UBJ9s1o1Gq$P6?WaiUU< z4V+4xT?UEwE{ysqf_@z*@6xs&MBYmAHE$HBnOE`dIPrT~*aJA|WevLNd7It?a% z;=}i#IHD?z2*}4JM2e#M`!Jn&kocqJW$0*xpr;df1(qubMt%sbuse%G#0+*4W~nzx zp(g@%nwZX_~jPvrNsjLQ~4?rCTeu~II zN<`Fmrv#xt$u47p@#lEr_56r>!r!nL!j{ZGg(<`_QNr8HAo8vO5#zvrhu|Ov3_LCT z3Fnst7eSIBZ3E^6=PjggHBMkoFy%@+9eDm;JzlbwET7f{d7!UR2jWU+~p= z727yuY=(!|akT-q9z%znL|znJD}vMF8{stFy^G>&({De z5RgS^j)a+4&{y!@AB~65?@bV-lisD}ctG7{fW0XAmW6~7;%@IEkjai<2lvK)3cp1N z3n3=xh0tLHD5M$rqd*B zg`}epidl6WwQpuMPveTno7dAJ`AgG;DfU24CLsTU_v0Z7ccoV%33z)3;hErGG9^+V zsB_Y#%>#FV{8;?cpvnxI!W!G*lHj*Vm;{1vfUPT5g zB>4<#zzCNDwjER;;4MEB-1I$=!JxaulN6?fI|D<4>QKsN4~s6N4fu+&j69*u!H0Ruvc(1{R?P z=o$DXvZA4jED`s5lLQqE9t`v_MrPcf^fFeBKzjlb?oVJlMx4W2C`>}=0#!(q5NQD5 zUo%~i=0{umBtoo?Gau%Y7p>O;Z+CVv5FvtLjbJ1x67%sTh)9+ZqKySYuQ9Nf1{Frw zlbIPJ@)H0Jo^@eKqbw9Gi!K4UL#7~T@b^9tu-`|r0)|0#i=l$fu0qYMG^BnLySkX* z>Kfuu7IvV8l=dpUTd}w)2zFMgh{MAO;cIyTD(G5lBQmo~01NV7ebW>ROC$CG4?6G!?4HcV1h z_laoYR3v;qrtKM(4r0x#IP5b?!j1;G_xebr2{+aNv8qQHVy)gxyoXazw2Q#v2OwKv z<*$&?patk$0a%;UwrC2h3E+BJaRh>UqNS12;{g|nP?@AWtfK|!p`$ojMp%rcAVeE7YN z2{vAB!*+HNMm!?DKX>ZvF>|b*()wyHS~q-DtA%q%#;}}Yg?kkEFe|g)Ee}Ijf}wvc za-CIb7$|RBDY9%@B3gh1gHeb`0@lRM43sYecL3%dA=(8Sb$m0XPZAJyeX-GiI%So@ zRB7lvZ`X&xqzPMw{XQ&tN?VLK2V3qOw3?F_f^?3SWX>uza{$>CslkSC~Y~D{)q}z-yaj(;g_+WWO^O&9R(}{bnd5@xJ0~RqDZ⪚fq( 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 _H?VeL5@brw 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 literal 0 HcmV?d00001