Youtube API检测广告

时间:2016-10-11 19:43:35

标签: youtube youtube-api youtube-data-api

有没有办法检测youtube广告,播放时以及结束时?

类似的东西:

function onPlayerStateChange(event) {
   if(event.data == advertisement) {
      console.log("Advertisement is playing");
   }
   if(event.data == advertisementIsOver) {
      console.log("Advertisement has finished playing");
   }
}

我在这里看到了这个问题:

What is the YouTube's PlayerState during pre-roll ad?

我想知道youtube api是否有任何更新?另外,有人可以提供一些youtube广告检测器的代码吗?我不确定在播放广告时如何可靠地捕获。

2 个答案:

答案 0 :(得分:6)

有点晚,但迟到总比没有好......

我目前正在开发专门针对YouTube视频播放操作的Chrome扩展程序。这是我发现用于检测广告是否正在播放的一种方法:

注意:我使用的所有课程和ID都会随着YouTube开发人员的更改而发生变化。

1)首先获取html5视频元素:var mainVideo = document.getElementByClassName("html5-main-video")。目前没有元素ID,但它始终具有类html5-main-video

2)为视频准备播放时设置一个事件处理程序,以检查它是否是广告,并在加载新视频并准备播放mainVideo.oncanplay = isVideoAnAd时触发。

3)当广告正在播放时,进度条为黄色或更具体地rgb(255, 204, 0),并且使用jQuery可以轻松比较此属性

function isVideoAnAd () {
     if($(".ytp-play-progress").css("background-color") === "rgb(255, 204, 0)
     {
        return true;
     }}

为了获得更可靠的结果,您还可以查看movie_player元素classList,看看它是contains("ad-showing")。顺便说一下,movie_player是id。

提示:我用inspect元素

找到了所有这些

这是我发现无需深入YouTube API即可检测广告的唯一可靠方式。

答案 1 :(得分:0)

您可能需要查看此documentation。据说您可以使用在播放广告时调用的onAdStarted()

以下是可能有帮助的相关forumtutorial