analysis2.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import json
  2. # 假设数据文件名为 'betting_data.txt',每行为一个时间戳和JSON数据
  3. file_path = '开奖记录.log'
  4. index = 0
  5. total_payout_by_bet_odd = 0
  6. total_payout_by_settle = 0
  7. result_option = []
  8. bet_101 = 0
  9. bet_102 = 0
  10. options_pay_out = {}
  11. wrong_data_key = []
  12. cacheRoundInfo = []
  13. class RoundInfo:
  14. def __init__(self, key, _result_option, _options_pay_out, _total_payout_by_bet_odd, _total_payout_by_settle):
  15. self.key = key
  16. self.result_option = _result_option
  17. self.options_pay_out = _options_pay_out
  18. self.total_payout_by_bet_odd = _total_payout_by_bet_odd
  19. self.total_payout_by_settle = _total_payout_by_settle
  20. def process_settle(key, data):
  21. global total_payout_by_settle, total_payout_by_bet_odd, result_option
  22. player_settle = data["playerSettle"]
  23. for player in player_settle:
  24. total_payout_by_settle += player["totalWinAmount"]
  25. other_players = data["otherPlayers"]
  26. total_payout_by_settle += other_players["totalWinAmount"]
  27. # 开奖结果
  28. for result in data["optionResult"]:
  29. if result["result"] == 1:
  30. result_option_ = result["option"]
  31. result_option.append(result_option_)
  32. total_payout_by_bet_odd += options_pay_out[result_option_]
  33. def compare_obb_and_settle(key, data):
  34. global total_payout_by_settle, total_payout_by_bet_odd
  35. diff_value = (total_payout_by_settle - total_payout_by_bet_odd) / 100
  36. diff_value = round(diff_value, 2)
  37. if diff_value != 0:
  38. print(
  39. f"{key} odd结果:{total_payout_by_bet_odd} 开奖结果:{total_payout_by_settle} 差值:{diff_value}¥ 数值不同不予计入,待删除")
  40. wrong_data_key.append(key)
  41. else:
  42. # print(f"{key} odd结果:{total_payout_by_bet_odd} 开奖结果:{total_payout_by_settle} 差值:{diff_value}¥")
  43. pass
  44. def save_and_clear(key):
  45. global bet_101, bet_102, total_payout_by_bet_odd, total_payout_by_settle, result_option
  46. if total_payout_by_settle == total_payout_by_bet_odd:
  47. # print(f"{key} odd结果:{total_payout_by_bet_odd} 开奖结果:{total_payout_by_settle} 一致数据可以保存用于分析")
  48. cacheRoundInfo.append(
  49. RoundInfo(key, result_option, options_pay_out, total_payout_by_bet_odd, total_payout_by_settle))
  50. bet_101 = 0
  51. bet_102 = 0
  52. total_payout_by_bet_odd = 0
  53. total_payout_by_settle = 0
  54. options_pay_out.clear()
  55. def parse_data_from_file(_file_path):
  56. clean_data(_file_path)
  57. delete_wrong_data(_file_path)
  58. print(json.dumps(cacheRoundInfo))
  59. def delete_wrong_data(_file_path):
  60. print("错误数据key:", wrong_data_key)
  61. if not wrong_data_key:
  62. return
  63. # 删除文件的某一行以及上一行
  64. with open(_file_path, "r", encoding="utf-8") as f:
  65. lines = f.readlines()
  66. with open(_file_path, "w", encoding="utf-8") as f_w:
  67. for line in lines:
  68. # line 不包含任意一个错误数据key
  69. if not any([i in line for i in wrong_data_key]):
  70. f_w.write(line)
  71. def clean_data(_file_path):
  72. global index
  73. with open(_file_path, 'r', encoding='utf-8') as file:
  74. for line in file:
  75. # print(line)
  76. line_strip = line.strip()
  77. line_strip = line_strip.replace("'", '"')
  78. line_strip = line_strip.replace("False", "false")
  79. line_strip = line_strip.replace("True", "true")
  80. timestamp = line_strip[:19]
  81. json_data = line_strip[20:]
  82. key = timestamp
  83. data = json.loads(json_data)
  84. if index % 2 == 0:
  85. process_obb(key, data)
  86. else:
  87. process_settle(key, data)
  88. compare_obb_and_settle(key, data)
  89. save_and_clear(key)
  90. index += 1
  91. def process_obb(key, data):
  92. global total_payout_by_bet_odd, bet_101, bet_102
  93. for item in data.values():
  94. option_ = item["option"]
  95. odds_ = item["odds"]
  96. bet_ = item["total_bet"]
  97. odds__bet_ = odds_ * bet_
  98. options_pay_out[option_] = round(odds__bet_, 2)
  99. if option_ == 101:
  100. bet_101 = bet_
  101. elif option_ == 102:
  102. bet_102 = bet_
  103. elif option_ == 103:
  104. options_pay_out[option_] = bet_101 + bet_102
  105. # 开始解析文件
  106. if __name__ == '__main__':
  107. parse_data_from_file(file_path)