B站剧场播放模式2.0

news2024/9/22 13:39:20

文章目录

  • v 1.0
  • 1、新版本改进
    • 1-1 去掉了冗余
    • 1-2 剧场模式增强
    • 1-3 演示视频
  • 2、代码

v 1.0

油猴脚本-Bilibili剧场模式仿Youtube-CSDN博客
https://blog.csdn.net/qq_45020818/article/details/131751288

功能比较粗糙,很多细节不完善,代码也写的很乱。

1、新版本改进

1-1 去掉了冗余

去掉了之前多余的样式调整,只保留了剧场播放相关以及主页简化的样式。

1-2 剧场模式增强

  • 修改模式切换逻辑,之前需要点击标题,现在改为 双击 Ctrl
  • 可以设置默认开启剧场模式
  • 推荐列表、合集列表、收藏列表 调整为浮窗。【如下】

无操作时【折叠缩小】:
在这里插入图片描述

鼠标悬停时【展开】:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1-3 演示视频

B站剧场版播放模式2.0

2、代码

// ==UserScript==
// @name         Bilibili定制
// @namespace    https://blog.csdn.net/qq_45020818
// @version      0.4
// @description  B站定制脚本
// @author       pxoxq
// @match        https://www.bilibili.com/
// @match        https://www.bilibili.com/?*
// @match        https://www.bilibili.com/video/**
// @match        https://www.bilibili.com/list/**
// @icon         https://www.bilibili.com/favicon.ico
// @grant        GM_addElement
// @grant        GM_addStyle
// @grant        window.onurlchange
// @require      https://code.jquery.com/jquery-3.7.1.min.js
// ==/UserScript==
const golbalConf = {
  darkMode: false,
  indexSimplify: true,  // 首页简化
  wideModeDefault: true, // 默认宽屏
  shadowColers: {
    dark:['#d3d4d5', '#818283'],
    white: ['#E3E5E7', '#F1F2F3']
  },
  indexBgDarkColor: '#22222B',
  indexBgColor: 'white',
  globalDarkClr: '#22222B',
  wideModePlayerHeight: 770,
  styles: {
    globalPrettify: ``,
    widePlayerStyles: ``,
    indexSimplifyStyle: ``,
  }
}
golbalConf.styles.widePlayerStyles = `
.bpx-player-ctrl-wide{
  width:0px;
}
#wide-box::-webkit-scrollbar{
  display:none;
}
#wide-box{
scrollbar-width:0;
}
#wide-box .mini-header__logo path{
  fill: #fb7299;
}
#wide-box #bilibili-player{
  width: 100vw !important;
}
#wide-box #playerWrap{
  order: -1;
  height: ${golbalConf.wideModePlayerHeight}px;
}
#wide-box #bilibili-player{
  height:${golbalConf.wideModePlayerHeight}px;
  position:relative;
}
#wide-box #bilibili-player #reco_list,
#wide-box #bilibili-player #multi_page,
#wide-box #bilibili-player .base-video-sections-v1,
#wide-box #bilibili-player .action-list-container{
  position:absolute;
  top:25px;
  right:0px;
  background-color: #f1f2f3d6;
  overflow: hidden;
  transition: all .28s linear;
  border: 1px solid #1F1F1F;
  width: 14px;
  height: 400px;
  opacity: 0.26;
  z-index: 999;
}
#wide-box #bilibili-player .base-video-sections-v1:hover{
  width: 280px;
  height: auto;
  opacity: 1;
}
#wide-box #bilibili-player .base-video-sections-v1:hover .video-sections-content-list{
  max-height:  unset;
  height:  ${golbalConf.wideModePlayerHeight - 200}px !important;
}
#wide-box #bilibili-player #reco_list{
  border-radius: 8px;
  top: 20px;
  width: 10px;
  overflow-y: scroll;
}
#wide-box #bilibili-player #reco_list::-webkit-scrollbar{
  width: 0px;
}
#wide-box #bilibili-player #reco_list{
  scrollbar-width:0px;
}
#wide-box #bilibili-player #reco_list .pic-box{
  width: 90px;
  height: 65px;
}
#wide-box #bilibili-player #reco_list .pic-box .video-awesome-img{
  width:100%;
  height:100%;
}
#wide-box #bilibili-player #reco_list .info .title{
  -webkit-line-clamp: 1;
}
#wide-box #bilibili-player #reco_list:hover{
  height: ${golbalConf.wideModePlayerHeight - 140}px;
  width: 280px;
  opacity:1;
  padding: 8px;
}

#wide-box #bilibili-player .action-list-container .main .cover{
  width: 70px;
}
#wide-box #bilibili-player .action-list-container:hover{
  width: 270px;
  height: auto;
  opacity: 1;
}
#wide-box #bilibili-player .action-list-container:hover #playlist-video-action-list,
#wide-box #bilibili-player #playlist-video-action-list-body{
  max-height: ${golbalConf.wideModePlayerHeight - 160}px;
}
#wide-box #bilibili-player #multi_page:hover{
  width: auto;
  height:auto;
  opacity: 1;
}
#wide-box #bilibili-player #multi_page .cur-list{
  max-height: ${golbalConf.wideModePlayerHeight - 160}px;
}
#wide-box #bilibili-player #multi_page .list-box li{
  width:260px;
}
#wide-box .left-container.scroll-sticky,
#wide-box div.playlist-container--left{
  display: flex;
  flex-direction: column;
}
#wide-box div.playlist-container{
  padding: unset;
}
#wide-box div#mirror-vdcon{
  justify-content: left;
}
#wide-box div.right-container.is-in-large-ab,
#wide-box div.playlist-container--right{
  margin-top: ${golbalConf.wideModePlayerHeight}px;
}
#wide-box #danmukuBox{margin-top: 0;}
#wide-box div.video-container-v1{
  padding: 0;
  justify-content: left;
}
#wide-box .left-container.scroll-sticky>div:not(#playerWrap),
#wide-box div.playlist-container--left>div:not(#playerWrap){
 margin-left:100px;
}
#wide-box #biliMainHeader .bili-header__bar{
  background-color: #000;
}
#wide-box #app .bpx-player-sending-bar{
  background-color:black;
}
#wide-box #biliMainHeader .bili-header__bar a.default-entry{
  color:white;
}
#wide-box #biliMainHeader .bili-header__bar li svg{color: white}
#wide-box .mini-header .right-entry .right-entry__outside .right-entry-text{color:white}
#wide-box .mini-header__title span{color:white !important;}
#wide-box .bpx-player-video-inputbar-wrap{background-color:#353232;}
`
golbalConf.styles.indexSimplifyStyle = `
#activity_vote{
  display:none;
}
body{
  position:relative;
  z-index:-20;
}
#i_cecream{
  position:relative;
  z-index:-10;
}
main.bili-feed4-layout{
  margin-top:10px;
}
#i_cecream .bili-header__channel{
  padding:80px 40px;
}
#i_cecream .bili-header .bili-header__banner{
  height:auto;
  min-height:auto;
}
#i_cecream .feed-roll-btn{
  left:100.4%;
}
.download-entry.download-client-trigger{
display: none !important;}
#i_cecream .feed-card{
  position:relative;
  background-color:white;
  padding:6px;
  border:1px solid #aaaaaa88;
  border-radius:8px;
  margin:10px 4px;
}
#i_cecream .feed-card::before{
  position:absolute;
  top:8px;
  left:6px;
  content:' ';
  width:100%;
  height:100%;
  background-color:#E3E5E7;
  border-radius:8px;
  z-index:-1;
}
#i_cecream .feed-card::after{
  position:absolute;
  top:13px;
  left:12px;
  content:' ';
  width:100%;
  height:100%;
  background-color:#ededede8;
  border-radius:8px;
  z-index:-2;
}
#i_cecream .feed-card~div:not(.feed-card) {
  display: none !important;
}
.bili-feed4-layout .feed2 .recommended-container_floor-aside .container .feed-card {
  margin-top: 0;
}
#reco_list{
  height:680px;
  overflow-y: scroll;}
.ad-report.ad-floor-exp{
  display:none !important;}
#comment .reply-list{
  height:800px;
  overflow-y:scroll;
  scrollbar-width:0;
}
#comment .reply-list::-webkit-scrollbar{
  display:none;}
`
class BilibiliPrettifyInject{
  static injectStyle(styleStr){
    GM_addStyle(styleStr)
  }
}
class BilibiliPlayMode{
  static ctrlReady = false
  static init(){
    BilibiliPrettifyInject.injectStyle(golbalConf.styles.widePlayerStyles)
    this.__eventBind()
  }
  static __injectMenu(){
  }
  static __eventBind(){
    document.onkeyup=(event)=>{ 
      if( event.key == "Control"){  
        if(!this.ctrlReady){
          this.ctrlReady = true
          setTimeout(()=>{
            this.ctrlReady = false
          }, 300)
        }else{
          this.ctrlReady = false
          this.toggleWideMode()
        }
      } 
    };
  }
  static toggleWideMode(){
    const mainBox = 'body'
    const boxId = $(mainBox).attr('id')
    let newId = ''
    if (!boxId) {
      newId = 'wide-box'
      this.videoFloatList()
    }else{
      this.videoFloatList(false)
    }
    $(mainBox).attr('id', newId)
  }
  static videoFloatList(float=true){
    const wrapperSelector = '#bilibili-player'
    if(float){
      const wrapper = $(wrapperSelector)
      const favList = $('.action-list-container')
      if(favList && favList.length){
        $(wrapper[0]).append(favList)
      }else{
        const multiList = $('#multi_page')
        if(multiList && multiList.length){
          $(wrapper[0]).append(multiList)
        }else{
          const hejiList = $('.base-video-sections-v1')
          if(hejiList && hejiList.length){
            $(wrapper[0]).append(hejiList)
          }else{
            const normalList = $('#reco_list')
            if(normalList && normalList.length){
              $(wrapper[0]).append(normalList)
            }
          }
        }
      }
    }else{
      const favList = $(`${wrapperSelector} .action-list-container`)
      if(favList && favList.length){
        $('#danmukuBox').after($(favList))
        
      }else{
        const multiList = $(`${wrapperSelector} #multi_page`)
        if(multiList && multiList.length){
          $('#danmukuBox').after($(multiList))
        }else{
          const hejiList = $(`${wrapperSelector} .base-video-sections-v1`)
          if(hejiList && hejiList.length){
            $('#danmukuBox').after(hejiList)
          }else{
            const normalList = $(`${wrapperSelector} #reco_list`)
            if(normalList && normalList.length){
              $('#danmukuBox').after($(normalList))
            }
          }
        }
      }
    }
  }
}
class BilibiliIndex{
  static init(){
    $('.recommended-swipe').remove()
    BilibiliPrettifyInject.injectStyle(golbalConf.styles.indexSimplifyStyle)
  }
}
function __init(){
  BilibiliPlayMode.init()
  if(golbalConf.wideModeDefault){
    setTimeout(()=>{
      BilibiliPlayMode.toggleWideMode()
    }, 2000)
  }
  if(golbalConf.indexSimplify){
    BilibiliIndex.init()
  }
}
(function () {
  'use strict';
  __init()
})();

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

