python - 在 Python 中解析 Discord Bot 的 JSON 输出
问题描述
摘要
我目前正在将 JSON 数组的第一个对象转储到 Discord 中,但我只想要一部分数据,特别是teams
. 我相信我需要编辑第 50 行return(odds_json['data'][0])
,任何人都可以帮助我提取这个特定的数据吗?
这里说转储:
{'id':'19c709db17e33a20f7c88af1a119cef1','sport_key':'basketball_nba','sport_nice':'NBA','teams':['亚特兰大老鹰队','纽约尼克斯队'],'commence_time':1622394647,'home_team ':'亚特兰大老鹰队','网站':[{'site_key':'fanduel','site_nice':'FanDuel','last_update':1622399415,'赔率':{'h2h':[-1350, 700] }}, {'site_key': 'betmgm', 'site_nice': 'BetMGM', 'last_update': 1622399373, '赔率': {'h2h': [-650, 475]}}, {'site_key': ' betrivers', 'site_nice': 'BetRivers', 'last_update': 1622399389, 'odds': {'h2h': [-910, 540]}}, {'site_key': 'draftkings', 'site_nice':'DraftKings','last_update':1622399388,'赔率':{'h2h':[-835, 525]}},{'site_key':'sugarhouse','site_nice':'SugarHouse','last_update ':1622399399,'赔率':{'h2h':[-1000, 575]}},{'site_key':'barstool','site_nice':'Barstool Sportsbook','last_update':1622399403,'赔率': {'h2h': [-1000, 575]}}, {'site_key': 'unibet', 'site_nice': 'Unibet', 'last_update': 1622399400, '赔率': {'h2h': [-1000, 575]}},{'site_key':'betfair','site_nice':'Betfair','last_update':1622399405,'赔率':{'h2h':[-500, 470],'h2h_lay':[- 476, 500]}}, {'site_key':'pointsbetus', 'site_nice': 'PointsBet (US)', 'last_update': 1622399407, 'odds': {'h2h': [-620, 410]}}, {'site_key': 'williamhill_us', 'site_nice' : 'William Hill (US)', 'last_update': 1622399389, 'odds': {'h2h': [-650, 450]}}, {'site_key': 'foxbet', 'site_nice': 'FOX Bet' , 'last_update': 1622399401, '赔率': {'h2h': [-909, 450]}}, {'site_key': 'gtbets', 'site_nice': 'GTbets', 'last_update': 1622399392, '赔率': {'h2h': [-946, 543]}}, {'site_key': 'caesars', 'site_nice': 'Caesars', 'last_update': 1622399398, 'odds': {'h2h': [- 455, 320]}}, {'site_key': 'bovada', 'site_nice': 'Bovada', 'last_update': 1622399102, 'odds': {'h2h': [120, -160]}}, {'site_key': 'mybookieag', 'site_nice': 'MyBookie.ag', 'last_update': 1622399393, '赔率': {'h2h': [-285, 210]}}], 'sites_count': 15}
这是 .py 文件。
import discord
import os
import requests
import json
api_key = os.environ['API_KEY']
client = discord.Client()
def get_odds():
sports_response = requests.get('https://api.the-odds-api.com/v3/sports', params={
'api_key': api_key
})
sports_json = json.loads(sports_response.text)
if not sports_json['success']:
print(
'There was a problem with the sports request:',
sports_json['msg']
)
else:
print('Keep it 200')
sport_key = 'basketball_nba'
odds_response = requests.get('https://api.the-odds-api.com/v3/odds', params={
'api_key': api_key,
'sport': sport_key,
'region': 'us', # uk | us | eu | au
'mkt': 'h2h', # h2h | spreads | totals
'oddsFormat': 'american'
})
odds_json = json.loads(odds_response.text)
if not odds_json['success']:
print(
'There was a problem with the odds request:',
odds_json['msg']
)
else:
# odds_json['data'] contains a list of live and
# upcoming events and odds for different bookmakers.
# Events are ordered by start time (live events are first)
print(
'Successfully found {} events'.format(len(odds_json['data']))
)
return(odds_json['data'][0])
# Check your usage
print('Remaining requests', odds_response.headers['x-requests-remaining'])
print('Used requests', odds_response.headers['x-requests-used'])
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$odds'):
odds = get_odds()
await message.channel.send(odds)
client.run(os.getenv('TOKEN'))
解决方案
赔率响应对象包含事件列表。您目前只返回第一个带有return(odds_json['data'][0])
. (索引 0 只为您提供列表的第一个元素。)
如果你想打印所有的球队,你可以遍历事件并像这样得到每场比赛:
for event in odds_json['data']:
print(event["teams"])
推荐阅读
- lua - 尝试使用 HumanoidRootPart 索引布尔值
- javascript - React 中的 Fetch 在 url 之前添加 localhost
- java - 在 CoroutineDispatcher 中调用 CoroutineDispatcher 时应用程序冻结
- swift - 如何知道集合视图大纲何时展开?
- java - 使用没有范围的 RxJava 调用协程
- c++ - 如何从缓冲区创建接收器写入器?
- c# - 如何从 EventActivity 处理程序或除 OnMessageActivityAsync 之外的任何处理程序调用新对话框?
- assembly - Armv8 程序集 cmp 在运行时冻结
- javascript - 集合与有序集合
- discord.py - 如何修复 discord.py 不发送嵌入?