diff --git a/.eslintrc b/.eslintrc
index 0ca32c7e2..a6a17ad74 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -21,6 +21,7 @@
"no-extra-semi": 1,
"no-extra-parens": 1,
"no-irregular-whitespace": 0,
+ "no-inner-declarations": 0,
"no-undef": 0,
"no-unused-vars": 0,
"no-underscore-dangle": 1,
diff --git a/bilibili-evolved.offline.user.js b/bilibili-evolved.offline.user.js
index a2273a419..01a547c24 100644
--- a/bilibili-evolved.offline.user.js
+++ b/bilibili-evolved.offline.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name Bilibili Evolved (Offline)
-// @version 157.03
+// @version 157.06
// @description 增强哔哩哔哩Web端体验(离线版): 修复界面瑕疵, 删除广告, 使用夜间模式浏览; 下载视频,封面,弹幕, 以及增加对触屏设备的支持等.
// @author Grant Howard, Coulomb-G
// @copyright 2018, Grant Howrad (https://github.com/the1812)
@@ -66,7 +66,7 @@
top: false,
bottom: false,
color: false,
- magic: false,
+ special: false,
},
autoLightOff: false,
useCache: true,
@@ -799,6 +799,10 @@
});
}
}
+ static select(query, action, failed)
+ {
+ return SpinQuery.condition(query, it => it !== null, action, failed);
+ }
static any(query, action, failed)
{
return SpinQuery.condition(query, it => it.length > 0, action, failed);
@@ -1043,7 +1047,7 @@ offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/m
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/auto-continue.min.js"] = (()=>{return(t,e)=>{function i(t){const e=/((\d)*:)?(\d)*:(\d)*/g;const i=t.text();const n=i.match(e);if(!n){return}const r=n[0].split(":");const o=(()=>{if(r.length===3){const[t,e,i]=r.map(t=>parseInt(t));return t*60*60+e*60+i}else if(r.length===2){const[t,e]=r.map(t=>parseInt(t));return t*60+e}else{logError(`解析历史时间发生错误: historyTime=${JSON.stringify(r)}`);return NaN}})();const s=t.parent();const c=document.querySelector("video");c.currentTime=o;c.play();s.find(".bilibili-player-video-toast-item-jump").remove();const l=$(`
从头开始
`);l.appendTo(s).on("click",()=>c.currentTime=0);t.html(`已跳转到上次历史记录${n[0]}`)}function n(){SpinQuery.condition(()=>$(".bilibili-player-video-toast-item-text"),t=>t.text().indexOf("上次看到")!==-1,t=>i(t.filter((t,e)=>e.innerText.indexOf("上次看到")!==-1)))}Observer.subtree("#bofqi",n)}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.css"] = `.video-desc .info{height:auto!important;}.video-desc .btn{display:none!important;}`;
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.js"] = (()=>{return(e,p)=>{p.applyStyle("expandDescriptionStyle")}})();
-offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/default-danmaku-settings.min.js"] = (()=>{return(n,e)=>{async function a(n,e){const a=await SpinQuery.condition(()=>document.querySelector(n),n=>n!==null);if(!a){return}a.checked=e;raiseEvent(a,"change")}const i={enableDanmaku:".bilibili-player-video-danmaku-switch>input"};if(!n.enableDanmaku){a(i.enableDanmaku,false)}}})();
+offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/default-danmaku-settings.min.js"] = (()=>{return(e,n)=>{async function t(e,n){const t=await SpinQuery.select(()=>document.querySelector(e));if(!t){return}t.checked=n;raiseEvent(t,"change")}const i={enableDanmaku:".bilibili-player-video-danmaku-switch>input",settingsIcon:".bilibili-player-video-danmaku-setting"};if(!e.enableDanmaku){t(i.enableDanmaku,false)}if(e.rememberDanmakuBlock){for(const n in e.danmakuBlockSettings){i[n]=`.bilibili-player-block-filter-type[ftype=${n}]`}async function a(){await SpinQuery.unsafeJquery();const n=await SpinQuery.any(()=>unsafeWindow.$(i.settingsIcon));n.mouseover().mouseout();for(const[n,t]of Object.entries(e.danmakuBlockSettings)){if(t===true){const e=await SpinQuery.select(()=>document.querySelector(i[n]));e.click()}}}async function c(){for(const n in e.danmakuBlockSettings){const t=await SpinQuery.select(()=>document.querySelector(i[n]));t.addEventListener("click",()=>{e.danmakuBlockSettings[n]=t.classList.contains("disabled");saveSettings(e)})}}a();c()}}})();
class ResourceType
{
diff --git a/bilibili-evolved.preview-offline.user.js b/bilibili-evolved.preview-offline.user.js
index ac6c5af60..51ec03356 100644
--- a/bilibili-evolved.preview-offline.user.js
+++ b/bilibili-evolved.preview-offline.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name Bilibili Evolved (Preview Offline)
-// @version 157.03
+// @version 157.06
// @description 增强哔哩哔哩Web端体验(预览离线版): 修复界面瑕疵, 删除广告, 使用夜间模式浏览; 下载视频,封面,弹幕, 以及增加对触屏设备的支持等.
// @author Grant Howard, Coulomb-G
// @copyright 2018, Grant Howrad (https://github.com/the1812)
@@ -66,7 +66,7 @@
top: false,
bottom: false,
color: false,
- magic: false,
+ special: false,
},
autoLightOff: false,
useCache: true,
@@ -799,6 +799,10 @@
});
}
}
+ static select(query, action, failed)
+ {
+ return SpinQuery.condition(query, it => it !== null, action, failed);
+ }
static any(query, action, failed)
{
return SpinQuery.condition(query, it => it.length > 0, action, failed);
@@ -1043,7 +1047,7 @@ offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/m
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/auto-continue.min.js"] = (()=>{return(t,e)=>{function i(t){const e=/((\d)*:)?(\d)*:(\d)*/g;const i=t.text();const n=i.match(e);if(!n){return}const r=n[0].split(":");const o=(()=>{if(r.length===3){const[t,e,i]=r.map(t=>parseInt(t));return t*60*60+e*60+i}else if(r.length===2){const[t,e]=r.map(t=>parseInt(t));return t*60+e}else{logError(`解析历史时间发生错误: historyTime=${JSON.stringify(r)}`);return NaN}})();const s=t.parent();const c=document.querySelector("video");c.currentTime=o;c.play();s.find(".bilibili-player-video-toast-item-jump").remove();const l=$(`从头开始
`);l.appendTo(s).on("click",()=>c.currentTime=0);t.html(`已跳转到上次历史记录${n[0]}`)}function n(){SpinQuery.condition(()=>$(".bilibili-player-video-toast-item-text"),t=>t.text().indexOf("上次看到")!==-1,t=>i(t.filter((t,e)=>e.innerText.indexOf("上次看到")!==-1)))}Observer.subtree("#bofqi",n)}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.css"] = `.video-desc .info{height:auto!important;}.video-desc .btn{display:none!important;}`;
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.js"] = (()=>{return(e,p)=>{p.applyStyle("expandDescriptionStyle")}})();
-offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/default-danmaku-settings.min.js"] = (()=>{return(n,e)=>{async function a(n,e){const a=await SpinQuery.condition(()=>document.querySelector(n),n=>n!==null);if(!a){return}a.checked=e;raiseEvent(a,"change")}const i={enableDanmaku:".bilibili-player-video-danmaku-switch>input"};if(!n.enableDanmaku){a(i.enableDanmaku,false)}}})();
+offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/default-danmaku-settings.min.js"] = (()=>{return(e,n)=>{async function t(e,n){const t=await SpinQuery.select(()=>document.querySelector(e));if(!t){return}t.checked=n;raiseEvent(t,"change")}const i={enableDanmaku:".bilibili-player-video-danmaku-switch>input",settingsIcon:".bilibili-player-video-danmaku-setting"};if(!e.enableDanmaku){t(i.enableDanmaku,false)}if(e.rememberDanmakuBlock){for(const n in e.danmakuBlockSettings){i[n]=`.bilibili-player-block-filter-type[ftype=${n}]`}async function a(){await SpinQuery.unsafeJquery();const n=await SpinQuery.any(()=>unsafeWindow.$(i.settingsIcon));n.mouseover().mouseout();for(const[n,t]of Object.entries(e.danmakuBlockSettings)){if(t===true){const e=await SpinQuery.select(()=>document.querySelector(i[n]));e.click()}}}async function c(){for(const n in e.danmakuBlockSettings){const t=await SpinQuery.select(()=>document.querySelector(i[n]));t.addEventListener("click",()=>{e.danmakuBlockSettings[n]=t.classList.contains("disabled");saveSettings(e)})}}a();c()}}})();
class ResourceType
{
diff --git a/bilibili-evolved.preview.user.js b/bilibili-evolved.preview.user.js
index b5c291b1f..d34124dbc 100644
--- a/bilibili-evolved.preview.user.js
+++ b/bilibili-evolved.preview.user.js
@@ -65,7 +65,7 @@
top: false,
bottom: false,
color: false,
- magic: false,
+ special: false,
},
autoLightOff: false,
useCache: true,
@@ -798,6 +798,10 @@
});
}
}
+ static select(query, action, failed)
+ {
+ return SpinQuery.condition(query, it => it !== null, action, failed);
+ }
static any(query, action, failed)
{
return SpinQuery.condition(query, it => it.length > 0, action, failed);
diff --git a/bilibili-evolved.user.js b/bilibili-evolved.user.js
index 0c58cf105..b52208d7a 100644
--- a/bilibili-evolved.user.js
+++ b/bilibili-evolved.user.js
@@ -65,7 +65,7 @@
top: false,
bottom: false,
color: false,
- magic: false,
+ special: false,
},
autoLightOff: false,
useCache: true,
@@ -798,6 +798,10 @@
});
}
}
+ static select(query, action, failed)
+ {
+ return SpinQuery.condition(query, it => it !== null, action, failed);
+ }
static any(query, action, failed)
{
return SpinQuery.condition(query, it => it.length > 0, action, failed);
diff --git a/min/default-danmaku-settings.min.js b/min/default-danmaku-settings.min.js
index 767b8b7a7..62ad53409 100644
--- a/min/default-danmaku-settings.min.js
+++ b/min/default-danmaku-settings.min.js
@@ -1 +1 @@
-(()=>{return(n,e)=>{async function a(n,e){const a=await SpinQuery.condition(()=>document.querySelector(n),n=>n!==null);if(!a){return}a.checked=e;raiseEvent(a,"change")}const i={enableDanmaku:".bilibili-player-video-danmaku-switch>input"};if(!n.enableDanmaku){a(i.enableDanmaku,false)}}})();
\ No newline at end of file
+(()=>{return(e,n)=>{async function t(e,n){const t=await SpinQuery.select(()=>document.querySelector(e));if(!t){return}t.checked=n;raiseEvent(t,"change")}const i={enableDanmaku:".bilibili-player-video-danmaku-switch>input",settingsIcon:".bilibili-player-video-danmaku-setting"};if(!e.enableDanmaku){t(i.enableDanmaku,false)}if(e.rememberDanmakuBlock){for(const n in e.danmakuBlockSettings){i[n]=`.bilibili-player-block-filter-type[ftype=${n}]`}async function a(){await SpinQuery.unsafeJquery();const n=await SpinQuery.any(()=>unsafeWindow.$(i.settingsIcon));n.mouseover().mouseout();for(const[n,t]of Object.entries(e.danmakuBlockSettings)){if(t===true){const e=await SpinQuery.select(()=>document.querySelector(i[n]));e.click()}}}async function c(){for(const n in e.danmakuBlockSettings){const t=await SpinQuery.select(()=>document.querySelector(i[n]));t.addEventListener("click",()=>{e.danmakuBlockSettings[n]=t.classList.contains("disabled");saveSettings(e)})}}a();c()}}})();
\ No newline at end of file
diff --git a/video/default-danmaku-settings.js b/video/default-danmaku-settings.js
index 06b50390f..37eb6a2d0 100644
--- a/video/default-danmaku-settings.js
+++ b/video/default-danmaku-settings.js
@@ -4,9 +4,7 @@
{
async function setCheckState(selector, value)
{
- const checkbox = await SpinQuery.condition(
- () => document.querySelector(selector),
- it => it !== null);
+ const checkbox = await SpinQuery.select(() => document.querySelector(selector));
if (!checkbox)
{
return;
@@ -16,10 +14,47 @@
}
const selectors = {
enableDanmaku: ".bilibili-player-video-danmaku-switch>input",
+ settingsIcon: ".bilibili-player-video-danmaku-setting",
};
if (!settings.enableDanmaku)
{
setCheckState(selectors.enableDanmaku, false);
}
+ if (settings.rememberDanmakuBlock)
+ {
+ for (const type in settings.danmakuBlockSettings)
+ {
+ selectors[type] = `.bilibili-player-block-filter-type[ftype=${type}]`;
+ }
+ async function applyBlockSettings()
+ {
+ await SpinQuery.unsafeJquery();
+ const settingsIcon = await SpinQuery.any(() => unsafeWindow.$(selectors.settingsIcon));
+ settingsIcon.mouseover().mouseout();
+
+ for (const [type, value] of Object.entries(settings.danmakuBlockSettings))
+ {
+ if (value === true)
+ {
+ const element = await SpinQuery.select(() => document.querySelector(selectors[type]));
+ element.click();
+ }
+ }
+ }
+ async function listenBlockSettingsChange()
+ {
+ for (const type in settings.danmakuBlockSettings)
+ {
+ const element = await SpinQuery.select(() =>document.querySelector(selectors[type]));
+ element.addEventListener("click", () =>
+ {
+ settings.danmakuBlockSettings[type] = element.classList.contains("disabled");
+ saveSettings(settings);
+ });
+ }
+ }
+ applyBlockSettings();
+ listenBlockSettingsChange();
+ }
};
})();
\ No newline at end of file