bilibili倍数脚本,油猴脚本

一. 内容简介

bilibili倍数脚本,油猴脚本

二. 软件环境

2.1 Tampermonkey

三.主要流程

3.1 创建javascript脚本

点击添加新脚本
在这里插入图片描述
就是在

(function() {
    'use strict';
    // 在这编写自己的脚本
})();

在这里插入图片描述

倍数脚本,含解析

// ==UserScript==
// @name         bilibili倍数
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  添加b站自定义倍数功能
// @author       You
// @match        https://www.bilibili.com/video/*
// @icon         https://img-blog.csdnimg.cn/f5d99485009b4e3b8a1de33064202353.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224
// @grant        none
// @license MIT
// ==/UserScript==


// 解析来自 http://t.csdn.cn/rkANJ,http://t.csdn.cn/nlUTQ
// "==UserScript=="           Greasemonkey 用它们来标记用户脚本的元数据段。这段注释可以放在用户脚本的任何部位,但经常会放在靠近顶部的地方
// @name                      脚本名字(可选,如果不存在,将会默认显示用户脚本的去掉拓展名.user.js的文件名)
// @namespace                 这个是命名空间;用来区分名称相同但是作者不同的用户脚本,一般都是写作者的个人网址,没有也可以写你的博客地址
// @version                   填写版本
// @description               关于用户脚本功能(可选,不写默认空白)
// @author                    作者
// @match                     这个是该脚本匹配的网址,支持通配符匹配
// @include		              这个也是该脚本匹配的网址,支持通配符匹配
// @exclude		              这个和 iclude 配合使用,排除匹配到的网址,优先于 include
//                            @include和 @exclude 是可选的,可以自定义执行和豁免的 URL,但必须每条规则各占一行。如果您没有任何定义, Greasemonkey 将会对所有的网站执行您的用户脚本。(等同于 @include *)。
// @icon                      应该是图标
// @grant                     none
// @license MIT



// 代码来自https://greasyfork.org/zh-CN/scripts/442030-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%80%8D%E6%95%B0,
// 在此基础上进行删改
(function() {
    'use strict';
    function addOtherSpeed() {
        // 这是拿到倍数那个容器
        let speedList = document.getElementsByClassName('bpx-player-ctrl-playbackrate-menu')[0];
        // 看是否执行过了
        if (speedList.getAttribute('set') === 'true') {
            return ;
        }
        // 给这个容器设置一个属性
        speedList.setAttribute('set','true');
        let createSpeedLi = (speed,parentDom) => {
            // 里面每个速度那个栏都是li存放的
            let li25 = document.createElement('li');
            // 给创建的栏添加进倍数那个栏
            // 从头部加入
            // parentDom.appendChild(li25);
            // 从尾部加入
            parentDom.insertBefore(li25, parentDom.firstChild);
            // 样式是原来哔哩哔哩里面的样式
            li25.classList.add('bpx-player-ctrl-playbackrate-menu-item');
            // 原来的li中有个属性就是 data-value,用来设置倍数的
            li25.setAttribute('data-value',speed);
            // 添加一下控件的内容
            speed = speed.toFixed(1);
            li25.innerHTML = `${speed}x`;
            li25.onclick = function () {

                let speed_ = li25.getAttribute('data-value');
                // getElementsByTagName 是 JavaScript 中 Document 对象的一个方法,用于获取文档中具有指定标签名称的所有元素
                let v = document.getElementsByTagName('video');
                if (v.length) {
                    v = v[0];
                } else {
                    // 设置倍数
                    v = document.getElementsByTagName('bwp-video')[0];
                }
                v.playbackRate = parseFloat(speed_);
            }
            return li25;
        };
        createSpeedLi(2.5,speedList);
        createSpeedLi(3.0,speedList);
        createSpeedLi(3.5,speedList);
        new Array(...speedList.getElementsByTagName('li')).map(_=> {
            // 这块不清楚了,添加一个空事件,在点击自己添加的倍数时候,播放下一个视频时候也会按着这个倍数播放的,删除的话,倍数无法保存
            _.onclick = function() {
            }
        });
        return ``
    }
    function fullScreenAndDoubleTime() {
        addOtherSpeed();
        tryAndTryFns.pop();
    }

    // 不停的尝试
    let tryAndTryFns = [];
    function tryAndTry() {
        setInterval(() => {
            // tryAndTryFns.forEach(f => f());: 在每个定时间隔,tryAndTry函数会遍历数组 tryAndTryFns 中的所有函数,并且调用这些函数
            tryAndTryFns.forEach(f => f());
        },500);
    }
    // 从这开始
    setTimeout(() => {
        tryAndTryFns.push(fullScreenAndDoubleTime);
        // 开始执行
        tryAndTry();
    },2000);
    // Your code here...
})();

假如要添加自己想要的倍数,在在这个地方添加就好了

        createSpeedLi(2.5,speedList);
        createSpeedLi(3.0,speedList);
        createSpeedLi(3.5,speedList);

3.2 测试运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/75695.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TikTok带货有什么优势?品牌营销的新趋势

在当今数字化时代,品牌营销正日益倾向于社交媒体平台,而TikTok作为一款全球热门的短视频社交平台,正在成为品牌营销的新趋势。TikTok带货,也就是品牌利用TikTok平台进行商品推广和销售,已成为一种创新的、高效的营销方…

GPT-4 如何为我编写测试

ChatGPT — 每个人都在谈论它,每个人都有自己的观点,玩起来很有趣,但我们不是在这里玩— 我想展示一些实际用途,可以帮助您节省时间并提高效率。 我在本文中使用GPT-4 动机 我们以前都见过这样的情况——代码覆盖率不断下降的项目——部署起来越来越可怕,而且像朝鲜一样…

【深入理解ES6】块级作用域绑定

1. var声明及变量提升机制 提升(Hoisting)机制:通过关键字var声明的变量,都会被当成在当前作用域顶部生命的变量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此处…

Jetpack之MutableLiveData和LiveData源码分析

先看一下MutableLiveData的源码,它是继承于LiveData,主要是重写了setValue和postValue方法。 上图我们知道这两个方法都是调用了livedata的各自对应的方法,我们点进去看看livedata的这两个方法是protect 的 允许子类和自己调用,而MutableLiv…

Qt在mac安装

先在app store下载好Xcode 打开Xcode 随便建个文件给它取个名字找个地方放提醒没建立git link,不用理他打开终端, 输入/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

SpringMVC学习笔记

springMVC简单入门 快速搭建 pom.xml依赖 <!-- 导入坐标 springmvc 与 servlet --><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version>…

回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测

回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测 目录 回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRNN广义回归神经网络多输入多输出预测&#xff0c;输入10个特征&#x…

re学习(32)【绿城杯2021】babyvxworks(浅谈花指令)

链接&#xff1a;https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取码&#xff1a;b9xf wp:首先找不到main函数&#xff0c;然后寻找特殊字符串&#xff0c; 交叉引用 反汇编 主函数在sub_3D9当中&#xff0c;但是IDA分析错了 分析错误后&#xff0c;删除函数 创建函数 操…

从零构建深度学习推理框架-8 卷积算子实现

其实这一次课还蛮好理解的&#xff1a; 首先将kernel展平&#xff1a; for (uint32_t g 0; g < groups; g) {std::vector<arma::fmat> kernel_matrix_arr(kernel_count_group);arma::fmat kernel_matrix_c(1, row_len * input_c_group);for (uint32_t k 0; k < k…

UI美工设计岗位的基本职责概述(合集)

UI美工设计岗位的基本职责概述1 1、有良好的美术功底、设计新颖&#xff0c;整体配色及设计创意理念&#xff0c;能够独立完成整个网站页面设计及制作; 2、熟练运用DIV CSS&#xff0c;HTML 设计制作网页 ; 3、熟练运用Photoshop,Dreamweaver,Coreldraw(或Illustrator),Fla…

LabVIEW控制通用工作台

LabVIEW控制通用工作台 用于教育目的的计算机化实验室显着增长&#xff0c;特别是用于运动控制的实验室。它们代表了各种工业应用中不断扩大的领域&#xff0c;并成为以安全的方式使用通常昂贵或独特的实验室设备进行实时实验的宝贵工具。NI LabVIEW等软件应用程序的开发和不断…

【数据结构OJ题】反转链表

原题链接&#xff1a;https://leetcode.cn/problems/reverse-linked-list/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 方法一&#xff1a;三指针翻转法 使用三个结构体指针n1&#xff0c;n2&#xff0c;n3&#xff0c;原地修改结点…

开发过程中遇到的问题以及解决方法

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 开发过程中遇到的问题以及解决方法 简单易用的git命令 git命令&#xff1a; 查看有几个分支&#xff1a;git branch -a 切换分支&#…

【分布式存储】数据存储和检索~倒排索引pageRank

为什么需要倒排索引 通过前两篇的文章介绍&#xff0c;B树主要针对的是读多写少的场景&#xff0c;而LSM针对的是写多读少的场景&#xff0c;其实在日常开发中&#xff0c;我们会将数据存储到搜索引擎中&#xff0c;然后进行数据的搜索&#xff0c;这种场景其实针对的是快速根…

【Linux】邮件服务器搭建 postfix+dovecot+mysql (终极版 超详细 亲测多遍无问题)

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 前言基础原理准备工作一 、安装关于权…

Android布局【TableLayout】

文章目录 说明常见属性子控件设置属性 项目结构主要代码 说明 TableLayout也称为表格布局 常见属性 android:collapseColumns&#xff1a;设置需要被隐藏的列的序列号&#xff0c;从0开始android:stretchColumns&#xff1a;设置允许被拉伸的列的列序号&#xff0c;从0开始&…

同步、异步、协程

目录 同步异步https 异步请求&#xff1a; 协程1.为什么会要协程?2.异步的运行流程是什么3.协程的原语操作4.协程的定义?5.调度器的定义?6.调度的策略?7. api封装, hook8.多核的模式?9.协程的性能?10.要有哪些案例?nty_servernty_ mysql_client.cnty_ mysql oper.cnty_ …

Oracle 开发篇+Java通过HiKariCP访问Oracle数据库

标签&#xff1a;HikariCP、数据库连接池、JDBC连接池、释义&#xff1a;HikariCP 是一个高性能的 JDBC 连接池组件&#xff0c;号称性能最好的后起之秀&#xff0c;是一个基于BoneCP做了不少的改进和优化的高性能JDBC连接池。 ★ Java代码 import java.sql.Connection; impor…

MATLAB实现两组数据的延时对齐效果

博主在某次实验中&#xff0c;相同的实验条件下分别采集了两组数据&#xff0c;发现两组数据存在一个延时&#xff0c;如下图所示&#xff1a; 本文记录消除这个延时&#xff0c;实现相同数据状态的对齐效果&#xff0c;采用MATLAB自带的xcorr函数实现&#xff0c;具体步骤如下…

Ansible 进阶

Ansible 进阶 ⤴️Ansible 入门看这篇文章⤵️Ansible 实战看这篇文章 一.Ansible 中的 Playbook 1.1 Playbook 介绍 如下图&#xff0c;ansible 在整个管理过程中使用 playbook 的大体流程。 Playbook 中包含多个 role&#xff0c;每个 role 对应于在远程主机完成某个比较复…