Allow combo like with L keymap

This commit is contained in:
the1812 2020-03-05 13:17:50 +08:00
parent 8a25811279
commit e09fd791db
10 changed files with 59 additions and 47 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -22,7 +22,7 @@
"clear-cache.min.js": "9AB1536D8278DA681831A589AD1414425BF206B36AE109FB4EC1E8A685BB2A9F", "clear-cache.min.js": "9AB1536D8278DA681831A589AD1414425BF206B36AE109FB4EC1E8A685BB2A9F",
"collapse-live-side-bar.min.css": "22348786547D2D8DB659A306AF2E9C1F2050D66488778C71545AAEF785FD57E6", "collapse-live-side-bar.min.css": "22348786547D2D8DB659A306AF2E9C1F2050D66488778C71545AAEF785FD57E6",
"collapse-live-side-bar.min.js": "BB1B1CF157099A70F1AEA3F154C84D9CA1A84A29B5F6E42357CA9F51FFC4965C", "collapse-live-side-bar.min.js": "BB1B1CF157099A70F1AEA3F154C84D9CA1A84A29B5F6E42357CA9F51FFC4965C",
"combo-like.min.js": "239FC1F3AC50C9BBF3788E9C3ECADEEB0CA0F435D1EA7AD4A4AB471C8549A0C2", "combo-like.min.js": "368DA34768E947628099D258ED23BC5FFFCFFD25A47346E086C7975C8A52F997",
"comment.min.css": "CEDA2E6733E294A608812309FA6629045ABBC55A55C7677B6B60F019C0B62CAB", "comment.min.css": "CEDA2E6733E294A608812309FA6629045ABBC55A55C7677B6B60F019C0B62CAB",
"comment.min.js": "64F7B6951861C25799C48BB1ABCF2A73F79BCBBFC1E9D3BD45EC1F16F94F6451", "comment.min.js": "64F7B6951861C25799C48BB1ABCF2A73F79BCBBFC1E9D3BD45EC1F16F94F6451",
"comment-dark.min.css": "E980508E86203743C36FEE4F7149BFF53961ECBC4EC140E8C162D18D395B940A", "comment-dark.min.css": "E980508E86203743C36FEE4F7149BFF53961ECBC4EC140E8C162D18D395B940A",
@ -126,7 +126,7 @@
"image-viewer.min.css": "0CF849C6546AEBD2E7EB42F42368BC87B95536840F8A364413DB9A6E37AF5EA8", "image-viewer.min.css": "0CF849C6546AEBD2E7EB42F42368BC87B95536840F8A364413DB9A6E37AF5EA8",
"image-viewer.min.html": "763742E79923A7918F281AEBB3CEE76FE2A0AE94CACE325AE4BEE1AED451DAEA", "image-viewer.min.html": "763742E79923A7918F281AEBB3CEE76FE2A0AE94CACE325AE4BEE1AED451DAEA",
"index.min.html": "94B83D9EBB9005C1286A7E0759A7683932F8DADA20D07E5E9D8FF867B04D4B95", "index.min.html": "94B83D9EBB9005C1286A7E0759A7683932F8DADA20D07E5E9D8FF867B04D4B95",
"keymap.min.js": "85A81D89505EBBA8547BAD6F53802740C2959574940DFDB3042BDE1E1E938C74", "keymap.min.js": "97F968FE6B8719E4A22FC8A23DD6369548BDABE7574BE1539217DD52CA297884",
"live-socket.min.js": "FB799DA10059CC7EF934F6C678EE91729A0FB00D5D1EC24D7FBFC75FD8FA12FB", "live-socket.min.js": "FB799DA10059CC7EF934F6C678EE91729A0FB00D5D1EC24D7FBFC75FD8FA12FB",
"magic-grid.min.js": "30BA27115FAC84B018A5A8C64031939DF1E324AE199F2F3675925ECF427CBFFC", "magic-grid.min.js": "30BA27115FAC84B018A5A8C64031939DF1E324AE199F2F3675925ECF427CBFFC",
"mdi.min.js": "8A22F2F37F88F74FC07CE2FECA7CE135182058BE24409BAF3DEF0D5845B0BE1A", "mdi.min.js": "8A22F2F37F88F74FC07CE2FECA7CE135182058BE24409BAF3DEF0D5845B0BE1A",

