跳过bilibili充电鸣谢

自动跳过视频最后的充电鸣谢页面

< Feedback on 跳过bilibili充电鸣谢

Review: Good - script works

§
Posted: 06.04.2022

好用。建议加一个监听条件,防止多次点击。

(function () {
    let found = 0;
    // 定时器
    let id = setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0].click();
            found = 1;
        }
        if (found) clearInterval(id); // 已点击,清除定时器
    }, 100)
})();
§
Posted: 06.04.2022
Edited: 06.04.2022

好用。建议加一个监听条件,防止多次点击。

(function () {
    let found = 0;
    // 定时器
    let id = setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0].click();
            found = 1;
        }
        if (found) clearInterval(id); // 已点击,清除定时器
    }, 100)
})();

刚刚发现这样会出现只能够跳过一次的情况。所以不行。可以用 remove 来解决:

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

§
Posted: 19.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();
§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

好吧,的确有问题。试试这个:

(function () {
    function start() {
        let found = 0;
        // 定时器
        let id = setInterval(() => {
            // 判断是否加载充电鸣谢
            if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
                // 模拟点击
                document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0].click();
                found = 1;
            }
            if (found) {
                clearInterval(id); // 已点击,清除定时器
                start();
            }
        }, 100)
    }
    start();
})();
§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

然而发现重复调用那个 start 函数其实和原脚本没什么差别,应该还是会存在多次点击的问题。所以换了一种实现(依赖于 jQuery 和 arrive.js),效率更高,而且应该没什么其他问题:

// ==UserScript==
// @name         跳过bilibili充电鸣谢
// @namespace    https://plushine.cn
// @version      1.3
// @description  自动跳过视频最后的充电鸣谢页面
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @author       XJHui
// @match        https://www.bilibili.com/video/*
// @grant        GM_log
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @grant        GM_deleteValue
// @license      MIT License
// ==/UserScript==

(function () {
    $(document).arrive('.bilibili-player-electric-panel-jump-content', function(){
        $('.bilibili-player-electric-panel-jump-content').trigger('click');
    });
})();
§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

然而发现重复调用那个 start 函数其实和原脚本没什么差别,应该还是会存在多次点击的问题。所以换了一种实现(依赖于 jQuery 和 arrive.js),效率更高,而且应该没什么其他问题:

// ==UserScript==
// @name         跳过bilibili充电鸣谢
// @namespace    https://plushine.cn
// @version      1.3
// @description  自动跳过视频最后的充电鸣谢页面
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @author       XJHui
// @match        https://www.bilibili.com/video/*
// @grant        GM_log
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @grant        GM_deleteValue
// @license      MIT License
// ==/UserScript==

(function () {
    $(document).arrive('.bilibili-player-electric-panel-jump-content', function(){
        $('.bilibili-player-electric-panel-jump-content').trigger('click');
    });
})();

很怪 我这里还是只能跳过一次

§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

然而发现重复调用那个 start 函数其实和原脚本没什么差别,应该还是会存在多次点击的问题。所以换了一种实现(依赖于 jQuery 和 arrive.js),效率更高,而且应该没什么其他问题:

// ==UserScript==
// @name         跳过bilibili充电鸣谢
// @namespace    https://plushine.cn
// @version      1.3
// @description  自动跳过视频最后的充电鸣谢页面
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @author       XJHui
// @match        https://www.bilibili.com/video/*
// @grant        GM_log
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @grant        GM_deleteValue
// @license      MIT License
// ==/UserScript==

(function () {
    $(document).arrive('.bilibili-player-electric-panel-jump-content', function(){
        $('.bilibili-player-electric-panel-jump-content').trigger('click');
    });
})();

很怪 我这里还是只能跳过一次

不知道是不是因为没有禁用原脚本。我这里工作正常。可以换其他脚本,比如 https://greasyfork.org/zh-CN/scripts/432351-%E8%B7%B3%E8%BF%87bilibili%E5%85%85%E7%94%B5%E9%B8%A3%E8%B0%A2

§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

然而发现重复调用那个 start 函数其实和原脚本没什么差别,应该还是会存在多次点击的问题。所以换了一种实现(依赖于 jQuery 和 arrive.js),效率更高,而且应该没什么其他问题:

// ==UserScript==
// @name         跳过bilibili充电鸣谢
// @namespace    https://plushine.cn
// @version      1.3
// @description  自动跳过视频最后的充电鸣谢页面
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @author       XJHui
// @match        https://www.bilibili.com/video/*
// @grant        GM_log
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @grant        GM_deleteValue
// @license      MIT License
// ==/UserScript==

(function () {
    $(document).arrive('.bilibili-player-electric-panel-jump-content', function(){
        $('.bilibili-player-electric-panel-jump-content').trigger('click');
    });
})();

很怪 我这里还是只能跳过一次

