JavaScript自动切换并播放视频 | Tampermonkey

JavaScript自动切换并播放视频 | Tampermonkey

背景:接上篇文章。昨天的脚本已经实现了自动在视频播放过程中点击突然出现的按钮使之继续播放,但是这还存在很多问题。

  1. 每次视频播放完需要自己切换到下一个视频
  2. 每次视频都需要手动在控制台中输入代码

如何获取需要播放的视频?

观察源代码。

<li class="">
    <a style="width:70%;color:red"
    href="/fzdx/play?v_id=1119&r_id=4103&r=video&pg=">一、历史渊源和现实基础</a>
    <span>00:27:33</span>
</li>
<li class="video_red1">
    <a style="width:70%;"
    href="/fzdx/play?v_id=1119&r_id=4104&r=video&pg=">二、显著特点和要求(一)</a>
    <span>00:39:44</span>
</li>
<li class="">
    <a style="width:70%;"
    href="/fzdx/play?v_id=1119&r_id=4105&r=video&pg=">三、显著特点和要求(二)</a>
    <span>00:16:58</span>
</li>
<li class="">
    <a style="width:70%;"
    href="/fzdx/play?v_id=1119&r_id=4106&r=video&pg=">四、思想根基和比较优势</a>
    <span>00:23:51</span>
</li>

可以看到,每个视频的url都被存在了a标签中,我们点击a标签就可以跳转到对应的视频页面。

值得注意的是,已经看完了的视频的a标签会被设置为红色,如下图。

在这里插入图片描述

我们仔细观察源代码也可以发现,第一个视频的a标签有着的color:red的样式。所以我们的目标a标签就是那些样式中color为空的a。

还有一个小细节,该页面上还有一些a标签,它们对应的不是视频列表中的视频。比如

 <a href="#" class="video_bottom_tlq">课程讨论区</a>
 <a href="javascript:void(0);" class="note_save">保存</a>

我们发现这些a标签和视频列表中的a有一个明显区别,这些a标签都有class名。所以我们可以根据这一点来进行区分。

根据以上信息我们可以写出以下代码。

    var target_a;   //找到第一个还没有看的视频【a不是红色的】
    var as = document.getElementsByTagName("a");
    for (i = 0; i < as.length; i++)
    {
        if (as[i].className == "" && as[i].style.color == "")
        {
            target_a = as[i];
            break;
        }
    }

得到的target_a就是视频列表中还没看的视频里的第一个视频。

什么时候对target_a进行点击呢?

我们已经得到了target_a。但是还需要思考什么时候进行点击。

当前的视频还在播放,我们就直接点击下一个,这样肯定不行,所以我们利用<video>的标签的进度条是否已经到最后来判断视频是否播放完。如果播放完,那就点击target_a。如果没有播放完,就执行点击确定框的代码(视频会时不时冒出一个框让你点击,并自动暂停,点击后才能继续播放。这段代码在我昨天的文章中已经写出)。

代码如下。

    var video = document.getElementById("video");   
    if (video.currentTime == video.duration && target_a)    //如果视频已经播放完,并且有剩余视频,则点击下一个视频进行观看
    {
        target_a.click();
    }
    else if (video.currentTime < video.duration)    //在视频没有播放完的情况下若弹出框,进行点击。
    {
        var btn = document.querySelector('.public_submit'); 
        if(btn)
            btn.click();
    }

遇到的问题1:每个视频开头点击确定开始后报错

NotAllowedError: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

原因是浏览器为了限制恶意自动播放视频的js脚本,对脚本进行了限制。解决办法是先将视频静音,之后就能利用js自动播放了。

改进代码如下

    var video = document.getElementById("video");   
    if (video.currentTime == video.duration && target_a)    //如果视频已经播放完,并且有剩余视频,则点击下一个视频进行观看
    {
        target_a.click();
    }
    else if (video.currentTime < video.duration)    //在视频没有播放完的情况下若弹出框,进行点击。
    {
        if (video.paused)
        {
            video.muted = true;	//设置为静音
            video.play(1);  //播放
        }
        var btn = document.querySelector('.public_submit'); 
        if(btn)
            btn.click();
    }

遇到问题2:每次切换视频即切换页面后控制台的代码被重置

因为每次点击视频链接后,相当于打开了一个新的网页,这时候控制台的代码就无了。查询过后发现油猴脚本[Tampermonkey]可以实现在页面加载后自动执行用户自定义的js脚本。

成功实现自动切换视频并播放的操作。

最终代码

setInterval(function(){
    var target_a;   //找到第一个还没有看的视频【a不是红色的】
    var as = document.getElementsByTagName("a");
    for (i = 0; i < as.length; i++)
    {
        if (as[i].className == "" && as[i].style.color == "")
        {
            target_a = as[i];
            break;
        }
    }

    var video = document.getElementById("video");   
    if (video.currentTime == video.duration && target_a)    //如果视频已经播放完,并且有剩余视频,则点击下一个视频进行观看
    {
        target_a.click();
    }
    else if (video.currentTime < video.duration)    //在视频没有播放完的情况下若弹出框,进行点击。
    {
        if (video.paused)
        {
            video.muted = true;
            video.play(1);
        }
        var btn = document.querySelector('.public_submit'); 
        if(btn)
            btn.click();
    }
}, 1000)

参考链接

https://blog.csdn.net/qq_41376740/article/details/80789835

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Tampermonkey 是一款浏览器插件,它允许用户通过自定义脚本修改网页的行为。当使用 Tampermonkey 时,我们可以编写脚本来实现倍速播放视频的功能。 要实现倍速播放视频,首先要编写一个脚本。下面是一个简单的例子: ```javascript // ==UserScript== // @name 倍速播放视频脚本 // @namespace http://your-namespace // @version 1.0 // @description 在视频播放器中增加倍速播放功能 // @author Your Name // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // 在此处修改倍速播放的速度,如2表示两倍速播放 var playbackSpeed = 2; // 获取到视频元素 var videoElement = document.querySelector('video'); // 修改播放速度为指定倍速 if (videoElement) { videoElement.playbackRate = playbackSpeed; } })(); ``` 在上面的例子中,我们首先定义了一个变量 `playbackSpeed`,该变量表示要设置的倍速值。然后,我们使用 `document.querySelector` 方法获取到网页中的视频元素,然后通过设置 `playbackRate` 属性将播放速度修改为指定的倍速值。 使用 Tampermonkey 插件来使用该脚本,可以按照以下步骤操作: 1. 安装 Tampermonkey 插件,并启用。 2. 安装上述脚本,或者创建一个新的脚本并粘贴上述代码。 3. 根据需要,更新脚本中的 `playbackSpeed` 变量的值以指定所需的倍速播放值。 4. 打开一个包含视频的网页。 5. 视频开始播放时,Tampermonkey自动检测到视频元素,并将播放速度修改为指定的倍速。 以上就是使用 Tampermonkey 插件来实现倍速播放视频的方法。通过自定义脚本,我们可以轻松地修改网页行为,实现各种自定义功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值