使用ossapi获取Osu谱面信息报错:参数'headers'不被支持
问题原因
你报错的核心是**ossapi.Ossapi的初始化方法并不支持headers这个关键字参数**,错误传入不存在的参数导致抛出TypeError。
修改方案
根据ossapi库的设计,自定义请求头(比如User-Agent)有两种常用实现方式:
方式1:直接用user_agent参数(推荐,仅设置User-Agent时使用)
如果只是要设置User-Agent,Ossapi提供了专门的参数,无需手动构造headers字典:
import ossapi api_key = "My api key" # 直接传入user_agent参数替代headers api = ossapi.Ossapi(api_key, user_agent="MyAwesomeApp/1.0") beatmap_id = "1514385" beatmap = api.get_beatmaps(beatmap_id=beatmap_id)[0] filename = f"{beatmap_id}.txt" with open(filename, "w") as f: f.write(f"Title: {beatmap.title}\n") f.write(f"Artist: {beatmap.artist}\n") f.write(f"Creator: {beatmap.creator}\n") f.write(f"Difficulty name: {beatmap.version}\n") f.write(f"Stars: {beatmap.difficulty_rating}\n") f.write(f"Circle size: {beatmap.circle_size}\n") f.write(f"Overall difficulty: {beatmap.overall_difficulty}\n") f.write(f"Approach rate: {beatmap.approach_rate}\n") f.write(f"HP drain: {beatmap.hp_drain}\n") f.write(f"Max combo: {beatmap.max_combo}\n") f.write(f"Length (in seconds): {beatmap.total_length}\n") f.write(f"BPM: {beatmap.bpm}\n") f.write(f"Source: {beatmap.source}\n") f.write(f"Tags: {beatmap.tags}\n") f.write(f"Download link: {beatmap.download_link}\n") print(f"Beatmap information written to {filename}")
方式2:自定义HttpClient(需设置多个请求头时使用)
如果要添加User-Agent以外的其他请求头,可先构造ossapi.HttpClient实例传入headers,再传给Ossapi的http_client参数:
import ossapi api_key = "My api key" headers = {"User-Agent": "MyAwesomeApp/1.0", "X-Custom-Header": "your-value"} # 创建自定义HttpClient http_client = ossapi.HttpClient(headers=headers) # 传入Ossapi实例 api = ossapi.Ossapi(api_key, http_client=http_client) beatmap_id = "1514385" beatmap = api.get_beatmaps(beatmap_id=beatmap_id)[0] # 后续写入文件代码与上述一致,此处省略
补充提示
- 确保你的ossapi是v2.x版本,不同版本API设计有差异,旧版本建议升级:
pip install --upgrade ossapi get_beatmaps返回列表,取第一个元素的逻辑是正确的,单个beatmap_id只会返回一条结果。
内容的提问来源于stack exchange,提问作者Arthur Maciel Batista
相关产品推荐
相关产品推荐

