comp.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import requests
  2. import csv
  3. import os
  4. from datetime import datetime
  5. def get_comp_info(params, headers, logging):
  6. def get_battlegrounds_comp_stats():
  7. url = "https://hsreplay.net/analytics/query/battlegrounds_comp_stats/"
  8. response = requests.get(url, params=params, headers=headers)
  9. if response.status_code == 200:
  10. json_response = response.json()
  11. data = json_response["series"]["data"]
  12. return data
  13. else:
  14. logging.error(f"请求失败,状态码: {response.status_code}")
  15. def get_compositions():
  16. url = "https://hsreplay.net/api/v1/battlegrounds/compositions/"
  17. response = requests.get(url, headers=headers)
  18. if response.status_code == 200:
  19. json_response = response.json()
  20. data = json_response
  21. return data
  22. else:
  23. logging.error(f"请求失败,状态码: {response.status_code}")
  24. comp_stats = get_battlegrounds_comp_stats()
  25. compositions = get_compositions()
  26. mapping = {}
  27. for entry in compositions:
  28. mapping[entry["id"]] = entry["name"]
  29. modified_compositions = []
  30. for entry in comp_stats:
  31. friendly_composition = entry["friendly_composition"]
  32. name = mapping.get(friendly_composition)
  33. new_entry = {
  34. "ID": friendly_composition,
  35. "Name": name,
  36. "Avg_Final_Placement": entry["avg_final_placement"],
  37. "Final_Placement_Distribution":
  38. entry["final_placement_distribution"],
  39. "Popularity": entry["popularity"]
  40. }
  41. modified_compositions.append(new_entry)
  42. output_directory = "output/compositions"
  43. current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
  44. csv_filename = f"{current_time}.csv"
  45. csv_output_file = os.path.join(output_directory, csv_filename)
  46. os.makedirs(output_directory, exist_ok=True)
  47. fieldnames = [
  48. "ID", "Name", "Avg_Final_Placement", "Final_Placement_Distribution",
  49. "Popularity"
  50. ]
  51. with open(csv_output_file, mode="w", newline="",
  52. encoding="utf-8") as outfile:
  53. csv_writer = csv.DictWriter(outfile, fieldnames=fieldnames)
  54. csv_writer.writeheader()
  55. csv_writer.writerows(modified_compositions)