diff --git a/min/bpx-player-adaptor.min.js b/min/bpx-player-adaptor.min.js
new file mode 100644
index 000000000..d83b6a9ae
--- /dev/null
+++ b/min/bpx-player-adaptor.min.js
@@ -0,0 +1 @@
+(()=>(e,t)=>{const n=async()=>{const e=await SpinQuery.select(".bpx-player-container");if(!e){console.warn("[bpx player polyfill] bpxContainer not found");return}Observer.attributes(e,(()=>{const t=e.getAttribute("data-screen");document.body.classList.toggle("player-mode-webfullscreen",t==="full"||t==="web");document.body.classList.toggle("player-mode-widescreen",t==="wide")}))};const i=async()=>{const e=await SpinQuery.select((()=>unsafeWindow.ep));if(!e){console.warn("[bpx player polyfill] ep not found");return}Object.assign(unsafeWindow,{aid:e.aid.toString(),cid:e.cid.toString(),bvid:e.bvid})};const o=async()=>{if(!document.URL.startsWith("https://www.bilibili.com/bangumi/play/")){return}n();i()};return{export:{bpxPlayerPolyfill:o}}})();
\ No newline at end of file
diff --git a/min/gui-settings.min.css b/min/gui-settings.min.css
index 3f1a7c29e..ac6db6822 100644
--- a/min/gui-settings.min.css
+++ b/min/gui-settings.min.css
@@ -1 +1 @@
-.gui-settings-icon-panel{height:auto;display:flex;flex-direction:column;justify-content:center;align-items:center;position:fixed;top:calc(50vh + var(--side-bar-offset));left:0;width:32px;z-index:99999;transform:translateY(-50%);user-select:none}.gui-settings-icon-panel i{transition:.2s;opacity:.6;transform:rotate(360deg);font-size:12px}.gui-settings,.gui-settings-widgets{display:flex;justify-content:center;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent;margin:16px 0;width:24px;height:24px;transition:.2s;opacity:1;transform-origin:center!important;transform:translateX(-16px);background-color:#eeec;border-radius:0 50% 50% 0;padding:6px;box-sizing:content-box}.gui-settings-widgets:hover i,.gui-settings:hover i{opacity:.75;transform:rotate(0)}body.dark .gui-settings,body.dark .gui-settings-widgets{background-color:#5555}.gui-settings-widgets:hover,.gui-settings:hover{opacity:1;transform:translateX(0)}.gui-settings-footer,.gui-settings-header{flex-grow:0;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:32px 24px 32px 32px}.gui-settings-header .operations{margin-left:16px;cursor:pointer;position:relative}.gui-settings-header .operations,.gui-settings-header .operations *{transition:.2s ease-out}.gui-settings-header .operations .mdi{font-size:20px}.gui-settings-header .operations .operations-menu{transition-delay:.2s;position:absolute;top:calc(100% + 8px);right:0;display:flex;flex-direction:column;opacity:0;transform-origin:top;transform:scaleY(0);z-index:102;background-color:#fff;border-radius:8px;box-shadow:0 2px 4px 1px #0002}body.dark .gui-settings-header .operations .operations-menu{background-color:#333}.gui-settings-header .operations .operations-menu .operation{color:inherit;display:flex;align-items:center;padding:8px 16px;white-space:nowrap;font-size:14px;border-radius:8px;line-height:normal}.gui-settings-header .operations .operations-menu .operation .mdi{margin-right:8px}.gui-settings-header .operations .operations-menu .operation.release-notes .mdi{transform:scale(1.1)}.gui-settings-header .operations .operations-menu .operation:hover{background-color:#8882;color:inherit!important}.gui-settings-header .operations:hover .operations-menu{opacity:1;transform:scaleY(1)}.gui-settings-footer{height:80px;justify-content:center;position:relative}.gui-settings-content{flex-grow:1;overflow:auto;position:relative;overscroll-behavior:contain;display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}.gui-settings-content ul{padding:0;margin:0}.gui-settings-content ul li{font-size:16px;margin-bottom:18px;display:flex;height:24px;transition:.2s;box-sizing:content-box}.gui-settings-content ul li.disabled,.gui-settings-content ul li:not(.category).folded{height:0;margin:0;overflow:hidden}.gui-settings-content ul li.indent-0{margin-left:16px}.gui-settings-content ul li.indent-1{margin-left:80px}.gui-settings-content ul li.indent-2{margin-left:144px}.gui-settings-content ul li.indent-center{align-items:center;justify-content:center}.gui-settings-content ul li.category{padding:16px 0;margin-bottom:18px;border-top:1px dashed #8884;border-bottom:1px dashed #8884;background:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:101;cursor:pointer;transition:.2s ease-out;-webkit-tap-highlight-color:transparent}.gui-settings-content ul li.category.folded{margin-bottom:-1px}.gui-settings-content ul li.category *{opacity:.8}.gui-settings-content .script-info{display:flex;align-items:center;flex-wrap:wrap;padding:0 8px;font-size:12px}.gui-settings-content .script-info>*{padding:8px 0}.gui-settings-content .script-info>:not(:last-child){margin-right:8px}.gui-settings-content .script-info .grow{flex:1}.gui-settings-content .script-info .selectable{user-select:text}.gui-settings-content .script-info .content-hash,.gui-settings-content .script-info .version{opacity:.75}.gui-settings-content .script-info a{color:inherit!important}.gui-settings-content .script-info a:active,.gui-settings-content .script-info a:hover{color:var(--theme-color)!important}.gui-settings-title{font-size:16pt;flex:0 0 auto}.gui-settings-box .gui-settings-title{margin-right:64px}.gui-settings-search[type=text]{flex:1 0 auto;height:auto;border:none;padding:6px;font-size:12pt;width:40%;border-bottom:1px solid #8884;transition:.2s;color:inherit;background:0 0;box-sizing:border-box;outline:0!important}.gui-settings-close{width:24px;height:24px;padding:16px}.gui-settings-header .gui-settings-close{cursor:pointer;-webkit-tap-highlight-color:transparent}.gui-settings-textbox-container{display:flex;justify-content:center;align-items:center;-webkit-tap-highlight-color:transparent}.gui-settings-textbox-container span{margin:0 16px;transition:.2s}.gui-settings-textbox-container input{border:none;height:100%;max-width:90px;padding:6px 8px!important;background:0 0;box-shadow:0 0 0 1px #8884;transition:.2s;font-size:16px}.gui-settings-textbox-container input:focus-within{box-shadow:0 0 0 1px var(--theme-color)}.gui-settings-textbox-container input:disabled,.gui-settings-textbox-container.disabled div,.gui-settings-textbox-container.disabled span{opacity:.5}.gui-settings-textbox-container input[key=batchFilenameFormat],.gui-settings-textbox-container input[key=filenameFormat]{max-width:500px}.gui-settings-dropdown-span{margin:0 16px;transition:.2s}.gui-settings-checkbox-container{cursor:pointer;display:flex;width:100%;justify-content:start;align-items:center;padding:0 16px;-webkit-tap-highlight-color:transparent}.gui-settings-checkbox-container .gui-settings-checkbox{width:28px;margin-right:24px;height:12px;background:#8884;border-radius:16px;position:relative}.gui-settings-checkbox-container .gui-settings-checkbox::after{content:"";width:20px;height:20px;background:#fff;position:absolute;border-radius:50%;top:-4px;left:-4px;box-shadow:0 0 0 1px #8884 inset;transition:.2s ease-out}body.dark .gui-settings-checkbox-container .gui-settings-checkbox::after{background:#666;box-shadow:none}.gui-settings-checkbox-container .gui-settings-ok{width:24px;height:24px;margin-right:16px;transition:.2s}.gui-settings-checkbox-container input{visibility:collapse;transition:.2s;width:0;position:absolute}.gui-settings-checkbox-container input:checked~.gui-settings-checkbox{background:var(--theme-color-50)}.gui-settings-checkbox-container input:checked~.gui-settings-checkbox::after{background:var(--theme-color)!important;box-shadow:0 2px 4px 0 var(--theme-color-40);left:calc(100% - 16px)}.gui-settings-checkbox-container input:disabled~.gui-settings-checkbox{opacity:.5}.gui-settings-checkbox-container input~.gui-settings-ok{background-color:#8884}.gui-settings-checkbox-container input:checked~.gui-settings-ok{background-color:var(--theme-color)}.gui-settings-checkbox-container input~.gui-settings-ok>i{opacity:0;transform-origin:center;transform:scale(.9)}.gui-settings-checkbox-container input:checked~.gui-settings-ok>i{opacity:1}.gui-settings-checkbox-container input:disabled~.gui-settings-ok,.gui-settings-checkbox-container input:disabled~span{opacity:.5}button.gui-settings-button{padding:6px 20px;margin:0 4px;max-height:34px;border:none;background:#8884;font-size:16px;cursor:pointer;transition:.2s ease-out;font-family:inherit;-webkit-tap-highlight-color:transparent}button.gui-settings-button:hover{opacity:.9}button.gui-settings-button:active{opacity:.8}button.gui-settings-button:focus{outline:0}.custom-color-preview{width:28px;height:28px;border-radius:50%;background:var(--theme-color);margin-right:16px;position:relative;cursor:pointer;box-sizing:border-box;box-shadow:0 2px 4px 0 var(--theme-color-40)}.predefined-colors{transition:.2s;display:flex;opacity:0;background:#fff;width:168px;height:168px;position:absolute;box-shadow:rgba(0,0,0,.2) 0 4px 8px 0;top:32px;left:calc(-84px + 50%);transform:scale(0);transform-origin:top;padding:6px;border-radius:8px;z-index:9}.predefined-colors.opened{opacity:1;transform:scale(1)}.predefined-colors-grid{display:grid;grid-template-columns:auto auto auto auto;margin:0;flex-grow:1;height:100%;grid-gap:6px;gap:6px}.predefined-colors-grid-block{width:100%;height:100%;border-radius:4px;justify-self:center;align-self:center;cursor:pointer;transform-origin:center;transition:.1s ease-out}.predefined-colors-grid-block:hover{transform:scale(1.1)}input[key]:focus{outline:0}input[type=text][key]{height:auto;border:none;line-height:normal}.gui-settings-label{margin:0 16px;font-size:16px}.contact-help,.hidden{display:none!important}@supports (backdrop-filter:blur(24px)) or (-webkit-backdrop-filter:blur(24px)){.gui-settings-box.blur li.category{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:0 0}.gui-settings-box.blur{background:#fff8}.gui-settings-box.blur .gui-settings-content,.gui-settings-box.blur .gui-settings-footer,.gui-settings-box.blur .gui-settings-header{background:#fff8;-webkit-backdrop-filter:blur(64px);backdrop-filter:blur(64px)}}li.category i.icon-arrow{transition:.2s ease-out}li.category.folded i.icon-arrow{transform:rotate(180deg)}.gui-settings-dropdown-container{display:flex;align-items:center}.gui-settings-dropdown{position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;background-color:transparent;box-shadow:0 0 0 1px #8884;display:inline-flex;align-items:center;height:32px;transition:.2s ease-out}.gui-settings-dropdown:active,.gui-settings-dropdown:focus-within{box-shadow:0 0 0 1px var(--theme-color)}.gui-settings-dropdown>i{transition:.2s ease-out;transform-origin:center;transform:rotate(180deg)}.gui-settings-dropdown>ul{position:absolute;top:calc(100% + 1px);width:100%;cursor:pointer;background:#fff;transform-origin:top;transform:scaleY(0);transition:.2s cubic-bezier(.6,-.28,.74,.05);display:flex;flex-direction:column;align-items:center;box-shadow:0 4px 8px 0 rgba(0,0,0,.05);z-index:102;border:1px solid #8882;box-sizing:border-box}.gui-settings-dropdown ul li{margin:0;padding:4px 0;height:auto;width:100%;justify-content:center;border-radius:3px;line-height:1.5}.gui-settings-dropdown ul li:hover{background:#8882}.gui-settings-dropdown.opened>ul{transform:scaleY(1);transition-timing-function:cubic-bezier(.18,.89,.32,1.28)}.gui-settings-dropdown.opened>i{transform:rotate(0)}.gui-settings-dropdown input{cursor:pointer;border:none;height:100%;max-width:80px;padding:4px 8px;transition:.2s;font-size:16px;background-color:transparent}.gui-settings-dropdown input[key=feedsTranslateProvider]{max-width:100px}.gui-settings-dropdown input[key=defaultPlayerMode]{max-width:120px}.gui-settings-dropdown input[key=scriptLoadingMode]{max-width:170px}.gui-settings-dropdown input[key=defaultBangumiLayout],.gui-settings-dropdown input[key=defaultPlayerLayout],.gui-settings-dropdown input[key=defaultVideoSpeed]{max-width:50px}.gui-settings-mask{height:calc(100% + 5px);width:calc(100% + 5px);opacity:0;background:#000a;position:fixed;top:0;left:0;z-index:99999;pointer-events:none;transition:.3s cubic-bezier(0,.86,.58,1);overscroll-behavior:contain}.gui-settings-mask.opened{opacity:1;pointer-events:initial}.gui-settings-mask.opened.transparent{opacity:0;transition:.3s cubic-bezier(0,.86,.58,1) .3s}.gui-settings-box,.gui-settings-widgets-box{height:100%;width:420px;background:#fff;color:#000;position:fixed;top:0;left:0;z-index:100001;transform:translateX(-101%);transition:.3s cubic-bezier(0,.86,.58,1);display:none;flex-direction:column;box-shadow:4px 0 16px 0 #0000;user-select:none}.gui-settings-box.loaded,.gui-settings-widgets-box.loaded{display:flex}.gui-settings-box.opened,.gui-settings-widgets-box.opened{transform:translateX(0);box-shadow:4px 0 16px 0 #0005}.gui-settings-box kbd,.gui-settings-widgets-box kbd{padding:0 4px;border-radius:4px;border:1px solid #444;background-color:#222;border-bottom-width:3px;margin:0 4px}.gui-settings-box li i.downloading,.gui-settings-widgets-box li i.downloading{margin-left:8px;font-style:normal;display:flex;align-items:center;font-size:14px;background:var(--theme-color);color:var(--foreground-color);padding:2px 8px}.gui-settings-widgets-box{min-width:210px;width:auto}.gui-settings-widgets-box>.title{margin:32px;font-size:16pt}.gui-settings-widgets-box>.widgets-container{padding:32px;display:flex;flex-direction:column;align-items:start;justify-content:start;position:relative;overscroll-behavior:contain;overflow:auto;height:100%}.gui-settings-widgets-box>.widgets-container .empty-tip{font-size:10pt;display:none}.gui-settings-widgets-box>.widgets-container .empty-tip.show{display:block}.gui-settings-widgets-box>.gui-settings-header{justify-content:start}.gui-settings-flat-button,.gui-settings-flat-button a,.gui-settings-flat-button a:hover{display:flex;align-items:center;justify-content:center;color:inherit}.gui-settings-flat-button{width:auto;white-space:nowrap;border:2px solid #8882;margin:4px 0;border-radius:8px;padding:8px 12px 8px 8px;color:inherit;background-color:transparent;cursor:pointer;transition:.2s ease-out;font-size:10pt;flex:0 0 auto;height:40px;box-sizing:border-box;-webkit-tap-highlight-color:transparent!important}.gui-settings-flat-button:disabled{opacity:.5;cursor:not-allowed}.gui-settings-flat-button:hover:not(:disabled){background:#8882;color:inherit}.gui-settings-flat-button:active:not(:disabled){background:#8883}.gui-settings-flat-button:focus{outline:0}.gui-settings-flat-button i{margin-right:8px;line-height:24px;height:24px;opacity:.75}.gui-settings-flat-button span>span{margin:0 2px}.gui-settings-flat-button span>span:last-child{margin-right:0}.gui-settings-flat-button span>span:first-child{margin-left:0}.gui-settings-flat-button .popup{position:absolute;top:calc(100% + 2px);transition:.2s ease-out;transform:translateX(-50%) translateY(-6px);opacity:0;pointer-events:none;left:50%;background:#fff;box-shadow:rgba(0,0,0,.2) 0 4px 8px 0;z-index:200;display:flex;flex-direction:column;align-items:center;width:max-content;margin-bottom:24px}.gui-settings-flat-button .popup *{transition:.2s}.gui-settings-flat-button .popup.opened{transform:translateX(-50%) translateY(0);opacity:1;pointer-events:initial}.gui-settings-flat-button .popup ul{list-style:none;margin:0;padding:0}.gui-settings-header>i{margin-right:8px}.player-full-win .app-content,.player-full-win .live-room-app .app-content,.player-mode-webfullscreen .player-module{z-index:100000!important}body.round-corner{--corner-radius:4px;--large-corner-radius:8px}body.round-corner .gui-settings-box li i.downloading,body.round-corner .gui-settings-dropdown,body.round-corner .gui-settings-dropdown>ul,body.round-corner .gui-settings-flat-button .popup,body.round-corner .gui-settings-textbox-container input{border-radius:var(--corner-radius)}.gui-settings-dock-right .gui-settings-icon-panel{right:0;left:unset}.gui-settings-dock-right .gui-settings-icon-panel .gui-settings,.gui-settings-dock-right .gui-settings-icon-panel .gui-settings-widgets{transform:translateX(16px);border-radius:50% 0 0 50%}.gui-settings-dock-right .gui-settings-icon-panel .gui-settings-widgets:hover,.gui-settings-dock-right .gui-settings-icon-panel .gui-settings:hover{transform:translateX(0)}.gui-settings-dock-right .gui-settings-box,.gui-settings-dock-right .gui-settings-widgets-box{right:0;left:unset;transform:translateX(101%)}.gui-settings-dock-right .gui-settings-box.opened,.gui-settings-dock-right .gui-settings-widgets-box.opened{transform:translateX(0)}.gui-settings-dock-right .gui-settings-tooltip{right:440px;left:unset}.gui-settings-auto-hide-side-bar .gui-settings,.gui-settings-auto-hide-side-bar .gui-settings-widgets{transition-delay:.3s;transform:translateX(-36px)}.gui-settings-auto-hide-side-bar .gui-settings-icon-panel::before{content:"";position:fixed;left:0;width:1px;height:200vh;top:-100vh}.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings,.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings-widgets{transition-delay:0s;transform:translateX(-16px)}.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings-widgets:hover,.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings:hover{transform:translateX(0)}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings,.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-widgets{transform:translateX(36px)}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel::before{right:0;left:unset}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings,.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings-widgets{transform:translateX(16px)}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings-widgets:hover,.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings:hover{transform:translateX(0)}html.elegant-scrollbar ::-webkit-scrollbar{width:5px;height:5px}html.elegant-scrollbar ::-webkit-scrollbar-corner,html.elegant-scrollbar ::-webkit-scrollbar-track{background:0 0}html.elegant-scrollbar ::-webkit-resizer,html.elegant-scrollbar ::-webkit-scrollbar-thumb{background:#aaa;border-radius:3px}html.elegant-scrollbar ::-webkit-scrollbar-thumb:hover{background:#888}html.elegant-scrollbar,html.elegant-scrollbar *{scrollbar-color:#aaa transparent;scrollbar-width:thin}.bilibili-player-dm-tip-wrap{pointer-events:none!important}
\ No newline at end of file
+.gui-settings-icon-panel{height:auto;display:flex;flex-direction:column;justify-content:center;align-items:center;position:fixed;top:calc(50vh + var(--side-bar-offset));left:0;width:32px;z-index:99999;transform:translateY(-50%);user-select:none}.gui-settings-icon-panel i{transition:.2s;opacity:.6;transform:rotate(360deg);font-size:12px}.gui-settings,.gui-settings-widgets{display:flex;justify-content:center;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent;margin:16px 0;width:24px;height:24px;transition:.2s;opacity:1;transform-origin:center!important;transform:translateX(-16px);background-color:#eeec;border-radius:0 50% 50% 0;padding:6px;box-sizing:content-box}.gui-settings-widgets:hover i,.gui-settings:hover i{opacity:.75;transform:rotate(0)}body.dark .gui-settings,body.dark .gui-settings-widgets{background-color:#5555}.gui-settings-widgets:hover,.gui-settings:hover{opacity:1;transform:translateX(0)}.gui-settings-footer,.gui-settings-header{flex-grow:0;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:32px 24px 32px 32px}.gui-settings-header .operations{margin-left:16px;cursor:pointer;position:relative}.gui-settings-header .operations,.gui-settings-header .operations *{transition:.2s ease-out}.gui-settings-header .operations .mdi{font-size:20px}.gui-settings-header .operations .operations-menu{transition-delay:.2s;position:absolute;top:calc(100% + 8px);right:0;display:flex;flex-direction:column;opacity:0;transform-origin:top;transform:scaleY(0);z-index:102;background-color:#fff;border-radius:8px;box-shadow:0 2px 4px 1px #0002}body.dark .gui-settings-header .operations .operations-menu{background-color:#333}.gui-settings-header .operations .operations-menu .operation{color:inherit;display:flex;align-items:center;padding:8px 16px;white-space:nowrap;font-size:14px;border-radius:8px;line-height:normal}.gui-settings-header .operations .operations-menu .operation .mdi{margin-right:8px}.gui-settings-header .operations .operations-menu .operation.release-notes .mdi{transform:scale(1.1)}.gui-settings-header .operations .operations-menu .operation:hover{background-color:#8882;color:inherit!important}.gui-settings-header .operations:hover .operations-menu{opacity:1;transform:scaleY(1)}.gui-settings-footer{height:80px;justify-content:center;position:relative}.gui-settings-content{flex-grow:1;overflow:auto;position:relative;overscroll-behavior:contain;display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}.gui-settings-content ul{padding:0;margin:0}.gui-settings-content ul li{font-size:16px;margin-bottom:18px;display:flex;height:24px;transition:.2s;box-sizing:content-box}.gui-settings-content ul li.disabled,.gui-settings-content ul li:not(.category).folded{height:0;margin:0;overflow:hidden}.gui-settings-content ul li.indent-0{margin-left:16px}.gui-settings-content ul li.indent-1{margin-left:80px}.gui-settings-content ul li.indent-2{margin-left:144px}.gui-settings-content ul li.indent-center{align-items:center;justify-content:center}.gui-settings-content ul li.category{padding:16px 0;margin-bottom:18px;border-top:1px dashed #8884;border-bottom:1px dashed #8884;background:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:101;cursor:pointer;transition:.2s ease-out;-webkit-tap-highlight-color:transparent}.gui-settings-content ul li.category.folded{margin-bottom:-1px}.gui-settings-content ul li.category *{opacity:.8}.gui-settings-content .script-info{display:flex;align-items:center;flex-wrap:wrap;padding:0 8px;font-size:12px}.gui-settings-content .script-info>*{padding:8px 0}.gui-settings-content .script-info>:not(:last-child){margin-right:8px}.gui-settings-content .script-info .grow{flex:1}.gui-settings-content .script-info .selectable{user-select:text}.gui-settings-content .script-info .content-hash,.gui-settings-content .script-info .version{opacity:.75}.gui-settings-content .script-info a{color:inherit!important}.gui-settings-content .script-info a:active,.gui-settings-content .script-info a:hover{color:var(--theme-color)!important}.gui-settings-title{font-size:16pt;flex:0 0 auto}.gui-settings-box .gui-settings-title{margin-right:64px}.gui-settings-search[type=text]{flex:1 0 auto;height:auto;border:none;padding:6px;font-size:12pt;width:40%;border-bottom:1px solid #8884;transition:.2s;color:inherit;background:0 0;box-sizing:border-box;outline:0!important}.gui-settings-close{width:24px;height:24px;padding:16px}.gui-settings-header .gui-settings-close{cursor:pointer;-webkit-tap-highlight-color:transparent}.gui-settings-textbox-container{display:flex;justify-content:center;align-items:center;-webkit-tap-highlight-color:transparent}.gui-settings-textbox-container span{margin:0 16px;transition:.2s}.gui-settings-textbox-container input{border:none;height:100%;max-width:90px;padding:6px 8px!important;background:0 0;box-shadow:0 0 0 1px #8884;transition:.2s;font-size:16px}.gui-settings-textbox-container input:focus-within{box-shadow:0 0 0 1px var(--theme-color)}.gui-settings-textbox-container input:disabled,.gui-settings-textbox-container.disabled div,.gui-settings-textbox-container.disabled span{opacity:.5}.gui-settings-textbox-container input[key=batchFilenameFormat],.gui-settings-textbox-container input[key=filenameFormat]{max-width:500px}.gui-settings-dropdown-span{margin:0 16px;transition:.2s}.gui-settings-checkbox-container{cursor:pointer;display:flex;width:100%;justify-content:start;align-items:center;padding:0 16px;-webkit-tap-highlight-color:transparent}.gui-settings-checkbox-container .gui-settings-checkbox{width:28px;margin-right:24px;height:12px;background:#8884;border-radius:16px;position:relative}.gui-settings-checkbox-container .gui-settings-checkbox::after{content:"";width:20px;height:20px;background:#fff;position:absolute;border-radius:50%;top:-4px;left:-4px;box-shadow:0 0 0 1px #8884 inset;transition:.2s ease-out}body.dark .gui-settings-checkbox-container .gui-settings-checkbox::after{background:#666;box-shadow:none}.gui-settings-checkbox-container .gui-settings-ok{width:24px;height:24px;margin-right:16px;transition:.2s}.gui-settings-checkbox-container input{visibility:collapse;transition:.2s;width:0;position:absolute}.gui-settings-checkbox-container input:checked~.gui-settings-checkbox{background:var(--theme-color-50)}.gui-settings-checkbox-container input:checked~.gui-settings-checkbox::after{background:var(--theme-color)!important;box-shadow:0 2px 4px 0 var(--theme-color-40);left:calc(100% - 16px)}.gui-settings-checkbox-container input:disabled~.gui-settings-checkbox{opacity:.5}.gui-settings-checkbox-container input~.gui-settings-ok{background-color:#8884}.gui-settings-checkbox-container input:checked~.gui-settings-ok{background-color:var(--theme-color)}.gui-settings-checkbox-container input~.gui-settings-ok>i{opacity:0;transform-origin:center;transform:scale(.9)}.gui-settings-checkbox-container input:checked~.gui-settings-ok>i{opacity:1}.gui-settings-checkbox-container input:disabled~.gui-settings-ok,.gui-settings-checkbox-container input:disabled~span{opacity:.5}button.gui-settings-button{padding:6px 20px;margin:0 4px;max-height:34px;border:none;background:#8884;font-size:16px;cursor:pointer;transition:.2s ease-out;font-family:inherit;-webkit-tap-highlight-color:transparent}button.gui-settings-button:hover{opacity:.9}button.gui-settings-button:active{opacity:.8}button.gui-settings-button:focus{outline:0}.custom-color-preview{width:28px;height:28px;border-radius:50%;background:var(--theme-color);margin-right:16px;position:relative;cursor:pointer;box-sizing:border-box;box-shadow:0 2px 4px 0 var(--theme-color-40)}.predefined-colors{transition:.2s;display:flex;opacity:0;background:#fff;width:168px;height:168px;position:absolute;box-shadow:rgba(0,0,0,.2) 0 4px 8px 0;top:32px;left:calc(-84px + 50%);transform:scale(0);transform-origin:top;padding:6px;border-radius:8px;z-index:9}.predefined-colors.opened{opacity:1;transform:scale(1)}.predefined-colors-grid{display:grid;grid-template-columns:auto auto auto auto;margin:0;flex-grow:1;height:100%;grid-gap:6px;gap:6px}.predefined-colors-grid-block{width:100%;height:100%;border-radius:4px;justify-self:center;align-self:center;cursor:pointer;transform-origin:center;transition:.1s ease-out}.predefined-colors-grid-block:hover{transform:scale(1.1)}input[key]:focus{outline:0}input[type=text][key]{height:auto;border:none;line-height:normal}.gui-settings-label{margin:0 16px;font-size:16px}.contact-help,.hidden{display:none!important}@supports (backdrop-filter:blur(24px)) or (-webkit-backdrop-filter:blur(24px)){.gui-settings-box.blur li.category{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:0 0}.gui-settings-box.blur{background:#fff8}.gui-settings-box.blur .gui-settings-content,.gui-settings-box.blur .gui-settings-footer,.gui-settings-box.blur .gui-settings-header{background:#fff8;-webkit-backdrop-filter:blur(64px);backdrop-filter:blur(64px)}}li.category i.icon-arrow{transition:.2s ease-out}li.category.folded i.icon-arrow{transform:rotate(180deg)}.gui-settings-dropdown-container{display:flex;align-items:center}.gui-settings-dropdown{position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;background-color:transparent;box-shadow:0 0 0 1px #8884;display:inline-flex;align-items:center;height:32px;transition:.2s ease-out}.gui-settings-dropdown:active,.gui-settings-dropdown:focus-within{box-shadow:0 0 0 1px var(--theme-color)}.gui-settings-dropdown>i{transition:.2s ease-out;transform-origin:center;transform:rotate(180deg)}.gui-settings-dropdown>ul{position:absolute;top:calc(100% + 1px);width:100%;cursor:pointer;background:#fff;transform-origin:top;transform:scaleY(0);transition:.2s cubic-bezier(.6,-.28,.74,.05);display:flex;flex-direction:column;align-items:center;box-shadow:0 4px 8px 0 rgba(0,0,0,.05);z-index:102;border:1px solid #8882;box-sizing:border-box}.gui-settings-dropdown ul li{margin:0;padding:4px 0;height:auto;width:100%;justify-content:center;border-radius:3px;line-height:1.5}.gui-settings-dropdown ul li:hover{background:#8882}.gui-settings-dropdown.opened>ul{transform:scaleY(1);transition-timing-function:cubic-bezier(.18,.89,.32,1.28)}.gui-settings-dropdown.opened>i{transform:rotate(0)}.gui-settings-dropdown input{cursor:pointer;border:none;height:100%;max-width:80px;padding:4px 8px;transition:.2s;font-size:16px;background-color:transparent}.gui-settings-dropdown input[key=feedsTranslateProvider]{max-width:100px}.gui-settings-dropdown input[key=defaultPlayerMode]{max-width:120px}.gui-settings-dropdown input[key=scriptLoadingMode]{max-width:170px}.gui-settings-dropdown input[key=defaultBangumiLayout],.gui-settings-dropdown input[key=defaultPlayerLayout],.gui-settings-dropdown input[key=defaultVideoSpeed]{max-width:50px}.gui-settings-mask{height:calc(100% + 5px);width:calc(100% + 5px);opacity:0;background:#000a;position:fixed;top:0;left:0;z-index:99999;pointer-events:none;transition:.3s cubic-bezier(0,.86,.58,1);overscroll-behavior:contain}.gui-settings-mask.opened{opacity:1;pointer-events:initial}.gui-settings-mask.opened.transparent{opacity:0;transition:.3s cubic-bezier(0,.86,.58,1) .3s}.gui-settings-box,.gui-settings-widgets-box{height:100%;width:420px;background:#fff;color:#000;position:fixed;top:0;left:0;z-index:100001;transform:translateX(-101%);transition:.3s cubic-bezier(0,.86,.58,1);display:none;flex-direction:column;box-shadow:4px 0 16px 0 #0000;user-select:none}.gui-settings-box.loaded,.gui-settings-widgets-box.loaded{display:flex}.gui-settings-box.opened,.gui-settings-widgets-box.opened{transform:translateX(0);box-shadow:4px 0 16px 0 #0005}.gui-settings-box kbd,.gui-settings-widgets-box kbd{padding:0 4px;border-radius:4px;border:1px solid #444;background-color:#222;border-bottom-width:3px;margin:0 4px}.gui-settings-box li i.downloading,.gui-settings-widgets-box li i.downloading{margin-left:8px;font-style:normal;display:flex;align-items:center;font-size:14px;background:var(--theme-color);color:var(--foreground-color);padding:2px 8px}.gui-settings-widgets-box{min-width:210px;width:auto}.gui-settings-widgets-box>.title{margin:32px;font-size:16pt}.gui-settings-widgets-box>.widgets-container{padding:32px;display:flex;flex-direction:column;align-items:start;justify-content:start;position:relative;overscroll-behavior:contain;overflow:auto;height:100%}.gui-settings-widgets-box>.widgets-container .empty-tip{font-size:10pt;display:none}.gui-settings-widgets-box>.widgets-container .empty-tip.show{display:block}.gui-settings-widgets-box>.gui-settings-header{justify-content:start}.gui-settings-flat-button,.gui-settings-flat-button a,.gui-settings-flat-button a:hover{display:flex;align-items:center;justify-content:center;color:inherit}.gui-settings-flat-button{width:auto;white-space:nowrap;border:2px solid #8882;margin:4px 0;border-radius:8px;padding:8px 12px 8px 8px;color:inherit;background-color:transparent;cursor:pointer;transition:.2s ease-out;font-size:10pt;flex:0 0 auto;height:40px;box-sizing:border-box;-webkit-tap-highlight-color:transparent!important}.gui-settings-flat-button:disabled{opacity:.5;cursor:not-allowed}.gui-settings-flat-button:hover:not(:disabled){background:#8882;color:inherit}.gui-settings-flat-button:active:not(:disabled){background:#8883}.gui-settings-flat-button:focus{outline:0}.gui-settings-flat-button i{margin-right:8px;line-height:24px;height:24px;opacity:.75}.gui-settings-flat-button span>span{margin:0 2px}.gui-settings-flat-button span>span:last-child{margin-right:0}.gui-settings-flat-button span>span:first-child{margin-left:0}.gui-settings-flat-button .popup{position:absolute;top:calc(100% + 2px);transition:.2s ease-out;transform:translateX(-50%) translateY(-6px);opacity:0;pointer-events:none;left:50%;background:#fff;box-shadow:rgba(0,0,0,.2) 0 4px 8px 0;z-index:200;display:flex;flex-direction:column;align-items:center;width:max-content;margin-bottom:24px}.gui-settings-flat-button .popup *{transition:.2s}.gui-settings-flat-button .popup.opened{transform:translateX(-50%) translateY(0);opacity:1;pointer-events:initial}.gui-settings-flat-button .popup ul{list-style:none;margin:0;padding:0}.gui-settings-header>i{margin-right:8px}.player-full-win .app-content,.player-full-win .live-room-app .app-content,.player-mode-webfullscreen .player-module,.player-mode-webfullscreen .player-module .player-container{z-index:100000!important}body.round-corner{--corner-radius:4px;--large-corner-radius:8px}body.round-corner .gui-settings-box li i.downloading,body.round-corner .gui-settings-dropdown,body.round-corner .gui-settings-dropdown>ul,body.round-corner .gui-settings-flat-button .popup,body.round-corner .gui-settings-textbox-container input{border-radius:var(--corner-radius)}.gui-settings-dock-right .gui-settings-icon-panel{right:0;left:unset}.gui-settings-dock-right .gui-settings-icon-panel .gui-settings,.gui-settings-dock-right .gui-settings-icon-panel .gui-settings-widgets{transform:translateX(16px);border-radius:50% 0 0 50%}.gui-settings-dock-right .gui-settings-icon-panel .gui-settings-widgets:hover,.gui-settings-dock-right .gui-settings-icon-panel .gui-settings:hover{transform:translateX(0)}.gui-settings-dock-right .gui-settings-box,.gui-settings-dock-right .gui-settings-widgets-box{right:0;left:unset;transform:translateX(101%)}.gui-settings-dock-right .gui-settings-box.opened,.gui-settings-dock-right .gui-settings-widgets-box.opened{transform:translateX(0)}.gui-settings-dock-right .gui-settings-tooltip{right:440px;left:unset}.gui-settings-auto-hide-side-bar .gui-settings,.gui-settings-auto-hide-side-bar .gui-settings-widgets{transition-delay:.3s;transform:translateX(-36px)}.gui-settings-auto-hide-side-bar .gui-settings-icon-panel::before{content:"";position:fixed;left:0;width:1px;height:200vh;top:-100vh}.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings,.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings-widgets{transition-delay:0s;transform:translateX(-16px)}.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings-widgets:hover,.gui-settings-auto-hide-side-bar .gui-settings-icon-panel:hover .gui-settings:hover{transform:translateX(0)}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings,.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-widgets{transform:translateX(36px)}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel::before{right:0;left:unset}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings,.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings-widgets{transform:translateX(16px)}.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings-widgets:hover,.gui-settings-auto-hide-side-bar.gui-settings-dock-right .gui-settings-icon-panel:hover .gui-settings:hover{transform:translateX(0)}html.elegant-scrollbar ::-webkit-scrollbar{width:5px;height:5px}html.elegant-scrollbar ::-webkit-scrollbar-corner,html.elegant-scrollbar ::-webkit-scrollbar-track{background:0 0}html.elegant-scrollbar ::-webkit-resizer,html.elegant-scrollbar ::-webkit-scrollbar-thumb{background:#aaa;border-radius:3px}html.elegant-scrollbar ::-webkit-scrollbar-thumb:hover{background:#888}html.elegant-scrollbar,html.elegant-scrollbar *{scrollbar-color:#aaa transparent;scrollbar-width:thin}.bilibili-player-dm-tip-wrap{pointer-events:none!important}
\ No newline at end of file
diff --git a/min/gui-settings.min.js b/min/gui-settings.min.js
index 70067038f..356626da7 100644
--- a/min/gui-settings.min.js
+++ b/min/gui-settings.min.js
@@ -1 +1 @@
-(()=>(e,t)=>{const{ThemeColors:n}=t.import("theme-colors");const{SettingsSearch:i}=t.import("settings-search");const{Validator:s}=t.import("text-validate");let o=[];let c=[];let a=[];function r(e){let t=e.nextElementSibling;const n=[];while(t!==null&&!t.classList.contains("category")){n.push(t);t=t.nextElementSibling}return n}function l(){a.forEach((t=>t.value=e[t.getAttribute("key")]));c.forEach((t=>t.checked=e[t.getAttribute("key")]))}function d(){dq(".gui-settings-mask").addEventListener("click",(()=>{dqa(".gui-settings-widgets-box,.gui-settings-box,.gui-settings-mask,.bilibili-evolved-about").forEach((e=>e.classList.remove("opened")));const e=dq(".gui-settings-tooltip");if(e){e.innerHTML=""}}));a.forEach((t=>{t.setAttribute("placeholder",e[t.getAttribute("key")])}));document.querySelectorAll(".gui-settings-content ul li.category").forEach((e=>{e.addEventListener("click",(e=>{const t=document.querySelector(".gui-settings-search");if(t.value!==""){t.value="";raiseEvent(t,"input")}e.currentTarget.classList.toggle("folded");r(e.currentTarget).forEach((e=>e.classList.toggle("folded")))}))}));document.querySelectorAll(".gui-settings-dropdown>input").forEach((e=>{e.addEventListener("click",(t=>{t.target.parentElement.classList.toggle("opened");const n=i=>{const s=i.target;const o=dq(`li[data-key=${e.getAttribute("key")}]`);if(o.contains(s)&&o!==s){return}t.target.parentElement.classList.remove("opened");document.body.removeEventListener("click",n)};document.body.addEventListener("click",n)}))}));dqa(".gui-settings-header .operation").forEach((t=>{t.addEventListener("click",(t=>{if(t.target.classList.contains("export")){const t=document.createElement("a");t.style.display="none";const n=URL.createObjectURL(new Blob([JSON.stringify(_.omit(e,"cache"))]));t.href=n;t.download="bilibili-evolved-settings.json";document.body.insertAdjacentElement("beforeend",t);t.click();URL.revokeObjectURL(n);t.remove()}else if(t.target.classList.contains("import")){const t=document.createElement("input");t.style.display="none";t.type="file";t.accept=".json,text/json";document.body.insertAdjacentElement("beforeend",t);t.addEventListener("change",(async()=>{try{const n=t.files[0];const i=JSON.parse(await new Response(n).text());for(const[t,n]of Object.entries(i)){if(t in e&&t!=="cache"){e[t]=n}}Toast.success("已成功导入设置, 部分设置需要刷新后生效.","导入设置",3e3)}catch(e){Toast.error("选择的设置文件无效.","导入设置",3e3)}finally{t.remove()}}),{once:true});t.click()}}))}))}function u(){c.forEach((t=>{t.addEventListener("change",(()=>{const n=t.getAttribute("key");const i=t.checked;e[n]=i}))}));a.forEach((t=>{t.addEventListener("change",(()=>{const n=t.getAttribute("key");const i=s.getValidator(n).validate(t.value);e[n]=i;t.value=i}))}))}function g(){const e=o.map((e=>[e.getAttribute("dependencies").split(" ").map((e=>o.find((t=>t.getAttribute("key")===e)))),e]));const t=e=>e.nodeName.toUpperCase()==="LI"?e:t(e.parentElement);e.forEach((([e,n])=>{if(e[0]===undefined){return}const i=()=>{if(e.every((e=>e.checked))){t(n).classList.remove("disabled")}else{t(n).classList.add("disabled")}};e.forEach((e=>e.addEventListener("change",i)));i()}))}function m(){if(typeof offlineData!=="undefined"){}}const b=()=>{};function p(){if(window.devicePixelRatio===1){o.find((e=>e.getAttribute("key")==="harunaScale")).disabled=true;o.find((e=>e.getAttribute("key")==="imageResolution")).disabled=true;e.harunaScale=false;e.imageResolution=false}}function f(){for(const[e,t]of Object.entries(Resource.displayNames)){const n=o.find((t=>t.getAttribute("key")===e));if(!n){continue}switch(n.type){case"checkbox":n.nextElementSibling.nextElementSibling.innerHTML=t;break;case"text":const e=n.parentElement;if(e.classList.contains("gui-settings-textbox-container")){n.previousElementSibling.innerHTML=t}else if(e.classList.contains("gui-settings-dropdown")){e.previousElementSibling.innerHTML=t}break;default:break}}}(async()=>{t.applyStyle("guiSettingsStyle");t.applyImportantStyle("iconsStyle");document.body.classList.add("round-corner");const s=document.body&&unsafeWindow.parent.window!==unsafeWindow;if(s){document.querySelector(".gui-settings-icon-panel").style.display="none"}const r=["https://t.bilibili.com/share/card/index","https://manga.bilibili.com/eden/bilibili-nav-panel.html","https://live.bilibili.com/blackboard/dropdown-menu.html","https://www.bilibili.com/page-proxy/game-nav.html"];document.documentElement.classList.toggle("iframe",s&&r.some((e=>document.URL.includes(e))));addSettingsListener("guiSettingsDockSide",(e=>{document.body.classList.toggle("gui-settings-dock-right",e==="右侧")}),true);addSettingsListener("autoHideSideBar",(e=>{document.body.classList.toggle("gui-settings-auto-hide-side-bar",e)}),true);addSettingsListener("elegantScrollbar",(e=>{document.documentElement.classList.toggle("elegant-scrollbar",e)}),true);addSettingsListener("alwaysShowDuration",(e=>{document.body.classList.toggle("always-show-duration",e)}),true);const y=t.data.guiSettingsHtml.text;document.body.insertAdjacentHTML("beforeend",y);const{style:h}=await t.importAsync("mdi");if(!h){document.body.insertAdjacentHTML("afterbegin",``)}const L=document.querySelector(".widgets-container");const v=L.querySelector(".empty-tip");Observer.childList(L,(()=>{if(L.childElementCount<=1){v.classList.add("show")}else{v.classList.remove("show")}}));const E=document.querySelectorAll(".gui-settings-widgets-box,.gui-settings-box");const S=document.querySelector(".gui-settings-icon-panel");b();S.addEventListener("mouseover",(async()=>{const{loadTooltip:s}=await t.importAsync("settings-tooltip.loader");await s();await t.applyDropdownOptions();t.applyWidgets();raiseEvent(S,"be:load");const r=dq(".bilibili-evolved-about");if(r){raiseEvent(r,"be:about-load")}(new n).setupDom();E.forEach((e=>e.classList.add("loaded")));o=[...document.querySelectorAll("input[key]")];c=o.filter((e=>e.type==="checkbox"));a=o.filter((e=>e.type==="text"&&!e.parentElement.classList.contains("gui-settings-dropdown")));d();m();l();g();u();p();f();dq(".script-info .version").textContent=scriptVersion+" v"+GM.info.script.version;(async()=>{const t=dq(".script-info .content-hash");if(Object.keys(e.cache).length===0){t.remove();return}const n=async e=>{const t=(new TextEncoder).encode(e);const n=await crypto.subtle.digest("SHA-256",t);const i=Array.from(new Uint8Array(n));const s=i.map((e=>e.toString(16).padStart(2,"0"))).join("");return s};const i=await n(JSON.stringify(e.cache));t.textContent=`内容包: ${i.substring(0,7)}`})();new i}),{once:true})})()})();
\ No newline at end of file
+(()=>(e,t)=>{const{ThemeColors:n}=t.import("theme-colors");const{SettingsSearch:i}=t.import("settings-search");const{Validator:s}=t.import("text-validate");let o=[];let c=[];let a=[];function r(e){let t=e.nextElementSibling;const n=[];while(t!==null&&!t.classList.contains("category")){n.push(t);t=t.nextElementSibling}return n}function l(){a.forEach((t=>t.value=e[t.getAttribute("key")]));c.forEach((t=>t.checked=e[t.getAttribute("key")]))}function d(){dq(".gui-settings-mask").addEventListener("click",(()=>{dqa(".gui-settings-widgets-box,.gui-settings-box,.gui-settings-mask,.bilibili-evolved-about").forEach((e=>e.classList.remove("opened")));const e=dq(".gui-settings-tooltip");if(e){e.innerHTML=""}}));a.forEach((t=>{t.setAttribute("placeholder",e[t.getAttribute("key")])}));document.querySelectorAll(".gui-settings-content ul li.category").forEach((e=>{e.addEventListener("click",(e=>{const t=document.querySelector(".gui-settings-search");if(t.value!==""){t.value="";raiseEvent(t,"input")}e.currentTarget.classList.toggle("folded");r(e.currentTarget).forEach((e=>e.classList.toggle("folded")))}))}));document.querySelectorAll(".gui-settings-dropdown>input").forEach((e=>{e.addEventListener("click",(t=>{t.target.parentElement.classList.toggle("opened");const n=i=>{const s=i.target;const o=dq(`li[data-key=${e.getAttribute("key")}]`);if(o.contains(s)&&o!==s){return}t.target.parentElement.classList.remove("opened");document.body.removeEventListener("click",n)};document.body.addEventListener("click",n)}))}));dqa(".gui-settings-header .operation").forEach((t=>{t.addEventListener("click",(t=>{if(t.target.classList.contains("export")){const t=document.createElement("a");t.style.display="none";const n=URL.createObjectURL(new Blob([JSON.stringify(_.omit(e,"cache"))]));t.href=n;t.download="bilibili-evolved-settings.json";document.body.insertAdjacentElement("beforeend",t);t.click();URL.revokeObjectURL(n);t.remove()}else if(t.target.classList.contains("import")){const t=document.createElement("input");t.style.display="none";t.type="file";t.accept=".json,text/json";document.body.insertAdjacentElement("beforeend",t);t.addEventListener("change",(async()=>{try{const n=t.files[0];const i=JSON.parse(await new Response(n).text());for(const[t,n]of Object.entries(i)){if(t in e&&t!=="cache"){e[t]=n}}Toast.success("已成功导入设置, 部分设置需要刷新后生效.","导入设置",3e3)}catch(e){Toast.error("选择的设置文件无效.","导入设置",3e3)}finally{t.remove()}}),{once:true});t.click()}}))}))}function u(){c.forEach((t=>{t.addEventListener("change",(()=>{const n=t.getAttribute("key");const i=t.checked;e[n]=i}))}));a.forEach((t=>{t.addEventListener("change",(()=>{const n=t.getAttribute("key");const i=s.getValidator(n).validate(t.value);e[n]=i;t.value=i}))}))}function g(){const e=o.map((e=>[e.getAttribute("dependencies").split(" ").map((e=>o.find((t=>t.getAttribute("key")===e)))),e]));const t=e=>e.nodeName.toUpperCase()==="LI"?e:t(e.parentElement);e.forEach((([e,n])=>{if(e[0]===undefined){return}const i=()=>{if(e.every((e=>e.checked))){t(n).classList.remove("disabled")}else{t(n).classList.add("disabled")}};e.forEach((e=>e.addEventListener("change",i)));i()}))}function m(){if(typeof offlineData!=="undefined"){}}const p=()=>{};function b(){if(window.devicePixelRatio===1){o.find((e=>e.getAttribute("key")==="harunaScale")).disabled=true;o.find((e=>e.getAttribute("key")==="imageResolution")).disabled=true;e.harunaScale=false;e.imageResolution=false}}function y(){for(const[e,t]of Object.entries(Resource.displayNames)){const n=o.find((t=>t.getAttribute("key")===e));if(!n){continue}switch(n.type){case"checkbox":n.nextElementSibling.nextElementSibling.innerHTML=t;break;case"text":const e=n.parentElement;if(e.classList.contains("gui-settings-textbox-container")){n.previousElementSibling.innerHTML=t}else if(e.classList.contains("gui-settings-dropdown")){e.previousElementSibling.innerHTML=t}break;default:break}}}(async()=>{t.importAsync("bpx-player-adaptor").then((({bpxPlayerPolyfill:e})=>{e()}));t.applyStyle("guiSettingsStyle");t.applyImportantStyle("iconsStyle");document.body.classList.add("round-corner");const s=document.body&&unsafeWindow.parent.window!==unsafeWindow;if(s){document.querySelector(".gui-settings-icon-panel").style.display="none"}const r=["https://t.bilibili.com/share/card/index","https://manga.bilibili.com/eden/bilibili-nav-panel.html","https://live.bilibili.com/blackboard/dropdown-menu.html","https://www.bilibili.com/page-proxy/game-nav.html"];document.documentElement.classList.toggle("iframe",s&&r.some((e=>document.URL.includes(e))));addSettingsListener("guiSettingsDockSide",(e=>{document.body.classList.toggle("gui-settings-dock-right",e==="右侧")}),true);addSettingsListener("autoHideSideBar",(e=>{document.body.classList.toggle("gui-settings-auto-hide-side-bar",e)}),true);addSettingsListener("elegantScrollbar",(e=>{document.documentElement.classList.toggle("elegant-scrollbar",e)}),true);addSettingsListener("alwaysShowDuration",(e=>{document.body.classList.toggle("always-show-duration",e)}),true);const f=t.data.guiSettingsHtml.text;document.body.insertAdjacentHTML("beforeend",f);const{style:h}=await t.importAsync("mdi");if(!h){document.body.insertAdjacentHTML("afterbegin",``)}const L=document.querySelector(".widgets-container");const v=L.querySelector(".empty-tip");Observer.childList(L,(()=>{if(L.childElementCount<=1){v.classList.add("show")}else{v.classList.remove("show")}}));const E=document.querySelectorAll(".gui-settings-widgets-box,.gui-settings-box");const S=document.querySelector(".gui-settings-icon-panel");p();S.addEventListener("mouseover",(async()=>{const{loadTooltip:s}=await t.importAsync("settings-tooltip.loader");await s();await t.applyDropdownOptions();t.applyWidgets();raiseEvent(S,"be:load");const r=dq(".bilibili-evolved-about");if(r){raiseEvent(r,"be:about-load")}(new n).setupDom();E.forEach((e=>e.classList.add("loaded")));o=[...document.querySelectorAll("input[key]")];c=o.filter((e=>e.type==="checkbox"));a=o.filter((e=>e.type==="text"&&!e.parentElement.classList.contains("gui-settings-dropdown")));d();m();l();g();u();b();y();dq(".script-info .version").textContent=scriptVersion+" v"+GM.info.script.version;(async()=>{const t=dq(".script-info .content-hash");if(Object.keys(e.cache).length===0){t.remove();return}const n=async e=>{const t=(new TextEncoder).encode(e);const n=await crypto.subtle.digest("SHA-256",t);const i=Array.from(new Uint8Array(n));const s=i.map((e=>e.toString(16).padStart(2,"0"))).join("");return s};const i=await n(JSON.stringify(e.cache));t.textContent=`内容包: ${i.substring(0,7)}`})();new i}),{once:true})})()})();
\ No newline at end of file
diff --git a/min/restore-floors.min.js b/min/restore-floors.min.js
index a5211b09a..6b6e65f43 100644
--- a/min/restore-floors.min.js
+++ b/min/restore-floors.min.js
@@ -1 +1 @@
-(()=>(t,e)=>{var o;(function(t){t[t["Default"]=1]="Default";t[t["ByTime"]=2]="ByTime";t[t["ByLikes"]=3]="ByLikes"})(o||(o={}));const i=(t,e,i=1)=>{if(e===o.ByTime){return Ajax.getJson(`https://api.bilibili.com/x/v2/reply/main?oid=${t}&type=1&mode=${e}`)}return Ajax.getJson(`https://api.bilibili.com/x/v2/reply/main?oid=${t}&type=1&mode=${e}&next=${i}`)};const n=async t=>{if(document.URL.match(/\/\/www\.bilibili\.com\/(video|bangumi)/)){return await SpinQuery.select((()=>unsafeWindow.aid))}console.error("No oid extract method for current context.",t)};const r=async t=>{const e=await n(t);if(e===undefined){return}const r=dq(t,".hot-sort.on")!==null?o.ByLikes:o.ByTime;let s=1;const a=dq(t,".paging-box .current");if(a!==null){s=parseInt(a.textContent)}const l=await i(e,r,s);if(l.code!==0){console.error("Comment API failed: ",l.message);return}const c=t=>{const e=[{id:t.rpid_str,floor:t.floor}];if(t.replies!==null){e.push(...t.replies.map((t=>({id:t.rpid_str,floor:t.floor}))))}return e};const d=_.flatMap(_.get(l,"data.replies",[]),c);const f=_.get(l,"data.top.upper");if(f){d.push(...c(f))}const u=dqa(t,".reply-wrap[data-id]");const p=u.map((t=>dq(t,".reply-wrap > .con > .info, .reply-wrap > .info")));u.forEach(((t,e)=>{const o=t.getAttribute("data-id");const i=d.find((t=>t.id===o));if(i!==undefined){const t=p[e];if(t.getAttribute("data-restore-floor")===null){t.insertAdjacentHTML("afterbegin",`#${i.floor}`);t.setAttribute("data-restore-floor",i.floor.toString())}}}))};const s=t=>{const e="comment-loading";if(Array.prototype.some.call(t.children,(t=>t.classList.contains(e)))){const o=Observer.childList(t,(i=>{if(i.some((t=>{Array.prototype.some.call(t.removedNodes,(t=>t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(e)))}))){o.stop();s(t)}}))}else{if(t.getAttribute("data-restore-floor")===null){t.setAttribute("data-restore-floor","true");const e=dq(t,".comment-list");Observer.childList(e,_.debounce((e=>{console.log(e);r(t)}),100))}}};const a=["//www.bilibili.com/video","//www.bilibili.com/bangumi"];if(a.some((t=>document.URL.includes(t)))){fullyLoaded((()=>{const t=_.debounce((()=>dqa(".bb-comment").forEach((t=>s(t)))),200);Observer.childListSubtree(document.body,t)}))}})();
\ No newline at end of file
+(()=>(t,e)=>{var o;(function(t){t[t["Default"]=1]="Default";t[t["ByTime"]=2]="ByTime";t[t["ByLikes"]=3]="ByLikes"})(o||(o={}));const i=(t,e,i=1)=>{if(e===o.ByTime){return Ajax.getJson(`https://api.bilibili.com/x/v2/reply/main?oid=${t}&type=1&mode=${e}`)}return Ajax.getJson(`https://api.bilibili.com/x/v2/reply/main?oid=${t}&type=1&mode=${e}&next=${i}`)};const r=async t=>{if(document.URL.match(/\/\/www\.bilibili\.com\/(video|bangumi)/)){return await SpinQuery.select((()=>unsafeWindow.aid))}console.error("No oid extract method for current context.",t)};const n=async t=>{const e=await r(t);if(!e){return}const n=dq(t,".hot-sort.on")!==null?o.ByLikes:o.ByTime;let s=1;const a=dq(t,".paging-box .current");if(a!==null){s=parseInt(a.textContent)}const l=await i(e,n,s);if(l.code!==0){console.error("Comment API failed: ",l.message);return}const c=t=>{const e=[{id:t.rpid_str,floor:t.floor}];if(t.replies!==null){e.push(...t.replies.map((t=>({id:t.rpid_str,floor:t.floor}))))}return e};const d=_.flatMap(_.get(l,"data.replies",[]),c);const f=_.get(l,"data.top.upper");if(f){d.push(...c(f))}const p=dqa(t,".reply-wrap[data-id]");const u=p.map((t=>dq(t,".reply-wrap > .con > .info, .reply-wrap > .info")));p.forEach(((t,e)=>{const o=t.getAttribute("data-id");const i=d.find((t=>t.id===o));if(i!==undefined){const t=u[e];if(t.getAttribute("data-restore-floor")===null){t.insertAdjacentHTML("afterbegin",`#${i.floor}`);t.setAttribute("data-restore-floor",i.floor.toString())}}}))};const s=t=>{const e="comment-loading";if(Array.prototype.some.call(t.children,(t=>t.classList.contains(e)))){const o=Observer.childList(t,(i=>{if(i.some((t=>{Array.prototype.some.call(t.removedNodes,(t=>t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(e)))}))){o.stop();s(t)}}))}else{if(t.getAttribute("data-restore-floor")===null){t.setAttribute("data-restore-floor","true");const e=dq(t,".comment-list");Observer.childList(e,_.debounce((e=>{console.log(e);n(t)}),100))}}};const a=["//www.bilibili.com/video","//www.bilibili.com/bangumi"];if(a.some((t=>document.URL.includes(t)))){fullyLoaded((()=>{const t=_.debounce((()=>dqa(".bb-comment").forEach((t=>s(t)))),200);Observer.childListSubtree(document.body,t)}))}})();
\ No newline at end of file
diff --git a/src/client/observer.js b/src/client/observer.js
index a52424291..adc73cd37 100644
--- a/src/client/observer.js
+++ b/src/client/observer.js
@@ -108,13 +108,13 @@ export class Observer {
})
cidHooked = true
}
- // callback();
- const videoContainer = await SpinQuery.select('.bilibili-player-video video')
- if (videoContainer) {
- Observer.childList(videoContainer, callback)
- } else {
- callback()
- }
+ callback()
+ // const videoContainer = await SpinQuery.select('.bilibili-player-video video')
+ // if (videoContainer) {
+ // Observer.childList(videoContainer, callback)
+ // } else {
+ // callback()
+ // }
videoChangeCallbacks.push(callback)
}
}
diff --git a/src/utils/bpx-player-adaptor/bpx-player-adaptor.ts b/src/utils/bpx-player-adaptor/bpx-player-adaptor.ts
new file mode 100644
index 000000000..058dd2fb9
--- /dev/null
+++ b/src/utils/bpx-player-adaptor/bpx-player-adaptor.ts
@@ -0,0 +1,37 @@
+
+const playerModePolyfill = async () => {
+ const bpxContainer = await SpinQuery.select('.bpx-player-container') as HTMLElement
+ if (!bpxContainer) {
+ console.warn('[bpx player polyfill] bpxContainer not found')
+ return
+ }
+ Observer.attributes(bpxContainer, () => {
+ const dataScreen = bpxContainer.getAttribute('data-screen')
+ document.body.classList.toggle('player-mode-webfullscreen', dataScreen === 'full' || dataScreen === 'web')
+ document.body.classList.toggle('player-mode-widescreen', dataScreen === 'wide')
+ })
+}
+const idPolyfill = async () => {
+ const ep = await SpinQuery.select(() => unsafeWindow.ep)
+ if (!ep) {
+ console.warn('[bpx player polyfill] ep not found')
+ return
+ }
+ Object.assign(unsafeWindow, {
+ aid: ep.aid.toString(),
+ cid: ep.cid.toString(),
+ bvid: ep.bvid,
+ })
+}
+export const bpxPlayerPolyfill = async () => {
+ if (!document.URL.startsWith('https://www.bilibili.com/bangumi/play/')) {
+ return
+ }
+ playerModePolyfill()
+ idPolyfill()
+}
+export default {
+ export: {
+ bpxPlayerPolyfill,
+ }
+}
diff --git a/src/utils/gui-settings/gui-settings.js b/src/utils/gui-settings/gui-settings.js
index 39c596766..a93f2a544 100644
--- a/src/utils/gui-settings/gui-settings.js
+++ b/src/utils/gui-settings/gui-settings.js
@@ -173,6 +173,9 @@ function setDisplayNames () {
}
(async () => {
+ import('../bpx-player-adaptor/bpx-player-adaptor').then(({ bpxPlayerPolyfill }) => {
+ bpxPlayerPolyfill()
+ })
resources.applyStyle('guiSettingsStyle')
// resources.applyStyle('scrollbarStyle')
resources.applyImportantStyle('iconsStyle')
diff --git a/src/utils/gui-settings/gui-settings.scss b/src/utils/gui-settings/gui-settings.scss
index e94fd80b2..ed6a179fd 100644
--- a/src/utils/gui-settings/gui-settings.scss
+++ b/src/utils/gui-settings/gui-settings.scss
@@ -755,6 +755,7 @@ li.category.folded i.icon-arrow {
/* Fix bangumi and live player z-index */
.player-mode-webfullscreen .player-module,
+.player-mode-webfullscreen .player-module .player-container,
.player-full-win .app-content,
.player-full-win .live-room-app .app-content {
z-index: 100000 !important;
diff --git a/src/utils/restore-floors.ts b/src/utils/restore-floors.ts
index 8b73464b3..7b8d0cdb7 100644
--- a/src/utils/restore-floors.ts
+++ b/src/utils/restore-floors.ts
@@ -17,7 +17,7 @@ const getOid = async (commentContainer: HTMLElement) => {
}
const restore = async (commentContainer: HTMLElement) => {
const oid = await getOid(commentContainer)
- if (oid === undefined) {
+ if (!oid) {
return
}
const mode = dq(commentContainer, '.hot-sort.on') !== null ? CommentSortOrder.ByLikes : CommentSortOrder.ByTime