油猴脚本 b 站直播 自动选择原画和网页模式

80 天前
 shwomen1234fs

目前没有找到 b 站直播自动选择原画的油猴脚本,自己开发了一个,分享给大家使用


// ==UserScript==
// @name         哔哩哔哩直播自动原画
// @version      1.0
// @license      MIT
// @author       joe
// @icon         https://www.bilibili.com/favicon.ico
// @match        *://live.bilibili.com/*
// ==/UserScript==

(function () {
    'use strict';
    // 创建一个鼠标移动事件
    var event = new MouseEvent('mousemove', {
        'view': unsafeWindow,
        'bubbles': true,
        'cancelable': true
    });


    // 创建一个鼠标进入事件
    var mouseenterEvent = new MouseEvent('mouseenter', {
        'view': unsafeWindow,
        'bubbles': true,
        'cancelable': true
    });
    // 创建一个鼠标移出事件
    var mouseleaveEvent = new MouseEvent('mouseleave', {
        'view': unsafeWindow,
        'bubbles': true,
        'cancelable': true
    });
    // 等待 "live-player" 元素加载完成
    var checkPlayerExist = setInterval(function() {
        var player = document.getElementById('live-player');
        if (player !== null) {
            clearInterval(checkPlayerExist);

            // 视频 触发鼠标移动事件
            player.dispatchEvent(event);
          
            // 网页全屏
            var webpageMode = document.querySelector('#web-player-controller-wrap-el > div > div > div.right-area.svelte-4rgwwa > div:nth-child(2)');
            if (webpageMode !== null) {
                // 触发鼠标移动事件
                webpageMode.dispatchEvent(mouseenterEvent);

                setTimeout(function() {
                    var qualityOption = Array.from(document.querySelectorAll('.list-it.svelte-s2ukfj')).find(el => el.textContent.trim() === '原画');
                    if (qualityOption !== undefined) {
                        var webpageModeIcon = document.querySelector('#web-player-controller-wrap-el > div > div > div.right-area.svelte-4rgwwa > div:nth-child(2) > div:nth-child(2) > span');
                        if (webpageModeIcon !== null) {
                            webpageModeIcon.click();
                        }

                        // webpageMode.dispatchEvent(mouseleaveEvent);

                    }
                }, 500); // 等待 500 毫秒
            }

            player.dispatchEvent(event);

            // 立即检查 "quality-wrap" 元素是否出现, 选择 ‘原画’
            var qualityWrap = document.querySelector('.quality-wrap.svelte-s2ukfj');
            if (qualityWrap !== null) {
                // 触发鼠标移动事件
                qualityWrap.dispatchEvent(mouseenterEvent);

                setTimeout(function() {
                    var qualityOption = Array.from(document.querySelectorAll('.list-it.svelte-s2ukfj')).find(el => el.textContent.trim() === '原画');
                    if (qualityOption !== undefined) {
                        // 触发点击事件
                        qualityOption.click();

                        qualityWrap.dispatchEvent(mouseleaveEvent);

                    }
                }, 500); // 等待 500 毫秒
            }
        }
    }, 1000); // 每秒检查一次

})();
1230 次点击
所在节点    分享创造
9 条回复
zictos
80 天前
这种东西每个人的需求都不一样的吧?自己需要的脚本别人不一定需要,我最近也写了几个油猴脚本:
1 、让 chatgpt 像搜索引擎一样在地址栏输入关键词直接提问,给 chatgpt 的 url 添加关键词参数,油猴脚本获取参数后等待页面打开后将关键词输入到 chatgpt 的输入框再模拟点击发送。

2 、谷歌搜索结果标题的关键词红色高亮

3 、手机 kiwi 浏览器支持 chrome 扩展和油猴脚本,所以我让它的地址栏可以同时支持多个搜索引擎,引入类似电脑上的搜索引擎快捷词。比如输入关键词后默认会用谷歌搜索,可以用油猴脚本提取谷歌中的关键词,如果关键词是“gpt 测试”,就用重定向到 chatgpt 并提问“测试”,如果关键词是“bd 测试”就重定向到百度搜索"测试"。

4 、禁止手机 kiwi 浏览器上的百度网页写入内容到剪贴板,并将百度链接改为在新标签打开。
aklllw
80 天前
好用好用感谢
vvhy
80 天前
$P2PLivePlayer.switchQuality('10000')
shwomen1234fs
80 天前
@vvhy 👍,我的方法太笨了
vvhy
80 天前
@shwomen1234fs 还有切换全屏
livePlayer.switchQuality('10000');
livePlayer.setFullscreenStatus(1);
shwomen1234fs
80 天前
@vvhy 你这个是怎么找到这个对象的,我是写后端的,只会一些简单的 js ,我通过问 chatgpt 琢磨半天才写出来的😂
vvhy
80 天前
@shwomen1234fs 打断点,在源码里搜索,全局变量也可以找找
aklllw
79 天前
原来是能用的,重写版本的反而不起作用了。我的是篡改猴
shwomen1234fs
79 天前
@aklllw 我改一下,确实有你说的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1016458

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX