Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # CSGO JSON Data Parser
- # Version 0.3
- # Calculates optimal picks for fantasy teams for specified day
- # Requires properly formatted JSON data
- # Shitty code by /u/fknsonikk
- import json
- import itertools
- import pprint
- import collections
- from operator import itemgetter
- from prettytable import PrettyTable
- commando = [];
- clutch_king = [];
- eco_warrior = [];
- entry_fragger = [];
- sniper = [];
- optimal_candidates = [];
- optimal_combinations = [];
- stageToParse = "stage2";
- input_file = "day3.json"; # Download: http://pastebin.com/Hew6k6Ku
- output_file = "day3points.txt";
- def calculateCommando (name, kills, deaths):
- global commando;
- points = 2*kills;
- points -= deaths;
- plusminus = kills-deaths;
- if plusminus > 0:
- points += plusminus;
- commando.append([name, points, plusminus]);
- def calculateClutchKing (name, kills, deaths, clutch_kills):
- global clutch_king;
- points = 2*kills;
- points -= deaths;
- points += 4*clutch_kills;
- clutch_king.append([name, points, clutch_kills]);
- def calculateEcoWarrior (name, kills, deaths, pistol_kills):
- global eco_warrior;
- points = 2*kills;
- points -= deaths;
- points += 2*pistol_kills;
- eco_warrior.append([name, points, pistol_kills]);
- def calculateEntryFragger (name, kills, deaths, opening_kills):
- global entry_fragger;
- points = 2*kills;
- points -= deaths;
- points += 2*opening_kills;
- entry_fragger.append([name, points, opening_kills]);
- def calculateSniper (name, kills, deaths, sniper_kills):
- global sniper;
- points = 2*kills;
- points -= deaths;
- points += 2*sniper_kills;
- sniper.append([name, points, sniper_kills]);
- def findOptimal():
- global s_commando, s_clutch_king, s_eco_warrior, s_entry_fragger, s_sniper, optimal_candidates, optimal_combinations;
- for a in range (0,4):
- for b in range (0,4):
- for c in range (0,4):
- for d in range (0,4):
- for e in range(0,4):
- optimal_candidates.append(
- [s_commando[a][0], s_clutch_king[b][0], s_eco_warrior[c][0], s_entry_fragger[d][0], s_sniper[e][0],
- s_commando[a][1] + s_clutch_king[b][1] + s_eco_warrior[c][1] + s_entry_fragger[d][1] + s_sniper[e][1]]
- );
- for candidate in optimal_candidates:
- unique_values = set(candidate);
- if len(unique_values) == 6:
- optimal_combinations.append(candidate);
- def printOptimal (sortedList, outFile):
- outFile.write('Best lineups today:\n')
- optimal = PrettyTable(["Commando", "Clutch King", "Eco Warrior", "Entry Fragger", "Sniper", "Total Points"]);
- optimal.align = "l";
- optimal.align["Total Points"] = "r";
- for entry in sortedList:
- optimal.add_row(entry);
- str_optimal = optimal.get_string();
- outFile.write(str_optimal);
- def printCommando (sortedList, outFile):
- outFile.write('\n\nCommando: \n');
- commando = PrettyTable(["Name", "Points", "Kills - Deaths"]);
- commando.align["Name"] = "l";
- commando.align["Points"] = "r";
- commando.align["Kills - Deaths"] = "r";
- for entry in sortedList:
- commando.add_row(entry);
- str_commando = commando.get_string();
- outFile.write(str_commando);
- def printClutchKing (sortedList, outFile):
- outFile.write('\n\nClutch King: \n');
- clutch_king = PrettyTable(["Name", "Points", "Clutch Kills"]);
- clutch_king.align["Name"] = "l";
- clutch_king.align["Points"] = "r";
- clutch_king.align["Clutch Kills"] = "r";
- for entry in sortedList:
- clutch_king.add_row(entry);
- str_clutch_king = clutch_king.get_string();
- outFile.write(str_clutch_king);
- def printEcoWarrior (sortedList, outFile):
- outFile.write('\n\nEco Warrior: \n');
- eco_warrior = PrettyTable(["Name", "Points", "Pistol Kills"]);
- eco_warrior.align["Name"] = "l";
- eco_warrior.align["Points"] = "r";
- eco_warrior.align["Pistol Kills"] = "r";
- for entry in sortedList:
- eco_warrior.add_row(entry);
- str_eco_warrior = eco_warrior.get_string();
- outFile.write(str_eco_warrior);
- def printEntryFragger (sortedList, outFile):
- outFile.write('\n\nEntry Fragger: \n');
- entry_fragger = PrettyTable(["Name", "Points", "Opening Kills"]);
- entry_fragger.align["Name"] = "l";
- entry_fragger.align["Points"] = "r";
- entry_fragger.align["Opening Kills"] = "r";
- for entry in sortedList:
- entry_fragger.add_row(entry);
- str_entry_fragger = entry_fragger.get_string();
- outFile.write(str_entry_fragger);
- def printSniper (sortedList, outFile):
- outFile.write('\n\nSniper: \n');
- sniper = PrettyTable(["Name", "Points", "Sniper Kills"]);
- sniper.align["Name"] = "l";
- sniper.align["Points"] = "r";
- sniper.align["Sniper Kills"] = "r";
- for entry in sortedList:
- sniper.add_row(entry);
- str_sniper = sniper.get_string();
- outFile.write(str_sniper);
- with open(input_file) as inputfile:
- data = json.load(inputfile);
- for player in data['items_game_live']['pro_players'].values():
- name = player['name'];
- if stageToParse in player['events']['9']:
- thisStage = player['events']['9'][stageToParse];
- kills = int(thisStage['enemy_kills']);
- deaths = int(thisStage['deaths']);
- clutch_kills = int(thisStage['clutch_kills']);
- opening_kills = int(thisStage['opening_kills']);
- pistol_kills = int(thisStage['pistol_kills']);
- sniper_kills = int(thisStage['sniper_kills']);
- calculateCommando(name, kills, deaths);
- calculateClutchKing(name, kills, deaths, clutch_kills);
- calculateEcoWarrior(name, kills, deaths, pistol_kills);
- calculateEntryFragger(name, kills, deaths, opening_kills);
- calculateSniper(name, kills, deaths, sniper_kills);
- s_commando = sorted(commando, key=itemgetter(1, 2), reverse=True);
- s_clutch_king = sorted(clutch_king, key=itemgetter(1, 2), reverse=True);
- s_eco_warrior = sorted(eco_warrior, key=itemgetter(1, 2), reverse=True);
- s_entry_fragger = sorted(entry_fragger, key=itemgetter(1, 2), reverse=True);
- s_sniper = sorted(sniper, key=itemgetter(1, 2), reverse=True);
- findOptimal();
- s_optimal_combinations = sorted(optimal_combinations, key=itemgetter(5), reverse=True);
- with open(output_file, 'w') as outFile:
- printOptimal(s_optimal_combinations, outFile);
- printCommando(s_commando, outFile);
- printClutchKing(s_clutch_king, outFile);
- printEcoWarrior(s_eco_warrior, outFile);
- printEntryFragger(s_entry_fragger, outFile);
- printSniper(s_sniper, outFile);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement