121 lines
5.4 KiB
Python
121 lines
5.4 KiB
Python
from datetime import datetime
|
||
from typing import Optional, Union, List, Dict
|
||
from pydantic import BaseModel, Field, Json
|
||
|
||
|
||
class MysqlConfig(BaseModel):
|
||
host: str
|
||
port: int
|
||
db_name: str
|
||
user: str
|
||
password: str
|
||
|
||
|
||
class OddsjamOrderStatus:
|
||
def __init__(self, data):
|
||
if data.get("home_edge_percent") is not None:
|
||
self.home_away = "home"
|
||
else:
|
||
self.home_away = "away"
|
||
|
||
self.sportsbooks = data.get(self.home_away + "_sportsbooks")
|
||
self.bet_name = data.get(self.home_away + "_bet_name")
|
||
self.market = data.get("market")
|
||
self.price = data.get(self.home_away + "_price")
|
||
self.stake = 1
|
||
self.event_name = f'{data.get("home_team")} vs {data.get("away_team")}'
|
||
self.sport = data.get("sport")
|
||
self.league = data.get("league")
|
||
self.game_id = data.get("game_id")
|
||
self.bet_type = 'Positive EV'
|
||
self.bet_id = data.get("bet_id")
|
||
self.create_time = data.get("create_time")
|
||
self.start_timestamp = data.get("start_timestamp")
|
||
|
||
|
||
def to_dict(self):
|
||
return {
|
||
"home_away": self.home_away,
|
||
"sportsbooks": self.sportsbooks,
|
||
"bet_name": self.bet_name,
|
||
"market": self.market,
|
||
"price": self.price,
|
||
"stake": self.stake,
|
||
"event_name": self.event_name,
|
||
"sport": self.sport,
|
||
"league": self.league,
|
||
"game_id": self.game_id,
|
||
"bet_type": self.bet_type,
|
||
"bet_id": self.bet_id,
|
||
"start_timestamp": self.start_timestamp,
|
||
"create_time": self.create_time
|
||
}
|
||
|
||
|
||
class OddsJamOrder(BaseModel):
|
||
id: str = Field(..., description="主键,自增ID")
|
||
bet_id: Optional[str] = Field(None, description="投注ID")
|
||
game_id: Optional[str] = Field(None, description="比赛ID")
|
||
away_bet_name: Optional[str] = Field(None, description="客队投注名称")
|
||
home_bet_name: Optional[str] = Field(None, description="主队投注名称")
|
||
away_no_vig_price: Optional[float] = Field(None, description="客队无佣金价格")
|
||
home_no_vig_price: Optional[float] = Field(None, description="主队无佣金价格")
|
||
away_price: Optional[float] = Field(None, description="客队价格")
|
||
home_price: Optional[float] = Field(None, description="主队价格")
|
||
away_sportsbooks: Optional[Json[List[str]]] = Field(
|
||
None, description="客队的体育书籍,JSON格式")
|
||
home_sportsbooks: Optional[Json[List[str]]] = Field(
|
||
None, description="主队的体育书籍,JSON格式")
|
||
is_live: Optional[bool] = Field(None, description="是否为直播")
|
||
in_game_status: Optional[str] = Field(None, description="比赛状态")
|
||
period: Optional[str] = Field(None, description="比赛时段")
|
||
clock: Optional[str] = Field(None, description="比赛时钟")
|
||
last_play: Optional[str] = Field(None, description="最后一次比赛")
|
||
home_score: Optional[int] = Field(None, description="主队得分")
|
||
away_score: Optional[int] = Field(None, description="客队得分")
|
||
sport: Optional[str] = Field(None, description="运动类型")
|
||
league: Optional[str] = Field(None, description="联赛")
|
||
market: Optional[str] = Field(None, description="市场")
|
||
market_width: Optional[float] = Field(None, description="市场宽度")
|
||
percentage: Optional[float] = Field(None, description="百分比")
|
||
start_date: Optional[datetime] = Field(None, description="比赛开始日期时间")
|
||
home_team: Optional[str] = Field(None, description="主队")
|
||
away_team: Optional[str] = Field(None, description="客队")
|
||
timestamp: Optional[float] = Field(None, description="时间戳")
|
||
away_deep_link_map: Optional[str] = Field(
|
||
None, description="客队深度链接映射,JSON格式")
|
||
home_deep_link_map: Optional[str] = Field(
|
||
None, description="主队深度链接映射,JSON格式")
|
||
status: Optional[str] = Field(None, description="状态")
|
||
away_edge_percent: Optional[float] = Field(None, description="客队边缘百分比")
|
||
bet_placed: Optional[bool] = Field(None, description="是否下注")
|
||
same_market_bet_placed: Optional[bool] = Field(
|
||
None, description="是否在同一市场下注")
|
||
same_game_bet_placed: Optional[bool] = Field(None, description="是否在同一比赛下注")
|
||
away_rec_size: Optional[int] = Field(None, description="客队推荐大小")
|
||
rec_size: Optional[int] = Field(None, description="推荐大小")
|
||
home_edge_percent: Optional[float] = Field(None, description="主队边缘百分比")
|
||
order_status: int = Field(0, description="订单状态")
|
||
amount: Optional[int] = Field(None, description="下单金额,整数")
|
||
create_time: Optional[str] = Field(None, description="创建时间")
|
||
sportsbook_orderid: Optional[str] = Field(None, description="博彩公司订单ID")
|
||
home_or_away: Optional[str] = Field(None, description="主队或客队")
|
||
start_timestamp: Optional[int] = Field(None, description="开始时间戳")
|
||
selected_sportsbook: Optional[str] = Field(None, description="选定的博彩公司")
|
||
bet_status: Optional[str] = Field(None, description="投注状态")
|
||
|
||
|
||
class OddsjamBet(BaseModel):
|
||
Sportsbook: str
|
||
BetName: str
|
||
MarketName: str
|
||
Odds: int
|
||
Stake: int
|
||
EventName: str
|
||
Sport: str
|
||
League: str
|
||
GameID: str
|
||
GameStartDate: str
|
||
BetType: str
|
||
Notes: str
|