Use player API

This commit is contained in:
the1812 2021-03-12 20:08:01 +08:00
parent c978c6aca0
commit 11c03e0731
2 changed files with 7 additions and 3 deletions

View File

@ -1 +1 @@
(()=>(e,t)=>{const r=t.import("framePlaybackHtml");t.applyStyle("framePlaybackStyle");const l=async()=>{if(e.videoScreenshot){const e=await SpinQuery.select(".video-take-screenshot");if(e===null||document.querySelector(".frame-playback")){return}e.insertAdjacentHTML("afterend",r)}else{const e=await SpinQuery.select(".bilibili-player-video-time");if(e===null||document.querySelector(".frame-playback")){return}e.insertAdjacentHTML("afterend",r)}let t=0;const l=()=>dq("video").currentTime-=t;const i=()=>dq("video").currentTime+=t;Observer.attributesSubtree(".bilibili-player-video-quality-menu ul.bui-select-list",(()=>{const e=document.querySelector(".bilibili-player-video-quality-menu .bui-select-item-active");const r=e?parseInt(e.getAttribute("data-value")):0;const l=(()=>{switch(r){case 116:case 74:return 6e4/1001;default:return 3e4/1001}})();t=1/l}));document.querySelector(".prev-frame").addEventListener("click",l);document.querySelector(".next-frame").addEventListener("click",i);if(e.touchVideoPlayer){document.querySelectorAll(".frame-playback").forEach((e=>e.classList.add("touch")))}};Observer.videoChange(l);return{reload:()=>document.querySelectorAll(".bilibili-player-video-control-bottom .frame-playback").forEach((e=>e.setAttribute("style","display: flex !important"))),unload:()=>document.querySelectorAll(".bilibili-player-video-control-bottom .frame-playback").forEach((e=>e.setAttribute("style","display: none !important")))}})();
(()=>(e,t)=>{const r=t.import("framePlaybackHtml");t.applyStyle("framePlaybackStyle");const l=async()=>{if(e.videoScreenshot){const e=await SpinQuery.select(".video-take-screenshot");if(e===null||document.querySelector(".frame-playback")){return}e.insertAdjacentHTML("afterend",r)}else{const e=await SpinQuery.select(".bilibili-player-video-time");if(e===null||document.querySelector(".frame-playback")){return}e.insertAdjacentHTML("afterend",r)}let t=0;const l=e=>()=>{const r=dq("video");unsafeWindow.player.seek(r.currentTime+(e?1:-1)*t,r.paused)};const a=l(false);const i=l(true);Observer.attributesSubtree(".bilibili-player-video-quality-menu ul.bui-select-list",(()=>{const e=document.querySelector(".bilibili-player-video-quality-menu .bui-select-item-active");const r=e?parseInt(e.getAttribute("data-value")):0;const l=(()=>{switch(r){case 116:case 74:return 6e4/1001;default:return 3e4/1001}})();t=1/l}));document.querySelector(".prev-frame").addEventListener("click",a);document.querySelector(".next-frame").addEventListener("click",i);if(e.touchVideoPlayer){document.querySelectorAll(".frame-playback").forEach((e=>e.classList.add("touch")))}};Observer.videoChange(l);return{reload:()=>document.querySelectorAll(".bilibili-player-video-control-bottom .frame-playback").forEach((e=>e.setAttribute("style","display: flex !important"))),unload:()=>document.querySelectorAll(".bilibili-player-video-control-bottom .frame-playback").forEach((e=>e.setAttribute("style","display: none !important")))}})();

View File

@ -17,8 +17,12 @@ const main = async () => {
}
let frameTime = 0
const prevFrame = () => dq('video').currentTime -= frameTime
const nextFrame = () => dq('video').currentTime += frameTime
const seek = (forward) => () => {
const video = dq('video')
unsafeWindow.player.seek(video.currentTime + (forward ? 1 : -1) * frameTime, video.paused)
}
const prevFrame = seek(false)
const nextFrame = seek(true)
Observer.attributesSubtree('.bilibili-player-video-quality-menu ul.bui-select-list', () => {
const selectedQuality = document.querySelector('.bilibili-player-video-quality-menu .bui-select-item-active')
const quality = selectedQuality ? parseInt(selectedQuality.getAttribute('data-value')) : 0