如何在Python函数间传递多个event_id构建API请求URL
解决方法
1. 修改event_info函数,收集所有event_id并返回
原来的代码用global event_id会在循环中不断覆盖变量,最终只保留最后一个ID。改成用列表收集所有符合条件的event_id,最后返回这个列表:
def event_info(): event_ids = [] # 用列表存储所有符合条件的event_id # US FOOTBALL EVENT INFO API LINK link = f'{Base_url}/event/group/{Sport_id}.json?app_id={AppID}&app_key={AppKey}&local={Country}&site={Site}' data = requests.get(link).json() # 直接用.json()解析响应,简化代码 # JSON PARSE for event_data in data['events']: if event_data['group'] == 'NFL' and 'MATCH' in event_data['tags']: competition = event_data['group'] event_id = event_data['id'] event_ids.append(event_id) # 将当前event_id加入列表 event_name = event_data['name'] event_start = event_data['start'] event_status = event_data['state'] print(competition, event_id, event_name, event_start, event_status) # WRITE TO FIRESTORE doc_ref = db.collection(u'unibet_au').document(u'us_football').collection(u'nfl_event_info').document(f'{event_id}') doc_ref.set({ u'competition': competition, u'event_id': event_id, u'event_name': event_name, u'event_start': event_start, u'event_status': event_status, u'timestamp': firestore.SERVER_TIMESTAMP, }) return event_ids # 返回所有收集到的event_id
2. 修改match_odds函数,接收event_ids列表并生成正确URL
让函数接收event_ids参数,用逗号将所有ID拼接成字符串后插入URL:
def match_odds(event_ids): # 将列表转成逗号分隔的字符串(数字ID需转成字符串类型) event_ids_str = ','.join(map(str, event_ids)) # US FOOTBALL MATCH ODDS API LINK url = f'{Base_url}/betoffer/event/{event_ids_str}.json?app_id={AppID}&app_key={AppKey}&local={Country}&site={Site}' print(url) # 此处可添加API请求及数据处理逻辑,例如: # response = requests.get(url) # odds_data = response.json() # 处理赔率数据...
3. 主函数中串联两个函数
在__main__块中先调用event_info获取所有event_id,再传给match_odds执行:
if __name__ == "__main__": all_event_ids = event_info() if all_event_ids: # 确保收集到有效ID后再调用 match_odds(all_event_ids)
修改完成后,match_odds生成的URL会包含所有符合条件的event_id,格式与你期望的示例一致。
内容的提问来源于stack exchange,提问作者DrewS
相关产品推荐
相关产品推荐