Binary file not shown.

View File

@ -1 +1 @@
(()=>{return(e,t)=>{(async()=>{const e=await SpinQuery.select(()=>document.querySelector(".ops span.like"));if(!e){return}e.style.userSelect="none";function t(t,n){const u=new CustomEvent(t,n);e.dispatchEvent(u)}const n=200;let u=true;e.addEventListener("touchstart",e=>{e.preventDefault();u=true;setTimeout(()=>u=false,n);t("mousedown",e)});e.addEventListener("touchend",e=>{e.preventDefault();t("mouseup",e);if(u===true){t("click",e)}})})()}})(); (()=>{return(e,t)=>{(async()=>{const e=await SpinQuery.select(()=>document.querySelector(".ops span.like"));if(!e){return}e.style.userSelect="none";function t(t,n){const s=new CustomEvent(t,n);e.dispatchEvent(s)}const n=200;let s=true;e.addEventListener("touchstart",e=>{e.preventDefault();s=true;setTimeout(()=>s=false,n);t("mousedown",e)});e.addEventListener("touchend",e=>{e.preventDefault();t("mouseup",e);if(s){t("click",e)}})})()}})();

2
min/keymap.min.js vendored
View File

@ -1 +1 @@
(()=>{return(e,i)=>{const t=["https://www.bilibili.com/bangumi/","https://www.bilibili.com/video/"];if(t.some(e=>document.URL.startsWith(e))){const t={f:".bilibili-player-video-fullscreen",w:".bilibili-player-video-web-fullscreen",t:".bilibili-player-video-btn-widescreen",r:".bilibili-player-video-btn-repeat",m:".bilibili-player-video-btn-volume .bilibili-player-iconfont-volume",l:".video-toolbar .like",c:".video-toolbar .coin,.tool-bar .coin-info",s:".video-toolbar .collect"," ":".bilibili-player-video-btn-start"};let a;const n=e=>{let t=dq(".keymap-playback-tip");if(!t){const e=dq(".bilibili-player-video-wrap");if(!e){return}e.insertAdjacentHTML("afterbegin",`\n<div class="keymap-playback-tip-container">\n<i class="mdi mdi-fast-forward"></i>\n<div class="keymap-playback-tip"></div>x\n</div>\n`);i.applyStyleFromText(`\n .keymap-playback-tip-container {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n padding: 8px 16px;\n background-color: #000A;\n color: white;\n pointer-events: none;\n opacity: 0;\n z-index: 100;\n display: flex;\n align-items: center;\n font-size: 14pt;\n border-radius: 4px;\n transition: .2s ease-out;\n }\n .keymap-playback-tip-container.show {\n opacity: 1;\n }\n .keymap-playback-tip-container i {\n line-height: 1;\n margin-right: 8px;\n font-size: 18pt;\n }\n`,"keymapStyle");t=dq(".keymap-playback-tip")}t.innerHTML=e.toString();if(a){clearTimeout(a)}dq(".keymap-playback-tip-container").classList.add("show");a=setTimeout(()=>{dq(".keymap-playback-tip-container").classList.remove("show")},2e3)};document.body.addEventListener("keydown",i=>{if(document.activeElement&&["input","textarea"].includes(document.activeElement.nodeName.toLowerCase())){return}const a=i.key.toLowerCase();const o=!i.shiftKey&&!i.altKey&&!i.ctrlKey&&!i.metaKey;if(a in t&&o){const e=dq(t[a]);if(!e){return}i.stopPropagation();i.preventDefault();e.click()}else if(a==="d"&&o){const e=dq(".bilibili-player-video-danmaku-switch input");if(!e){return}i.stopPropagation();i.preventDefault();e.checked=!e.checked;raiseEvent(e,"change")}else if(a==="j"&&o){const t=dq(".bilibili-player-video video");t.currentTime+=e.keymapJumpSeconds;i.stopPropagation();i.preventDefault()}else if(i.shiftKey){const t=dq(".bilibili-player-video video");if(t===null){return}const o=[.5,.75,1,1.25,1.5,2,2.5,3];let l=true;if(a===">"||a==="ArrowUp".toLowerCase()){t.playbackRate=o.find(e=>e>t.playbackRate)||o[o.length-1];n(t.playbackRate)}else if(a==="<"||a==="ArrowDown".toLowerCase()){t.playbackRate=[...o].reverse().find(e=>e<t.playbackRate)||o[0];n(t.playbackRate)}else if(a==="?"){t.playbackRate=1;n(t.playbackRate)}else if(a==="w"){const e=dq(".video-toolbar .ops .watchlater,.more-ops-list .ops-watch-later");if(e!==null){e.click()}}else if(a==="j"){t.currentTime-=e.keymapJumpSeconds}else{l=false}if(l){i.stopPropagation();i.preventDefault()}}})}}})(); (()=>{return(e,i)=>{const t=["https://www.bilibili.com/bangumi/","https://www.bilibili.com/video/"];if(t.some(e=>document.URL.startsWith(e))){const t={f:".bilibili-player-video-fullscreen",w:".bilibili-player-video-web-fullscreen",t:".bilibili-player-video-btn-widescreen",r:".bilibili-player-video-btn-repeat",m:".bilibili-player-video-btn-volume .bilibili-player-iconfont-volume",c:".video-toolbar .coin,.tool-bar .coin-info",s:".video-toolbar .collect"," ":".bilibili-player-video-btn-start"};let n=true;let a;const o=e=>{let t=dq(".keymap-playback-tip");if(!t){const e=dq(".bilibili-player-video-wrap");if(!e){return}e.insertAdjacentHTML("afterbegin",`\n<div class="keymap-playback-tip-container">\n<i class="mdi mdi-fast-forward"></i>\n<div class="keymap-playback-tip"></div>x\n</div>\n`);i.applyStyleFromText(`\n .keymap-playback-tip-container {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n padding: 8px 16px;\n background-color: #000A;\n color: white;\n pointer-events: none;\n opacity: 0;\n z-index: 100;\n display: flex;\n align-items: center;\n font-size: 14pt;\n border-radius: 4px;\n transition: .2s ease-out;\n }\n .keymap-playback-tip-container.show {\n opacity: 1;\n }\n .keymap-playback-tip-container i {\n line-height: 1;\n margin-right: 8px;\n font-size: 18pt;\n }\n`,"keymapStyle");t=dq(".keymap-playback-tip")}t.innerHTML=e.toString();if(a){clearTimeout(a)}dq(".keymap-playback-tip-container").classList.add("show");a=setTimeout(()=>{dq(".keymap-playback-tip-container").classList.remove("show")},2e3)};document.body.addEventListener("keydown",i=>{if(document.activeElement&&["input","textarea"].includes(document.activeElement.nodeName.toLowerCase())){return}const a=i.key.toLowerCase();const l=!i.shiftKey&&!i.altKey&&!i.ctrlKey&&!i.metaKey;if(a in t&&l){const e=dq(t[a]);if(!e){return}i.stopPropagation();i.preventDefault();e.click()}else if(a==="d"&&l){const e=dq(".bilibili-player-video-danmaku-switch input");if(!e){return}i.stopPropagation();i.preventDefault();e.checked=!e.checked;raiseEvent(e,"change")}else if(a==="j"&&l){const t=dq(".bilibili-player-video video");t.currentTime+=e.keymapJumpSeconds;i.stopPropagation();i.preventDefault()}else if(a==="l"&&l){const e=dq(".video-toolbar .like");i.preventDefault();const t=(i,t)=>{const n=new CustomEvent(i,t);e.dispatchEvent(n)};n=true;setTimeout(()=>n=false,200);t("mousedown",i);document.body.addEventListener("keyup",e=>{e.preventDefault();t("mouseup",e);if(n){t("click",e)}},{once:true})}else if(i.shiftKey){const t=dq(".bilibili-player-video video");if(t===null){return}const n=[.5,.75,1,1.25,1.5,2,2.5,3];let l=true;if(a===">"||a==="ArrowUp".toLowerCase()){t.playbackRate=n.find(e=>e>t.playbackRate)||n[n.length-1];o(t.playbackRate)}else if(a==="<"||a==="ArrowDown".toLowerCase()){t.playbackRate=[...n].reverse().find(e=>e<t.playbackRate)||n[0];o(t.playbackRate)}else if(a==="?"){t.playbackRate=1;o(t.playbackRate)}else if(a==="w"){const e=dq(".video-toolbar .ops .watchlater,.more-ops-list .ops-watch-later");if(e!==null){e.click()}}else if(a==="j"){t.currentTime-=e.keymapJumpSeconds}else{l=false}if(l){i.stopPropagation();i.preventDefault()}}})}}})();

