import pandas as pd from typing import Generator from pytz import timezone from dao.Database import Database from data_model import MysqlConfig, OddsJamOrder, OddsjamBet def generate_oddjams_bet(data: OddsJamOrder) -> Generator[OddsjamBet]: # 根据 start_timestamp 是否小于当前时间两个小时判断要不要去看结果 # 怎么判断一个 oddjam order 是不是下单成功? bet_name = data.home_bet_name sport_books = data.home_sportsbooks if data.away_price > data.away_no_vig_price: bet_name = data.away_bet_name sport_books = data.away_sportsbooks # 选 selected_sportsbook # 时区转换, mysql 中的 game start date 是 utc 时间? 这个不需要 game_start_date = data.start_date my_datetime_with_tz = game_start_date.replace(tzinfo=timezone('UTC')) eastern = timezone('US/Eastern') eastern_datetime = my_datetime_with_tz.astimezone(eastern) game_start_date = eastern_datetime.strftime('%m/%d/%Y, %H:%M EDT') for sport_book in sport_books: yield OddsjamBet( Sportsbook=sport_book, BetName=bet_name, MarketName=data.market, Odds=110, # away price or home price Stake=1, EventName='', # home team vs away team 用这种格式, 需要带vs和两边的空格 Sport=data.sport, League=data.league, GameID=data.game_id, GameStartDate=game_start_date, BetType='Positive EV', Notes=data.bet_id ) if __name__ == '__main__': config_file_path = 'config\mysql_config.json' mysql_config = MysqlConfig.parse_file(config_file_path) dao = Database(mysql_config) # query select_query = "SELECT * FROM bet.oddsjam_order limit 10;" raw_data_list = dao.fetchall(query=select_query) order_data_list = [OddsJamOrder(**data) for data in raw_data_list] bet_list = [] for order in order_data_list: bet_list.extend(list(generate_oddjams_bet(order))) bet_list = [data.model_dump() for data in bet_list] bet_df = pd.DataFrame(bet_list) bet_df.to_csv('bet.csv', index=False, encoding='utf-8-sig')