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