You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过YouTube API判断视频是否包含注释?

判断YouTube视频是否包含注释的解决方案

嘿,我之前也遇到过这个困扰!YouTube Data API确实没有直接提供视频是否包含注释的字段,但我们可以通过YouTube Player API来实现这个需求,这是官方支持的方法,靠谱性更高。

核心思路

YouTube Player API提供了getVideoAnnotations()方法,能够获取当前加载视频的所有注释内容。如果返回的数组长度大于0,就说明视频存在注释;反之则没有。我们可以根据这个结果来动态控制注释开关的启用状态,以及对应的iv_load_policy参数。

具体实现步骤

  1. 加载YouTube Player API
    在页面中引入Player API的脚本,确保在使用播放器前API已加载完成:

    <script src="https://www.youtube.com/iframe_api"></script>
    
  2. 初始化播放器并检查注释
    创建播放器实例,在onReady回调中调用getVideoAnnotations()来判断是否存在注释:

    let player;
    function onYouTubeIframeAPIReady() {
      player = new YT.Player('player', {
        height: '360',
        width: '640',
        videoId: 'YOUR_VIDEO_ID', // 替换为你的目标视频ID
        events: {
          'onReady': onPlayerReady
        }
      });
    }
    
    function onPlayerReady(event) {
      const annotations = event.target.getVideoAnnotations();
      if (annotations.length > 0) {
        // 存在注释,启用注释开关,设置iv_load_policy=1(默认显示注释)
        console.log("视频包含注释");
        // 这里可以添加启用注释开关的逻辑
      } else {
        // 无注释,禁用注释开关,设置iv_load_policy=3(强制隐藏注释)
        console.log("视频无注释");
        // 这里可以添加禁用注释开关的逻辑
      }
    }
    
  3. 动态调整播放器参数(可选)
    如果需要在判断后更新播放器的注释显示状态,可以调用loadVideoById()方法重新加载视频并指定iv_load_policy参数:

    // 示例:无注释时重新加载视频并隐藏注释
    player.loadVideoById({
      videoId: 'YOUR_VIDEO_ID',
      iv_load_policy: 3
    });
    

注意事项

  • 这个方法需要嵌入YouTube播放器,如果你不想在页面中展示播放器,可以将其设置为极小尺寸(比如1x1像素)并隐藏,但要注意遵守YouTube的服务条款。
  • getVideoAnnotations()返回的是注释对象数组,每个对象包含注释的位置、类型等信息,我们只需要判断数组长度就能得到结果。
  • 尽量避免网页抓取的方式判断注释——YouTube页面结构经常变动,且这种操作可能违反服务条款,稳定性和合规性都没保障。

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

火山引擎 最新活动