不知道是不是因为没有禁用原脚本。我这里工作正常。可以换其他脚本,比如 https://greasyfork.org/zh-CN/scripts/432351-%E8%B7%B3%E8%BF%87bilibili%E5%85%85%E7%94%B5%E9%B8%A3%E8%B0%A2

我禁用了原脚本
嗯..这个脚本也是不行
我又换Edge + Tampermonkey 试了一下,还是有同样的问题。
不知道你有没有理解我指的问题,我是指:在不开启自动连播的情况下,触发一次跳过后,拖回进度条等他播放完毕,无法二次触发跳过。
可以提供一下你的运行环境吗?

§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

然而发现重复调用那个 start 函数其实和原脚本没什么差别,应该还是会存在多次点击的问题。所以换了一种实现(依赖于 jQuery 和 arrive.js),效率更高,而且应该没什么其他问题:

// ==UserScript==
// @name         跳过bilibili充电鸣谢
// @namespace    https://plushine.cn
// @version      1.3
// @description  自动跳过视频最后的充电鸣谢页面
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @author       XJHui
// @match        https://www.bilibili.com/video/*
// @grant        GM_log
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @grant        GM_deleteValue
// @license      MIT License
// ==/UserScript==

(function () {
    $(document).arrive('.bilibili-player-electric-panel-jump-content', function(){
        $('.bilibili-player-electric-panel-jump-content').trigger('click');
    });
})();

很怪 我这里还是只能跳过一次

不知道是不是因为没有禁用原脚本。我这里工作正常。可以换其他脚本,比如 https://greasyfork.org/zh-CN/scripts/432351-%E8%B7%B3%E8%BF%87bilibili%E5%85%85%E7%94%B5%E9%B8%A3%E8%B0%A2

我禁用了原脚本
嗯..这个脚本也是不行
我又换Edge + Tampermonkey 试了一下,还是有同样的问题。
不知道你有没有理解我指的问题,我是指:在不开启自动连播的情况下,触发一次跳过后,拖回进度条等他播放完毕,无法二次触发跳过。
可以提供一下你的运行环境吗?

你不这么说一下我怕是这辈子都不可能理解你的问题了...

(function () {
    function start(){
        $(document).arrive('.bilibili-player-electric-panel', {fireOnAttributesModification: true, onceOnly: true}, function(){
            $('.bilibili-player-electric-panel-jump-content').trigger('click');
            start();
        });
    }
    start();
})();
§
Posted: 20.05.2022

原作者的代码存在跳过后回调视频进度条后,暂停,会出现播放结束页面的问题。
试了试你的代码,不存在上述问题。
但你的代码(更新后的)在我这里只会跳过一次。
Chrome
Tampermonkey v4.16.1

试试

(function () {
    // 定时器
    setInterval(() => {
        // 判断是否加载充电鸣谢
        if (document.getElementsByClassName('bilibili-player-electric-panel-jump')[0]) {
            // 模拟点击
            let el = document.getElementsByClassName('bilibili-player-electric-panel-jump-content')[0];
            el.click();
            el.remove(); // 移除,防止重复点击
        }
    }, 100);
})();

我试的就是这个
第二次出现充电页面的时候跳过按钮已经被移除了,不会被模拟点击。

然而发现重复调用那个 start 函数其实和原脚本没什么差别,应该还是会存在多次点击的问题。所以换了一种实现(依赖于 jQuery 和 arrive.js),效率更高,而且应该没什么其他问题:

// ==UserScript==
// @name         跳过bilibili充电鸣谢
// @namespace    https://plushine.cn
// @version      1.3
// @description  自动跳过视频最后的充电鸣谢页面
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
// @author       XJHui
// @match        https://www.bilibili.com/video/*
// @grant        GM_log
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @grant        GM_deleteValue
// @license      MIT License
// ==/UserScript==

(function () {
    $(document).arrive('.bilibili-player-electric-panel-jump-content', function(){
        $('.bilibili-player-electric-panel-jump-content').trigger('click');
    });
})();

很怪 我这里还是只能跳过一次

不知道是不是因为没有禁用原脚本。我这里工作正常。可以换其他脚本,比如 https://greasyfork.org/zh-CN/scripts/432351-%E8%B7%B3%E8%BF%87bilibili%E5%85%85%E7%94%B5%E9%B8%A3%E8%B0%A2

我禁用了原脚本
嗯..这个脚本也是不行
我又换Edge + Tampermonkey 试了一下,还是有同样的问题。
不知道你有没有理解我指的问题,我是指:在不开启自动连播的情况下,触发一次跳过后,拖回进度条等他播放完毕,无法二次触发跳过。
可以提供一下你的运行环境吗?

你不这么说一下我怕是这辈子都不可能理解你的问题了...

(function () {
    function start(){
        $(document).arrive('.bilibili-player-electric-panel', {fireOnAttributesModification: true, onceOnly: true}, function(){
            $('.bilibili-player-electric-panel-jump-content').trigger('click');
            start();
        });
    }
    start();
})();

完美解决了!
谢谢

Post reply

Sign in to post a reply.