View File

@ -1,33 +1,27 @@
(async () => (async () => {
{ const likeButton = await SpinQuery.select(() => document.querySelector('.ops span.like'))
const likeButton = await SpinQuery.select(() => document.querySelector(".ops span.like")); if (!likeButton) {
if (!likeButton) return
{ }
return; likeButton.style.userSelect = 'none'
} function mountEvent (name, args) {
likeButton.style.userSelect = "none"; const event = new CustomEvent(name, args)
function mountEvent(name, args) likeButton.dispatchEvent(event)
{ }
const event = new CustomEvent(name, args);
likeButton.dispatchEvent(event);
}
const clickInterval = 200; const clickInterval = 200
let click = true; let click = true
likeButton.addEventListener("touchstart", e => likeButton.addEventListener('touchstart', e => {
{ e.preventDefault()
e.preventDefault(); click = true
click = true; setTimeout(() => click = false, clickInterval)
setTimeout(() => click = false, clickInterval); mountEvent('mousedown', e)
mountEvent("mousedown", e); })
}); likeButton.addEventListener('touchend', e => {
likeButton.addEventListener("touchend", e => e.preventDefault()
{ mountEvent('mouseup', e)
e.preventDefault(); if (click) {
mountEvent("mouseup", e); mountEvent('click', e)
if (click === true) }
{ })
mountEvent("click", e); })()
}
});
})();

