You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Youtube API搜索相关性问题:返回结果不符预期如何解决?

解决YouTube API v3搜索结果不相关的问题

针对你遇到的搜索结果要么是无关热门视频、要么是低播放量翻唱的问题,可以通过以下几个关键优化来解决:

1. 限定视频分类为音乐

添加videoCategoryId参数指定音乐分类(ID为10),直接过滤非音乐类视频,大幅减少无关内容干扰。

2. 精确匹配关键词

给核心关键词加上双引号,强制API搜索完整匹配的内容,比如将查询词改为'"Cherry Wine" Hozier',避免模糊匹配带来的无关结果。

3. 结合播放量筛选高热度相关视频

仅靠order参数无法保证结果质量,建议先获取搜索结果的视频ID,再调用videos.list接口获取播放量等详细数据,筛选出播放量达标的视频(比如≥10万),再返回最终结果。

修改后的完整代码

from googleapiclient.discovery import build

google_api_key = "你的API密钥"
youtube = build('youtube', 'v3', developerKey=google_api_key)

class VideoUrls:
    def __init__(self, name, url, view_count):
        self.name = name
        self.url = url
        self.view_count = view_count

    def __str__(self):
        return f"\n视频名称: {self.name}\n链接: {self.url}\n播放量: {self.view_count}"

def youtube_request(query, results, min_views=100000):
    # 第一步:带优化参数的搜索请求
    search_request = youtube.search().list(
        part="snippet",
        type="video",
        maxResults=results * 2,  # 多获取一些结果用于筛选
        q=query,
        order="relevance",
        videoCategoryId="10",  # 限定音乐分类
    )
    search_response = search_request.execute()

    # 提取所有视频ID
    video_ids = [item['id']['videoId'] for item in search_response['items']]

    # 第二步:获取视频详细统计数据(播放量)
    videos_request = youtube.videos().list(
        part="snippet,statistics",
        id=",".join(video_ids)
    )
    videos_response = videos_request.execute()

    # 筛选符合播放量要求的视频
    filtered_videos = []
    for item in videos_response['items']:
        view_count = int(item['statistics'].get('viewCount', 0))
        if view_count >= min_views:
            name = item['snippet']['title']
            url = f"https://www.youtube.com/watch?v={item['id']}"
            filtered_videos.append(VideoUrls(name, url, view_count))
    
    # 按播放量降序排序,取指定数量的结果
    filtered_videos.sort(key=lambda x: x.view_count, reverse=True)
    return filtered_videos[:results]

# 使用精确匹配的查询词
videos = youtube_request('"Cherry Wine" Hozier', 5)
for video in videos:
    print(video)

优化说明

  • 搜索时请求results*2数量的结果,留足筛选空间,避免因播放量过滤后结果不足。
  • 添加min_views参数可自定义播放量门槛,按需调整(比如改成10000针对小众歌曲)。
  • 新增播放量显示,方便验证结果质量。

内容的提问来源于stack exchange,提问作者TheRaelHab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 05:43:14