为何Discogs搜索返回的data无videos字段,但Python脚本仍能提取YouTube链接?
问题根源:Discogs API的接口差异
你遇到的情况是因为Discogs不同API接口的返回数据结构不一样:**搜索接口(/database/search)的结果里确实没有videos字段,但单个发行版详情接口(/releases/{release_id})**会包含这个字段。
原脚本能成功提取YouTube链接,核心是做了两步操作:
- 第一步:调用搜索接口,拿到目标发行版的
release_id - 第二步:用拿到的
release_id调用详情接口,从返回的完整数据里提取videos字段中的YouTube链接
你简化代码测试时只查看了第一步搜索的结果,自然找不到videos字段,但原脚本里肯定藏着这个二次请求的逻辑。
举个核心逻辑的示例:
import requests # 1. 搜索接口获取发行版ID search_params = {"q": "目标专辑名", "type": "release"} search_result = requests.get("https://api.discogs.com/database/search", params=search_params).json() target_release_id = search_result["results"][0]["id"] # 2. 详情接口获取视频链接 release_detail = requests.get(f"https://api.discogs.com/releases/{target_release_id}").json() for video in release_detail.get("videos", []): if "youtube.com" in video["uri"]: # 写入文件的逻辑 with open("youtube_links.txt", "a") as f: f.write(video["uri"] + "\n")
回去检查原脚本,肯定能找到类似调用/releases/{id}接口的代码,这就是它能拿到YouTube链接的关键。
内容的提问来源于stack exchange,提问作者microhaus
相关产品推荐
相关产品推荐