View File

@ -9,11 +9,12 @@ if (supportedUrls.some(url => document.URL.startsWith(url))) {
t: '.bilibili-player-video-btn-widescreen', // 宽屏 t: '.bilibili-player-video-btn-widescreen', // 宽屏
r: '.bilibili-player-video-btn-repeat', // 切换循环模式 r: '.bilibili-player-video-btn-repeat', // 切换循环模式
m: '.bilibili-player-video-btn-volume .bilibili-player-iconfont-volume', // 切换静音 m: '.bilibili-player-video-btn-volume .bilibili-player-iconfont-volume', // 切换静音
l: '.video-toolbar .like', // 点赞 // l: '.video-toolbar .like', // 点赞
c: '.video-toolbar .coin,.tool-bar .coin-info', // 投币 c: '.video-toolbar .coin,.tool-bar .coin-info', // 投币
s: '.video-toolbar .collect', // 收藏 s: '.video-toolbar .collect', // 收藏
' ': '.bilibili-player-video-btn-start', // 砸瓦撸多 ' ': '.bilibili-player-video-btn-start', // 砸瓦撸多
} as { [key: string]: string } } as { [key: string]: string }
let likeClick = true
let showPlaybackTipOldTimeout: number let showPlaybackTipOldTimeout: number
const showPlaybackTip = (speed: number) => { const showPlaybackTip = (speed: number) => {
let tip = dq('.keymap-playback-tip') as HTMLDivElement let tip = dq('.keymap-playback-tip') as HTMLDivElement
@ -94,6 +95,23 @@ if (supportedUrls.some(url => document.URL.startsWith(url))) {
video.currentTime += settings.keymapJumpSeconds video.currentTime += settings.keymapJumpSeconds
e.stopPropagation() e.stopPropagation()
e.preventDefault() e.preventDefault()
} else if (key === 'l' && noModifyKeys) {
const likeButton = dq('.video-toolbar .like') as HTMLSpanElement
e.preventDefault()
const fireEvent = (name: string, args: Event) => {
const event = new CustomEvent(name, args)
likeButton.dispatchEvent(event)
}
likeClick = true
setTimeout(() => likeClick = false, 200)
fireEvent('mousedown', e)
document.body.addEventListener('keyup', e => {
e.preventDefault()
fireEvent('mouseup', e)
if (likeClick) {
fireEvent('click', e)
}
}, { once: true })
} else if (e.shiftKey) { } else if (e.shiftKey) {
const video = dq('.bilibili-player-video video') as HTMLVideoElement const video = dq('.bilibili-player-video video') as HTMLVideoElement
if (video === null) { if (video === null) {