// ==UserScript==
// @icon https://pan.baidu.com/m-static/base/static/images/favicon.ico
// @name 百度云精简
// @namespace taozhiyu.gitee.io
// @version 0.3.4
// @description 删除“复制这段内容后打开百度网盘手机App,操作更方便哦,来自百度会员超级无敌永久svip”,精简部主页广告、邀请,视频添加倍速按钮
// @author 涛之雨
// @require https://cdn.bootcdn.net/ajax/libs/clipboard.js/2.0.6/clipboard.min.js
// @match *://pan.baidu.com/disk/*
// @match *://pan.baidu.com/mbox/*
// @match *://pan.baidu.com/play/*
// @match *://yun.baidu.com/disk/*
// @match *://yun.baidu.com/mbox/*
// @match *://yun.baidu.com/play/*
// @match *://pan.baidu.com/s/*
// @match *://yun.baidu.com/s/*
// @match *://pan.baidu.com/share/*
// @match *://yun.baidu.com/share/*
// @grant GM_addStyle
// @grant unsafeWindow
// @grant GM_getValue
// @grant GM_setValue
// @home-url http://greasyfork.icu/zh-CN/scripts/422814
// @license GPL-3.0-only
// ==/UserScript==
/**********************************************\
* 移除小尾巴部分修改自http://greasyfork.icu/zh-CN/scripts/374100
* 自定义密码部分修改自http://greasyfork.icu/zh-CN/scripts/423146
* V 0.3.4
* 悄咪咪修复部分(感觉就只有大萝卜一个)人百度网盘LOGO显示异常的问题(换了个图标)
* 修复百度云更新造成的脚本无法倍速播放视频(目前仅有百度云VIP方可使用。。。)
* 修复速率调节快捷键的一个bug(目前仅有百度云VIP方可使用。。。)
* 添加“画中画”功能(需要浏览器支持),画中画模式快捷键将会失效,全屏自动退出画中画模式
* V 0.3.3
* 植入自定义密码功能(修改自【http://greasyfork.icu/zh-CN/scripts/423146】,感谢提供思路,已获得授权)
* 优化上述脚本
* 修改默认分享时间为【永久】
* 新增对于“内测提醒”弹窗的关闭支持
* 倍速貌似失效了?算了,有空再看吧
* V 0.3.2
* 紧急修复误伤压缩包查看的bug
* V 0.3.1
* 新增对于【压缩包】、【CAD】和【思维导图】文件打开引导的屏蔽。
* 新增在播放界面,新增快捷键控制播放速度:
* -- (shift键无论是否按下,)按数字【0】即可恢复正常速度(原速快捷键)
* -- 按下数字【1-9】可以分别调整速度为【1.25,1.5,1.75,2,2.4,2.7,4,6,8】(倍速快捷键)
* -- 按下【shift】后再按下数字【1-9】可以分别调整速度为【0.1,0.15,0.2,0.25,0.3,0.5,0.6,0.8,0.9】(慢速快捷键)
* -- (shift键无论是否按下,)每次按下【-】,当前速率减小0.1
* -- (shift键无论是否按下,)每次按下【=】,当前速率增加0.1
* V 0.3.0
* 添加 + 自动读取、提交提取码的功能(第一次运行需要授权,有引导界面)
* V 0.2.9
* 修复 + 因为图省事,通用匹配导致某些界面被屏蔽的bug
* V 0.2.8
* 修复 + 视频倍速播放自动恢复的暗装(涛之雨全网独家的方法,如有借鉴请说明出处)
* V 0.2.7
* 调整 + 转存后的布局
* 修复 + 删除部分遗漏广告
* 新增 + 对于文件分享界面,的去广告支持
* V 0.2.6
* 新增 + 对于分享页的适配(去广告)
* 新增 + 视频播放页添加倍速按钮(仿原生,贼强)
* 添加 + 遵循协议 GPL-3.0-only
* TODO : 默认永久分享(可自定义1-365天和永久)
* TODO : 自定义分享密码(或公开链接,无密码)
* TODO : 自定义限制分享次数链接
* V 0.2.5
* 新增 + 对于“在线视频”界面的支持
* TODO : 加上倍速播放按钮
* V 0.2.4
* 新增 + 对于“分享”界面的支持
* V 0.2.3
* 删除 - 百度文库相关代码,迁移到新项目
* V 0.2.1
* 新增 + 百度文库大量垃圾、广告删除
* TODO : 正在研究非VIP会员免【广告全屏阅读】
* V 0.1.7
* 修复 + “个人分享”界面“复制这段内容...”移除失败的bug
* 新增 + 删除主界面的部分垃圾(可以自行对比)
* 新增 + 关闭4秒内主动弹出的【设备管理】、【新功能测试】、【在线文档】、【在线解压】、等等。。。窗口
\************************************************/
(function() {
'use strict';
const w=unsafeWindow||window;
let myvideojs;
var $ = $ || window.$ || w.$;
const saveInfo=(a)=>{
GM_setValue("BaiduYunBeautify", JSON.stringify(a));
};
//兼容之前的版本,迁移数据并移除
const getInfo=()=>{
return JSON.parse(localStorage.getItem("taozhiyuPanConfig"));
};
let oldinfo=(getInfo()&&!!getInfo().isfrist)?getInfo().isfrist:true;
localStorage.clear("taozhiyuPanConfig");
let info=GM_getValue("BaiduYunBeautify")?JSON.parse(GM_getValue("BaiduYunBeautify")):{};
if(Object.keys(info).length<3){
!info.SetKey&&(info.SetKey=true);
!info.sharePwd&&(info.sharePwd="");
!info.isFristAutoEnterKey&&(info.isFristAutoEnterKey=oldinfo);
saveInfo(info)
}
GM_addStyle(`.phone-banner,
.button-badge,
.hx-right-bottom,
.title-wrap > .join-vip,
.title-wrap > .info,
.hx-bottom-wrapper,
.hx-recom-wrapper,
.app-btn,.hx-warp,
.relative-doc-ad-wrapper,
.qr-wrapper,
.cert-tip,
.side-doc-tool-wrapper,
.feedback-wrapper,
.popover-container,
.privilege-box,
.vip-pop-wrap,
.red-point,
.wp-side-options,
.module-header-wrapper > dl > dd[node-type='header-union'],
.yike-entrance,
.find-light-icon,
.newIcon,
.app-download,
.app-notice,
.icon-notice,
.icon-feedback,
.app-feedback,
.wp-disk-header__right-item,
.bz-doc-tool-dialog-fix,
.ex-wrapper,
.fixed-activity-bar,
.vip-card-wrap,
.btn-img-tips,
.rights-section,
a[title="举报"],
div[class^="ad-"],
.share-file__link-ad,
.vip-activity-content,
.video-title-right-open-mobile,
.tips{
display:none!important;
width:0!important;
overflow:hidden!important;
}
.after-trans-dialog .info-section {
padding-top: 99px!important;
}
#SetKey{
display: inline-block;
color: #fff;
font-size: 16px;
height: 42px;
line-height: 38px;
margin: 0 25px;
vertical-align: middle;
position: relative;
padding: 0 2px;
cursor: pointer;
}
#SetKey:hover {
opacity: .8;
}
.video-js .vjs-playback-rate{
line-height: 2em;
font-size: 1.4em;
}
.vjs-workinghover .vjs-menu-button-popup:hover .vjs-menu{
margin-bottom: 0.67em!important;
}
`);
let t = " ", e = "text", o = "去除小尾巴失败o(╥﹏╥)o", a = "body", l = "copy",y=true,f=(a)=>{a.style.display="none";a.style.width=0;a.style.overflow="hidden"};
document.querySelector(a).addEventListener(l, function(a) {try {let l = a.target.value;l = l.split(t).filter((t, e) => {if(!!t.match(/手机App|复制这段/))y=false;return y}).join("").replace("提取码"," 提取码"),a.clipboardData.setData(e, l),a.preventDefault(),y=true; } catch (a) { console.log(o);}});
function autoInputCode(callback){
navigator.clipboard.readText().then(a =>{
callback(true,a)
}) .catch((v) => {
callback(false,v)
});
}
if(location.href.indexOf("/share/my")<0){
$(document).on("DOMNodeInserted", ".share-file__link-expired", function() {
if ($(".nd-input-share-pwd").length == 0) {
setTimeout(()=>{
var o=document.querySelector("#g-select-1");
o.querySelector(".g-select-inner").click()
var event = new CustomEvent("mousedown",{bubbles: 'true'});
o.querySelector('#g-select-1 [data-value="0"]').dispatchEvent(event);
},200);
var html = '<div style="margin:10px;"></div><div class="share-file__link-expired-title">自定义分享密码</div>';
html += '<div class="share-file__link-pwd"><div class="share-file__link-pwd-label">提取码</div>';
html += '<input type="text" class="nd-input-share-pwd" value="' + (info.sharePwd ? info.sharePwd : "") + '" placeholder="为空则随机四位" style="margin-left: 16px; width: 120px; height: 32px; line-height: 28px; border: 1px solid #D4D7DE; border-radius: 8px; text-align: left; padding-left: 12px"></div>';
$(".share-file__link-expired").after(html);
}
});
w.require.async("function-widget-1:share/util/newShare/linkSetting.js", function (a) {
a.a = a.makePrivatePassword;
a.makePrivatePassword = function () {
return info.sharePwd ? info.sharePwd : this.a();
};
});
$(document).on("change", ".nd-input-share-pwd", function () {
var value = this.value;
if (value && !/[^\W_]{4}/.test(value)) {
w.require("system-core:system/uiService/tip/tip.js").show({mode: "failure", msg: "提取码不合规范,只能是四位字母数字组合"});
}else{
info.sharePwd=value;
saveInfo(info);
}
});
}
if(location.href.indexOf("baidu.com/disk/")>=0){
let id=setInterval(()=>{
document.querySelectorAll(".pdf2word-tip-close-btn").forEach(a=>{a.click()});
document.querySelectorAll(".dialog-close").forEach(a=>{a.click()});
document.querySelectorAll(".close-mask").forEach(a=>{a.click()});
document.querySelectorAll(".common-dialog-close").forEach(a=>{a.click()});
document.querySelectorAll(".wp-guide-dialog-close").forEach(a=>{a.click()});
document.querySelectorAll(".wp-tip-close-btn").forEach(a=>{a.click()});
document.querySelectorAll(".guide-dialog-close").forEach(a=>{a.click()});
document.querySelectorAll(".wp-disk-header__right-item").forEach((a)=>{if(a.href&&!!a.href.match(/buy|addnew/)){f(a);}});
},1);
setTimeout(()=>{clearInterval(id)},5000)
window.addEventListener("mouseup",a=>{
if(a.target.title!=="分享"){return;}
let id2=setInterval(()=>{
const x=document.querySelectorAll(".share-file__link-ad");
if(!x){return;}
x.forEach((a)=>{f(a);});
setTimeout(()=>{clearInterval(id2)},100);
},10);
});
}else if(location.href.indexOf("play/video")>=0){
const getmyvideo=a=>{
if(!myvideojs)return false;
if(!myvideojs.players){
try{
if(!!myvideojs(a))return myvideojs(a);else return false;
}catch(e){return false;}
}else{
if(!!myvideojs.players[a])return myvideojs.players[a];else return false;
}
}
let id=setInterval(()=>{
myvideojs=myvideojs||w.videoPlayer;
if(myvideojs&&!!getmyvideo("html5player")){
clearInterval(id);
if(document.pictureInPictureEnabled){
GM_addStyle(`
.video-functions-tips{
margin-top: -26px;
}
`);
getmyvideo("html5player").tech_.el_.disablePictureInPicture=false;
let li=document.createElement("li");
li.id="PInP_tao";
li.innerHTML='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1168" style="width: 26px;height: 24px;margin-top: -7px;"><path d="M782 273H242v478h179v0.31a40.338 40.338 0 0 1 4.339-0.305L426 751c22.091 0 40 17.909 40 40s-17.909 40-40 40c-1.693 0-3.362-0.105-5-0.31v0.31H222c-33.137 0-60-26.863-60-60V253c0-33.137 26.863-60 60-60h580c33.137 0 60 26.863 60 60v176c0 22.091-17.909 40-40 40s-40-17.909-40-40V273z m20 263c33.137 0 60 26.863 60 60v175c0 33.137-26.863 60-60 60H588c-33.137 0-60-26.863-60-60V596c0-33.137 26.863-60 60-60h214z m-20 80H608v135h174V616z" p-id="1169" fill="#ffffff"></path></svg><span style="margin-top: -4px;">画中画</span>';
document.querySelector("ul.tips-ul.three-items").append(li)
document.querySelector("#PInP_tao").onclick=()=>{
var Observer;
if (!document.pictureInPictureElement) {
Observer= new MutationObserver(function (mutations, instance) {
if (document.pictureInPictureElement) {
if(getmyvideo("html5player").el_.classList.value.indexOf("vjs-fullscreen")>=0){
// console.log("进入全屏,关闭画中画");
document.exitPictureInPicture().catch(e => console.warn("不会吧不会吧,开启没失败,取消反而失败了?",e));
Observer&&(Observer.disconnect(),Observer=undefined);
}
}else Observer&&(Observer.disconnect(),Observer=undefined);
});
Observer.observe(getmyvideo("html5player").el_, {
attributes: true,
attributeFilter: ["class"]
});
getmyvideo("html5player").tech_.el_.requestPictureInPicture().catch(e=>console.warn("画中画开启失败:",e));
}else{
document.exitPictureInPicture()
.catch(e => console.warn("不会吧不会吧,开启没失败,取消反而失败了?",e));
Observer&&(Observer.disconnect(),Observer=undefined);
}
}
}else console.log("很遗憾,不支持画中画功能");
if(!document.querySelector(".level-2,.level-1"))return;//非会员(暂时)不配
let ne=()=>myvideojs.getComponent("Spacer").prototype.createEl(...arguments),
Jn=myvideojs.getComponent("Menu"),
gr=myvideojs.getComponent("PlaybackRateMenuItem");
function a(a,b){a.prototype=Object.create(b.prototype);a.prototype.constructor=a;a.__proto__=b;};var vr=function(n){function e(e,t){var i;return(i=n.call(this,e,t)||this).updateVisibility(),i.updateLabel(),i.on(e,"loadstart",i.updateVisibility),i.on(e,"ratechange",i.updateLabel),i}a(e,n);var t=e.prototype;return t.createEl=function(){var e=n.prototype.createEl.call(this);return this.labelEl_=ne("div",{className:"vjs-playback-rate-value",innerHTML:"1x"}),e.appendChild(this.labelEl_),e},t.dispose=function(){this.labelEl_=null,n.prototype.dispose.call(this)},t.buildCSSClass=function(){return"vjs-playback-rate "+n.prototype.buildCSSClass.call(this)},t.buildWrapperCSSClass=function(){return"vjs-playback-rate "+n.prototype.buildWrapperCSSClass.call(this)},t.createMenu=function(){var e=new Jn(this.player()),t=this.playbackRates();if(t)for(var i=t.length-1;0<=i;i--)e.addChild(new gr(this.player(),{rate:t[i]+"x"}));return e},t.updateARIAAttributes=function(){this.el().setAttribute("aria-valuenow",this.player().playbackRate())},t.handleClick=function(e){for(var t=this.player().playbackRate(),i=this.playbackRates(),n=i[0],r=0;r<i.length;r++)if(i[r]>t){n=i[r];break}this.player().playbackRate(n)},t.playbackRates=function(){return this.options_.playbackRates||this.options_.playerOptions&&this.options_.playerOptions.playbackRates},t.playbackRateSupported=function(){return this.player().tech_&&this.player().tech_.featuresPlaybackRate&&this.playbackRates()&&0<this.playbackRates().length},t.updateVisibility=function(e){this.playbackRateSupported()?this.removeClass("vjs-hidden"):this.addClass("vjs-hidden")},t.updateLabel=function(e){this.playbackRateSupported()&&(this.labelEl_.innerHTML=this.player().playbackRate()+"x")},e}(myvideojs.getComponent('MenuButton'));vr.prototype.controlText_="Playback Rate";
// w.videojs=videojs;
// if(!myvideojs.players.html5player.controlBar.childNameIndex_.playbackRateMenu||!document.querySelector(".level-2,.level-1")){//没有倍速按钮的填上&&会员不用替换了
myvideojs.registerComponent("PlaybackRateMenuButton",vr);
const Myplayback=myvideojs.extend(myvideojs.getComponent('PlaybackRateMenuButton'), {//PlaybackRateMenuButton
handleClick: function() {
if(this.menu.el_.style.display === '' || this.menu.el_.style.display === 'none'){
this.menu.el_.style.display = 'block';
}else{
this.menu.el_.style.display = 'none';
}
},
playbackRates: function() {
return [0.5,1,1.5,2,2.7,4];
},
controlText_:" 播放速率,\n涛之雨解锁VIP"
});
myvideojs.registerComponent('Myplayback', Myplayback);
myvideojs.players.html5player.controlBar.addChild('Myplayback', {}, 6);
myvideojs.players.html5player.controlBar.removeChild('playbackRateMenu');
// if(!document.querySelector(".level-2,.level-1")){//会员不用等待广告
// setTimeout(()=>{
// var aid=setInterval(()=>{
// if(myvideojs.players["html5-werbung-player"].el_.classList.value.indexOf("vjs-paused")>=0){
// clearInterval(aid);
// for(let k=0;k<99999;k++)clearTimeout(k);//移除锁定
// for(let k=0;k<99999;k++)clearTimeout(k);//移除锁定
// for(let k=0;k<99999;k++)clearTimeout(k);//移除锁定
// }
// },500);
// },2000);
// }else{
for(let k=0;k<99999;k++)clearTimeout(k);//移除锁定
for(let k=0;k<99999;k++)clearTimeout(k);//移除锁定
for(let k=0;k<99999;k++)clearTimeout(k);//移除锁定
// }
// }
var SetKey=document.createElement("sapn");
SetKey.id="SetKey";
SetKey.innerHTML="快捷键已"+(info.SetKey===true?"打开【√】":"关闭【×】");
SetKey.title=` * 在播放界面,新增快捷键控制播放速度:
* (shift键无论是否按下,)按数字【0】即可恢复正常速度(原速快捷键)
* 按下数字【1-9】可以分别调整速度为【1.25,1.5,1.75,2,2.4,2.7,4,6,8】(倍速快捷键)
* 按下【shift】后再按下数字【1-9】可以分别调整速度为【0.1,0.15,0.2,0.25,0.3,0.5,0.6,0.8,0.9】(慢速快捷键)
* (shift键无论是否按下,)每次按下【-】,当前速率减小0.1
* (shift键无论是否按下,)每次按下【=】,当前速率增加0.1`;
document.querySelector('dd[node-type="header-link"]').append(SetKey);
document.querySelector("#SetKey").onclick=(a)=>{
info.SetKey=!info.SetKey;
a.target.innerHTML="快捷键已"+(info.SetKey===true?"打开【√】":"关闭【×】");
saveInfo(info);
}
var safeTime=false;
document.onkeydown=function(e){
if(safeTime||!info.SetKey)return;
safeTime=true;
var k=e.keyCode || e.which || e.charCode;
var p=myvideojs.getPlayers("video-player").html5player.tech_.playbackRate();
if(k===48)p=1;
else if(k>=49&&k<=57)p=(!e.shiftKey?[1.25,1.5,1.75,2,2.4,2.7,4,6,8]:[0.1,0.15,0.2,0.25,0.3,0.5,0.6,0.8,0.9])[k-49];
else if(k===189)p-=0.1;
else if(k===187)p+=0.1;
myvideojs.getPlayers("video-player").html5player.tech_.setPlaybackRate(parseFloat(p.toFixed(2)));
setTimeout(()=>{safeTime=false},50);
}
}
},500);
//setTimeout(()=>{clearInterval(id)},10000)
}else if(location.href.indexOf("share/init")>=0){
if(info.isFristAutoEnterKey){
info.isFristAutoEnterKey=false;
saveInfo(info);
var m=document.createElement("div");
m.style="position: fixed;left: 0px;top: 0px;z-index: 50;background: rgb(0, 0, 0);opacity: 0.7;font-size: 30px;width: 100%;line-height: 2;display: flex;height: 100%;align-items: center;justify-content: center;flex-direction: column;color: wheat;flex-wrap: wrap;";
m.id="taozhiyuMask";
m.innerHTML='<p>为了便于自动获取提取码</p><p>请在弹出框内点击允许</p><p>否则仅能手动输入/粘贴</p><br><p style="font-size: 14px;line-height: 1;">该信息仅在第一次打开时出现,点击屏幕消失</p>';
document.querySelector("body").append(m);
m.onclick=()=>{
m.remove();
};
}
navigator.permissions.query({name: "clipboard-read"}).then(result => {
if (result.state == "granted" || result.state == "prompt") {
autoInputCode( (c,a)=>{
if(c){
let b=a.match(/(?:密|提取|访问|訪問)[碼码]?\s*[::]?\s*([a-z\d]{4})/);
if(!!b){
console.log("匹配到密码:",b[1]);
document.querySelector("#accessCode").value=b[1];
document.querySelector("#submitBtn").click()
}else{
console.log("未匹配到常见密码")
}
}else{
console.log("不让我读取剪贴板你就自己粘贴去\n\n╭(╯^╰)╮哼\n\n如果是误操作请到“chrome://settings/content/clipboard”允许脚本读取剪贴板");
}
})
}else{
console.log("不让我读取剪贴板你就自己粘贴去\n\n╭(╯^╰)╮哼\n\n如果是误操作请到“chrome://settings/content/clipboard”允许脚本读取剪贴板");
}
})
}
})();