V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
shwomen1234fs
V2EX  ›  分享创造

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

  •  
  •   shwomen1234fs · 68 天前 · 1201 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前没有找到 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); // 每秒检查一次
    
    })();
    
    第 1 条附言  ·  68 天前

    按照三楼方法重写了,他的方法很简单,我之前写的太笨了

    // ==UserScript==
    // @name        New script
    // @namespace   Violentmonkey Scripts
    // @match       *://live.bilibili.com/*
    // @grant       none
    // @version     1.0
    // @description 2024/2/19 14:04:34
    // ==/UserScript==
    (function () {
      'use strict';
      // 等待 "live-player" 元素加载完成
      var checkPlayerExist = setInterval(function () {
        var player = document.getElementById('live-player');
        if (player !== null) {
          clearInterval(checkPlayerExist);
          // 调整画质
          var playerP2p = unsafeWindow.$P2PLivePlayer;
          playerP2p.switchQuality('10000');
          playerP2p.setFullscreenStatus(1);
        }
      }, 1000); // 每秒检查一次
    })();
    
    第 2 条附言  ·  67 天前

    上面的好像有些问题

    // ==UserScript==
    // @name        bilibili直播更改清晰度网页模式
    // @namespace   Violentmonkey Scripts
    // @match       *://live.bilibili.com/*
    // @grant       none
    // @version     1.0
    // @description 2024/2/19 14:04:34
    // ==/UserScript==
    (function () {
      'use strict';
      // 等待 "live-player" 元素加载完成
      var checkPlayerExist = setInterval(function () {
        var player = unsafeWindow.livePlayer;
        if (player !== null) {
          clearInterval(checkPlayerExist);
          // 调整画质
          setTimeout(()=>{
            player.switchQuality('10000');
            player.setFullscreenStatus(1);
          }, 500);
    
        }
      }, 1000); // 每秒检查一次
    })();
    
    9 条回复    2024-02-20 10:12:05 +08:00
    zictos
        1
    zictos  
       68 天前
    这种东西每个人的需求都不一样的吧?自己需要的脚本别人不一定需要,我最近也写了几个油猴脚本:
    1 、让 chatgpt 像搜索引擎一样在地址栏输入关键词直接提问,给 chatgpt 的 url 添加关键词参数,油猴脚本获取参数后等待页面打开后将关键词输入到 chatgpt 的输入框再模拟点击发送。

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

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

    4 、禁止手机 kiwi 浏览器上的百度网页写入内容到剪贴板,并将百度链接改为在新标签打开。
    aklllw
        2
    aklllw  
       68 天前
    好用好用感谢
    vvhy
        3
    vvhy  
       68 天前   ❤️ 2
    $P2PLivePlayer.switchQuality('10000')
    shwomen1234fs
        4
    shwomen1234fs  
    OP
       68 天前
    @vvhy 👍,我的方法太笨了
    vvhy
        5
    vvhy  
       68 天前
    @shwomen1234fs 还有切换全屏
    livePlayer.switchQuality('10000');
    livePlayer.setFullscreenStatus(1);
    shwomen1234fs
        6
    shwomen1234fs  
    OP
       68 天前
    @vvhy 你这个是怎么找到这个对象的,我是写后端的,只会一些简单的 js ,我通过问 chatgpt 琢磨半天才写出来的😂
    vvhy
        7
    vvhy  
       68 天前
    @shwomen1234fs 打断点,在源码里搜索,全局变量也可以找找
    aklllw
        8
    aklllw  
       67 天前
    原来是能用的,重写版本的反而不起作用了。我的是篡改猴
    shwomen1234fs
        9
    shwomen1234fs  
    OP
       67 天前
    @aklllw 我改一下,确实有你说的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3027 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:37 · PVG 21:37 · LAX 06:37 · JFK 09:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.