地图自定义省市区合并展示数据整合

需求一:将省级地图下的两个市合并成一个区域,中间的分割线隐藏。 1、访问下方地址,搜索并下载省级地图json文件。 地址:https://datav.aliyun.com/portal/school/atlas/area_selector 2、切换到边界生成器,上传刚刚下…

Milesight VPN server.js 任意文件读取漏洞(CVE-2023-23907)

0x01 产品简介 MilesightVPN 是一款软件,一个 Milesight 产品的 VPN 通道设置过程更加完善,并可通过网络服务器界面连接状态。 0x02 漏洞概述 MilesightVPN server.js接口处存在文件读取漏洞,攻击者可通过该漏洞读取系统重要文件&#xff…

(1)(1.7) HOTT telemetry

文章目录 前言 1 布线和设置 2 参数说明 前言 Plane-4.0.0(及更高版本)、Copter-4.0.4(及更高版本)和 Rover-4.1.0(及更高版本)支持 Graupner HOTT 遥测技术。 1 布线和设置 与自动驾驶仪的连接可通过…

HNU-计算机网络-实验3-应用层和传输层协议分析(PacketTracer)

计算机网络 课程基础实验三应用层和传输层协议分析(PacketTracer) 计科210X 甘晴void 202108010XXX 【给助教的验收建议】 如果是助教,比起听同学读报告,更好的验收方式是随机抽取一个场景(URL/HTTPS/FTP&#xff09…

Vue笔记-在axios中的than函数中使用this需要注意的地方

在Vue中,可以使用this关键字来访问到组件中定义的变量。然而,在axios的then函数中,this关键字的作用域会改变,会指向axios对象本身而不是Vue组件实例。因此,不能直接访问到Vue组件中定义的变量。 解决这个问题的一种方…

Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)

RuoYi项目开发过程 一、登录功能(鉴权模块)1.1 后端部分1.1.1 什么是JWT?1.1.2 什么是Base64?为什么需要它?1.1.3 SpringBoot注解解析1.1.4 依赖注入和控制反转1.1.5 什么是Restful?1.1.6 Log4j 2、Logpack、SLF4j日志框架1.1.7 如何将项目打包成指定bytecode字节…

Datawhale聪明办法学Python(task3变量与函数)

一、课程基本结构 课程开源地址:课程简介 - 聪明办法学 Python 第二版 章节结构: Chapter 0 安装 Installation Chapter 1 启航 Getting Started Chapter 2 数据类型和操作 Data Types and Operators Chapter 3 变量与函数 Variables and Functions Ch…

《算法通关村——回溯模板如何解决回溯问题》

《算法通关村——回溯模板如何解决回溯问题》 93. 复原 IP 地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.1…

《Effective C++》学习笔记

条款01:把 C 看成一个语言联邦 C由几个重要的次语言构成 C语言:区块,语句,预处理器,数组,指针等等。 类:class,封装,继承,多态......(动态绑定等…

基于ssm旅游景点管理系统设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游景点管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

深度学习中的预测图片中的矩形框、标签、置信度分别是什么意思。

问题描述:深度学习中的预测图片中的矩形框、标签、置信度分别是什么意思。 问题解答: 目标框(Bounding Box): 描述目标位置的矩形边界框。 类别标签: 表示模型认为目标属于哪个类别(例如&#…

证明四元数乘法与旋转矩阵乘法等价

刚体四元数姿态控制 一文中没有证明的公式 R ( Q 1 ) R ( Q 2 ) R ( Q 1 ∘ Q 2 ) R(Q_1)R(Q_2)R(Q_1\circ Q_2) R(Q1​)R(Q2​)R(Q1​∘Q2​) 在这篇文章中证明。 首先找几个数测试是否等价。 quaternions.py的代码见 自用的四元数、欧拉角、旋转矩阵转换代码。 下面的代码中…

dockerfite创建镜像---INMP+wordpress

搭建dockerfile---lnmp 在192.168.10.201 使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台 [rootdocker1 opt]# mkdir nginx mysql php [rootdocker1 opt]# ls #分别拖入四个包: nginx-1.22.0.tar.gz mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2 wor…

重要通知!中国电信警告:用户须关闭路由器“双频合一”功能

在网络的无尽时空里,一场电信官方的宣战正酝酿中,目标锁定在我们日常生活中不可或缺的WiFi身上~ 最新消息曝光,竟然是路由器内藏的一个名为“双频合一”的功能引发了这场轰轰烈烈的网络风暴。 我们时常觉得WiFi就像是隐身在我们生活中的超级英…

Faulhaber 2.5代运动控制系统 25mNm/13W

2.5代控制系统; PWM输出; 四象限控制带; RS232或CANopen通信接口; 2250_BX4_CxD 选件,电缆和连接信息: 适配部件:

SystemVerilog基础:并行块fork-join、join_any、join_none(二)

相关阅读 SystemVerilog基础https://blog.csdn.net/weixin_45791458/category_12517449.html 在第一节中,我们讨论了并行块中的fork-join块和fork-join_any块,了解了它们的差异,本文将继续讨论fork-join_none块的使用。 fork-join_none并行块…

Ubuntu 常用命令之 ll 命令用法介绍

ll是ls -l的别名,用于在Ubuntu系统中列出目录的详细信息。ls命令用于列出目录内容,-l选项则以长格式显示,包括文件类型、权限、链接数、所有者、组、大小、最后修改时间以及文件或目录名。 这是ll命令的基本格式 ll [选项]... [文件]...这是…

《地理信息系统原理》笔记/期末复习资料(9. 网络地理信息系统)

目录 9. 网络地理信息系统 9.1. 概述 9.1.1. 网络GIS概念 9.1.2. 网络GIS体系结构 9.1.3. 网络GIS内容体系 9.2. 分布式网络GIS 9.2.1. 分布式网络GIS概念 9.2.2. 分布式主要技术 9.3. WebGIS 9.3.1. WebGIS概念 9.3.2. WebGIS分类与特点 9.3.3. WebGIS技术框架 9…

Graphics Profiler 使用教程

GraphicsProfiler 使用教程 1.工具简介:2.Navigation介绍2.1.打开安装好的Graphics Profiler。2.2.将手机连接到计算机,软件会在手机中安装一个GraphicsProfiler应用(该应用是无界面的)。2.3.Show files list2.4.Record new trace2.4.1.Appli…

Kotlin ArrayList类型toTypedArray转换Array

Kotlin ArrayList类型toTypedArray转换Array data class Point(val x: Float, val y: Float)fun array_test(points: ArrayList<Array<Point>>) {points.forEachIndexed { idx, ap ->ap.forEach {print("$idx $it ")}println()} }fun main(args: Arra…