如何通过YouTube API获取视频中授权内容的URL
获取YouTube视频授权内容URL的解决方案
一、YouTube Data API 实现方案
你当前代码请求的part参数未覆盖所需的授权内容相关字段,可按以下方式调整:
- 确认权限限制:如果目标是YouTube官方标注的Content ID匹配的版权授权内容,普通API Key无法获取这类信息,需申请YouTube Content ID API的访问权限(仅面向版权方或合作伙伴,需单独提交申请)。
- 调整
part参数并解析内容:如果授权URL是视频作者自行添加的(比如描述区、视频卡片链接),需补充请求相关part并自行解析:- 添加
player:获取视频播放器内嵌的关联链接信息 - 利用
snippet中的description字段,解析其中的URL(很多作者会把授权链接放在描述里)
修改后的代码示例:
def youtube_videos(options): youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=DEVELOPERKEY) search_response = youtube.videos().list( part = 'snippet, statistics, contentDetails, status, player', id = options, maxResults = 1 ).execute() result = [] for item in search_response['items']: # 从视频描述中提取URL description = item['snippet']['description'] import re # 正则匹配HTTP/HTTPS链接 license_urls = re.findall(r'https?://\S+', description) item['extracted_license_urls'] = license_urls result.append(item) print(result) - 添加
二、非API实现方案(网页抓取)
若无法获取官方API权限,可尝试网页抓取方式提取授权URL(注意:可能违反YouTube服务条款,需谨慎使用):
- 使用
requests模拟浏览器请求视频页面 - 用
BeautifulSoup解析HTML,定位到授权内容对应的DOM元素(需根据页面实际CSS类或标签调整选择器) - 提取元素中的链接地址
示例代码:
import requests from bs4 import BeautifulSoup def get_license_url(video_id): url = f"https://www.youtube.com/watch?v={video_id}" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') # 示例选择器,需根据实际页面结构调整 license_links = soup.select('a[href*="copyright"]') license_urls = [link['href'] for link in license_links] return license_urls # 调用示例 print(get_license_url("你的视频ID"))
参考提示
- 查阅YouTube Data API官方文档中
videos.list接口的part参数说明,明确各字段覆盖范围 - 若需获取官方版权授权信息,重点了解Content ID API的申请条件与使用规范
内容的提问来源于stack exchange,提问作者hyang sun
相关产品推荐
相关产品推荐

