Add remember danmaku block settings

This commit is contained in:
the1812 2018-12-20 17:20:46 +08:00
parent bbe3cda75d
commit 83affb0099
7 changed files with 64 additions and 12 deletions

View File

@ -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,

View File

@ -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=$(`<div class="bilibili-player-video-toast-item-jump">从头开始</div>`);l.appendTo(s).on("click",()=>c.currentTime=0);t.html(`<span>已跳转到上次历史记录</span><span>${n[0]}</span>`)}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
{

View File

@ -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=$(`<div class="bilibili-player-video-toast-item-jump">从头开始</div>`);l.appendTo(s).on("click",()=>c.currentTime=0);t.html(`<span>已跳转到上次历史记录</span><span>${n[0]}</span>`)}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
{

View File

@ -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);

View File

@ -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);

View File

@ -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)}}})();
(()=>{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()}}})();

View File

@ -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();
}
};
})();