diff --git a/bilibili-evolved.offline.user.js b/bilibili-evolved.offline.user.js
index 5e892bb37..ed5bc2f37 100644
--- a/bilibili-evolved.offline.user.js
+++ b/bilibili-evolved.offline.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name Bilibili Evolved (Offline)
-// @version 812.78
+// @version 812.80
// @description Bilibili Evolved 的离线版, 所有功能都已内置于脚本中.
// @author Grant Howard, Coulomb-G
// @copyright 2020, Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)
@@ -1534,7 +1534,7 @@ offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/m
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/volume-overdrive.min.js"] = (()=>{return(e,t)=>{const n=new Map;const i=e=>{console.log("create new context");const t=new AudioContext;const i=t.createMediaElementSource(e);const o=t.createGain();i.connect(o);o.connect(t.destination);n.set(e,o.gain);return o.gain};const o=e=>{if(n.has(e)){const t=n.get(e);t.value=1}};const r=(e,t)=>{if(n.has(e)){const i=n.get(e);let o=i.value+t;if(o<0){o=0}i.value=o;return o}else{const n=i(e);const o=n.value+t;n.value=o;return o}};const s=async()=>{const e=["https://www.bilibili.com/bangumi/","https://www.bilibili.com/video/","https://www.bilibili.com/watchlater/","https://www.bilibili.com/medialist/play/"];if(e.every(e=>!document.URL.startsWith(e))){return}let i;const o=e=>{let n=dq(".volume-overdrive-tip");if(!n){const e=dq(".bilibili-player-video-wrap");if(!e){return}e.insertAdjacentHTML("afterbegin",`\n
\n`);t.applyStyleFromText(`\n .volume-overdrive-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 .volume-overdrive-tip-container.show {\n opacity: 1;\n }\n .volume-overdrive-tip-container i {\n line-height: 1;\n margin-right: 8px;\n font-size: 18pt;\n }\n`,"volumeOverdriveStyle");n=dq(".volume-overdrive-tip")}const o=dq("video");n.innerHTML=`音量${Math.round(o.volume*100)}% x 增幅${Math.round(e*100)}% = ${Math.round(o.volume*e*100)}%`;if(i){clearTimeout(i)}dq(".volume-overdrive-tip-container").classList.add("show");i=setTimeout(()=>{dq(".volume-overdrive-tip-container").classList.remove("show")},2e3)};Observer.videoChange(async()=>{n.clear();document.body.addEventListener("keydown",e=>{const t=!e.shiftKey&&e.ctrlKey&&!e.altKey&&!e.metaKey;if(t&&(e.key==="ArrowDown"||e.key==="ArrowUp")){const t=dq("video");if(!t){return}const n=e.key==="ArrowDown"?-.1:.1;const i=r(t,n);o(i);e.preventDefault();e.stopImmediatePropagation()}},{capture:true})})};s();return{export:{setVolume:r}}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater-api.min.js"] = (()=>{return(t,i)=>{const e=async(t,i)=>{const e=i?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del";const a=getCsrf();const s=await Ajax.postTextWithCredentials(e,`aid=${t}&csrf=${a}`);const r=JSON.parse(s);if(r.code!==0){throw new Error(`稍后再看操作失败: ${r.message}`)}};async function a(t=false){const i=`https://api.bilibili.com/x/v2/history/toview/web`;const e=await Ajax.getJsonWithCredentials(i);if(e.code!==0){throw new Error(`获取稍后再看列表失败: ${e.message}`)}if(!e.data.list){return[]}if(t){return e.data.list}return e.data.list.map(t=>t.aid)}return{export:{toggleWatchlater:e,getWatchlaterList:a}}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater-expire-warnings.min.js"] = (()=>{return(e,n)=>{(async()=>{if(!["//www.bilibili.com/watchlater/#/list"].some(e=>document.URL.includes(e))){return}const{getWatchlaterList:t}=await n.importAsync("watchlater-api");const i=await SpinQuery.select(".watch-later-list .list-box");if(i===null){return}n.applyStyleFromText(`\n .expire-warning {\n padding: 3px 25px;\n color: #F78C6C;\n display: inline-flex;\n align-items: center;\n }\n .expire-warning .mdi {\n line-height: 1;\n margin-right: 8px;\n font-size: 16px;\n }\n`,"watchlater-expire-warning-style");const r=e.watchlaterExpireWarningDays;const a=24*3600*1e3;const l=e=>{return(e-Number(new Date))/a};Observer.childListSubtree(i,async()=>{const e=[...i.querySelectorAll(".av-item .state")];const n=await t(true);e.forEach((e,t)=>{const i=n[t].add_at*1e3+60*a;const c=l(i);console.log(n[t].aid,c);if(c还剩${n}天过期`)}}else{e.querySelectorAll(".expire-warning").forEach(e=>e.remove())}})})})()}})();
-offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box");if(!r){return}const a=r.querySelectorAll(".av-item");const c=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const d=t.querySelector(".av-about .t");d.target="_blank";d.href=n};a.forEach(c);Observer.childList(r,t=>{t.forEach(t=>{t.addedNodes.forEach(t=>{if(t instanceof Element){c(t,[...r.children].indexOf(t))}})})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
+offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box > span");if(!r){return}const a=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const h=t.querySelector(".av-about .t");h.target="_blank";h.href=n};const c=r.querySelectorAll(".av-item");c.forEach(a);Observer.attributesSubtree(r,t=>{t.forEach(t=>{if(t.target instanceof HTMLAnchorElement&&t.attributeName==="href"){const e=t.target;const i=dqa(r,".av-item");if(e.href.includes("/medialist/play/watchlater/")){const t=i.findIndex(t=>t.contains(e));if(t!==-1){a(i[t],t)}}}})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
class ResourceType {
constructor (name, preprocessor) {
diff --git a/bilibili-evolved.preview-offline.user.js b/bilibili-evolved.preview-offline.user.js
index 931a0d94b..be4d0eac2 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 812.78
+// @version 812.80
// @description Bilibili Evolved 的预览离线版, 可以抢先体验新功能, 并且所有功能都已内置于脚本中.
// @author Grant Howard, Coulomb-G
// @copyright 2020, Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)
@@ -1534,7 +1534,7 @@ offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/m
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/volume-overdrive.min.js"] = (()=>{return(e,t)=>{const n=new Map;const i=e=>{console.log("create new context");const t=new AudioContext;const i=t.createMediaElementSource(e);const o=t.createGain();i.connect(o);o.connect(t.destination);n.set(e,o.gain);return o.gain};const o=e=>{if(n.has(e)){const t=n.get(e);t.value=1}};const r=(e,t)=>{if(n.has(e)){const i=n.get(e);let o=i.value+t;if(o<0){o=0}i.value=o;return o}else{const n=i(e);const o=n.value+t;n.value=o;return o}};const s=async()=>{const e=["https://www.bilibili.com/bangumi/","https://www.bilibili.com/video/","https://www.bilibili.com/watchlater/","https://www.bilibili.com/medialist/play/"];if(e.every(e=>!document.URL.startsWith(e))){return}let i;const o=e=>{let n=dq(".volume-overdrive-tip");if(!n){const e=dq(".bilibili-player-video-wrap");if(!e){return}e.insertAdjacentHTML("afterbegin",`\n\n`);t.applyStyleFromText(`\n .volume-overdrive-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 .volume-overdrive-tip-container.show {\n opacity: 1;\n }\n .volume-overdrive-tip-container i {\n line-height: 1;\n margin-right: 8px;\n font-size: 18pt;\n }\n`,"volumeOverdriveStyle");n=dq(".volume-overdrive-tip")}const o=dq("video");n.innerHTML=`音量${Math.round(o.volume*100)}% x 增幅${Math.round(e*100)}% = ${Math.round(o.volume*e*100)}%`;if(i){clearTimeout(i)}dq(".volume-overdrive-tip-container").classList.add("show");i=setTimeout(()=>{dq(".volume-overdrive-tip-container").classList.remove("show")},2e3)};Observer.videoChange(async()=>{n.clear();document.body.addEventListener("keydown",e=>{const t=!e.shiftKey&&e.ctrlKey&&!e.altKey&&!e.metaKey;if(t&&(e.key==="ArrowDown"||e.key==="ArrowUp")){const t=dq("video");if(!t){return}const n=e.key==="ArrowDown"?-.1:.1;const i=r(t,n);o(i);e.preventDefault();e.stopImmediatePropagation()}},{capture:true})})};s();return{export:{setVolume:r}}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater-api.min.js"] = (()=>{return(t,i)=>{const e=async(t,i)=>{const e=i?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del";const a=getCsrf();const s=await Ajax.postTextWithCredentials(e,`aid=${t}&csrf=${a}`);const r=JSON.parse(s);if(r.code!==0){throw new Error(`稍后再看操作失败: ${r.message}`)}};async function a(t=false){const i=`https://api.bilibili.com/x/v2/history/toview/web`;const e=await Ajax.getJsonWithCredentials(i);if(e.code!==0){throw new Error(`获取稍后再看列表失败: ${e.message}`)}if(!e.data.list){return[]}if(t){return e.data.list}return e.data.list.map(t=>t.aid)}return{export:{toggleWatchlater:e,getWatchlaterList:a}}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater-expire-warnings.min.js"] = (()=>{return(e,n)=>{(async()=>{if(!["//www.bilibili.com/watchlater/#/list"].some(e=>document.URL.includes(e))){return}const{getWatchlaterList:t}=await n.importAsync("watchlater-api");const i=await SpinQuery.select(".watch-later-list .list-box");if(i===null){return}n.applyStyleFromText(`\n .expire-warning {\n padding: 3px 25px;\n color: #F78C6C;\n display: inline-flex;\n align-items: center;\n }\n .expire-warning .mdi {\n line-height: 1;\n margin-right: 8px;\n font-size: 16px;\n }\n`,"watchlater-expire-warning-style");const r=e.watchlaterExpireWarningDays;const a=24*3600*1e3;const l=e=>{return(e-Number(new Date))/a};Observer.childListSubtree(i,async()=>{const e=[...i.querySelectorAll(".av-item .state")];const n=await t(true);e.forEach((e,t)=>{const i=n[t].add_at*1e3+60*a;const c=l(i);console.log(n[t].aid,c);if(c还剩${n}天过期`)}}else{e.querySelectorAll(".expire-warning").forEach(e=>e.remove())}})})})()}})();
-offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box");if(!r){return}const a=r.querySelectorAll(".av-item");const c=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const d=t.querySelector(".av-about .t");d.target="_blank";d.href=n};a.forEach(c);Observer.childList(r,t=>{t.forEach(t=>{t.addedNodes.forEach(t=>{if(t instanceof Element){c(t,[...r.children].indexOf(t))}})})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
+offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box > span");if(!r){return}const a=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const h=t.querySelector(".av-about .t");h.target="_blank";h.href=n};const c=r.querySelectorAll(".av-item");c.forEach(a);Observer.attributesSubtree(r,t=>{t.forEach(t=>{if(t.target instanceof HTMLAnchorElement&&t.attributeName==="href"){const e=t.target;const i=dqa(r,".av-item");if(e.href.includes("/medialist/play/watchlater/")){const t=i.findIndex(t=>t.contains(e));if(t!==-1){a(i[t],t)}}}})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
class ResourceType {
constructor (name, preprocessor) {
diff --git a/bilibili-evolved.preview.user.js b/bilibili-evolved.preview.user.js
index 9ef8d5545..49fef3140 100644
--- a/bilibili-evolved.preview.user.js
+++ b/bilibili-evolved.preview.user.js
@@ -1533,7 +1533,7 @@ onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/m
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/volume-overdrive.min.js"] = (()=>{return(e,t)=>{const n=new Map;const i=e=>{console.log("create new context");const t=new AudioContext;const i=t.createMediaElementSource(e);const o=t.createGain();i.connect(o);o.connect(t.destination);n.set(e,o.gain);return o.gain};const o=e=>{if(n.has(e)){const t=n.get(e);t.value=1}};const r=(e,t)=>{if(n.has(e)){const i=n.get(e);let o=i.value+t;if(o<0){o=0}i.value=o;return o}else{const n=i(e);const o=n.value+t;n.value=o;return o}};const s=async()=>{const e=["https://www.bilibili.com/bangumi/","https://www.bilibili.com/video/","https://www.bilibili.com/watchlater/","https://www.bilibili.com/medialist/play/"];if(e.every(e=>!document.URL.startsWith(e))){return}let i;const o=e=>{let n=dq(".volume-overdrive-tip");if(!n){const e=dq(".bilibili-player-video-wrap");if(!e){return}e.insertAdjacentHTML("afterbegin",`\n\n`);t.applyStyleFromText(`\n .volume-overdrive-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 .volume-overdrive-tip-container.show {\n opacity: 1;\n }\n .volume-overdrive-tip-container i {\n line-height: 1;\n margin-right: 8px;\n font-size: 18pt;\n }\n`,"volumeOverdriveStyle");n=dq(".volume-overdrive-tip")}const o=dq("video");n.innerHTML=`音量${Math.round(o.volume*100)}% x 增幅${Math.round(e*100)}% = ${Math.round(o.volume*e*100)}%`;if(i){clearTimeout(i)}dq(".volume-overdrive-tip-container").classList.add("show");i=setTimeout(()=>{dq(".volume-overdrive-tip-container").classList.remove("show")},2e3)};Observer.videoChange(async()=>{n.clear();document.body.addEventListener("keydown",e=>{const t=!e.shiftKey&&e.ctrlKey&&!e.altKey&&!e.metaKey;if(t&&(e.key==="ArrowDown"||e.key==="ArrowUp")){const t=dq("video");if(!t){return}const n=e.key==="ArrowDown"?-.1:.1;const i=r(t,n);o(i);e.preventDefault();e.stopImmediatePropagation()}},{capture:true})})};s();return{export:{setVolume:r}}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/watchlater-api.min.js"] = (()=>{return(t,i)=>{const e=async(t,i)=>{const e=i?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del";const a=getCsrf();const s=await Ajax.postTextWithCredentials(e,`aid=${t}&csrf=${a}`);const r=JSON.parse(s);if(r.code!==0){throw new Error(`稍后再看操作失败: ${r.message}`)}};async function a(t=false){const i=`https://api.bilibili.com/x/v2/history/toview/web`;const e=await Ajax.getJsonWithCredentials(i);if(e.code!==0){throw new Error(`获取稍后再看列表失败: ${e.message}`)}if(!e.data.list){return[]}if(t){return e.data.list}return e.data.list.map(t=>t.aid)}return{export:{toggleWatchlater:e,getWatchlaterList:a}}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/watchlater-expire-warnings.min.js"] = (()=>{return(e,n)=>{(async()=>{if(!["//www.bilibili.com/watchlater/#/list"].some(e=>document.URL.includes(e))){return}const{getWatchlaterList:t}=await n.importAsync("watchlater-api");const i=await SpinQuery.select(".watch-later-list .list-box");if(i===null){return}n.applyStyleFromText(`\n .expire-warning {\n padding: 3px 25px;\n color: #F78C6C;\n display: inline-flex;\n align-items: center;\n }\n .expire-warning .mdi {\n line-height: 1;\n margin-right: 8px;\n font-size: 16px;\n }\n`,"watchlater-expire-warning-style");const r=e.watchlaterExpireWarningDays;const a=24*3600*1e3;const l=e=>{return(e-Number(new Date))/a};Observer.childListSubtree(i,async()=>{const e=[...i.querySelectorAll(".av-item .state")];const n=await t(true);e.forEach((e,t)=>{const i=n[t].add_at*1e3+60*a;const c=l(i);console.log(n[t].aid,c);if(c还剩${n}天过期`)}}else{e.querySelectorAll(".expire-warning").forEach(e=>e.remove())}})})})()}})();
-onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box");if(!r){return}const a=r.querySelectorAll(".av-item");const c=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const d=t.querySelector(".av-about .t");d.target="_blank";d.href=n};a.forEach(c);Observer.childList(r,t=>{t.forEach(t=>{t.addedNodes.forEach(t=>{if(t instanceof Element){c(t,[...r.children].indexOf(t))}})})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
+onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box > span");if(!r){return}const a=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const h=t.querySelector(".av-about .t");h.target="_blank";h.href=n};const c=r.querySelectorAll(".av-item");c.forEach(a);Observer.attributesSubtree(r,t=>{t.forEach(t=>{if(t.target instanceof HTMLAnchorElement&&t.attributeName==="href"){const e=t.target;const i=dqa(r,".av-item");if(e.href.includes("/medialist/play/watchlater/")){const t=i.findIndex(t=>t.contains(e));if(t!==-1){a(i[t],t)}}}})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
class ResourceType {
constructor (name, preprocessor) {
diff --git a/bilibili-evolved.user.js b/bilibili-evolved.user.js
index 5fbf0676e..fba81ac44 100644
--- a/bilibili-evolved.user.js
+++ b/bilibili-evolved.user.js
@@ -1533,7 +1533,7 @@ onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/mi
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/volume-overdrive.min.js"] = (()=>{return(e,t)=>{const n=new Map;const i=e=>{console.log("create new context");const t=new AudioContext;const i=t.createMediaElementSource(e);const o=t.createGain();i.connect(o);o.connect(t.destination);n.set(e,o.gain);return o.gain};const o=e=>{if(n.has(e)){const t=n.get(e);t.value=1}};const r=(e,t)=>{if(n.has(e)){const i=n.get(e);let o=i.value+t;if(o<0){o=0}i.value=o;return o}else{const n=i(e);const o=n.value+t;n.value=o;return o}};const s=async()=>{const e=["https://www.bilibili.com/bangumi/","https://www.bilibili.com/video/","https://www.bilibili.com/watchlater/","https://www.bilibili.com/medialist/play/"];if(e.every(e=>!document.URL.startsWith(e))){return}let i;const o=e=>{let n=dq(".volume-overdrive-tip");if(!n){const e=dq(".bilibili-player-video-wrap");if(!e){return}e.insertAdjacentHTML("afterbegin",`\n\n`);t.applyStyleFromText(`\n .volume-overdrive-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 .volume-overdrive-tip-container.show {\n opacity: 1;\n }\n .volume-overdrive-tip-container i {\n line-height: 1;\n margin-right: 8px;\n font-size: 18pt;\n }\n`,"volumeOverdriveStyle");n=dq(".volume-overdrive-tip")}const o=dq("video");n.innerHTML=`音量${Math.round(o.volume*100)}% x 增幅${Math.round(e*100)}% = ${Math.round(o.volume*e*100)}%`;if(i){clearTimeout(i)}dq(".volume-overdrive-tip-container").classList.add("show");i=setTimeout(()=>{dq(".volume-overdrive-tip-container").classList.remove("show")},2e3)};Observer.videoChange(async()=>{n.clear();document.body.addEventListener("keydown",e=>{const t=!e.shiftKey&&e.ctrlKey&&!e.altKey&&!e.metaKey;if(t&&(e.key==="ArrowDown"||e.key==="ArrowUp")){const t=dq("video");if(!t){return}const n=e.key==="ArrowDown"?-.1:.1;const i=r(t,n);o(i);e.preventDefault();e.stopImmediatePropagation()}},{capture:true})})};s();return{export:{setVolume:r}}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater-api.min.js"] = (()=>{return(t,i)=>{const e=async(t,i)=>{const e=i?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del";const a=getCsrf();const s=await Ajax.postTextWithCredentials(e,`aid=${t}&csrf=${a}`);const r=JSON.parse(s);if(r.code!==0){throw new Error(`稍后再看操作失败: ${r.message}`)}};async function a(t=false){const i=`https://api.bilibili.com/x/v2/history/toview/web`;const e=await Ajax.getJsonWithCredentials(i);if(e.code!==0){throw new Error(`获取稍后再看列表失败: ${e.message}`)}if(!e.data.list){return[]}if(t){return e.data.list}return e.data.list.map(t=>t.aid)}return{export:{toggleWatchlater:e,getWatchlaterList:a}}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater-expire-warnings.min.js"] = (()=>{return(e,n)=>{(async()=>{if(!["//www.bilibili.com/watchlater/#/list"].some(e=>document.URL.includes(e))){return}const{getWatchlaterList:t}=await n.importAsync("watchlater-api");const i=await SpinQuery.select(".watch-later-list .list-box");if(i===null){return}n.applyStyleFromText(`\n .expire-warning {\n padding: 3px 25px;\n color: #F78C6C;\n display: inline-flex;\n align-items: center;\n }\n .expire-warning .mdi {\n line-height: 1;\n margin-right: 8px;\n font-size: 16px;\n }\n`,"watchlater-expire-warning-style");const r=e.watchlaterExpireWarningDays;const a=24*3600*1e3;const l=e=>{return(e-Number(new Date))/a};Observer.childListSubtree(i,async()=>{const e=[...i.querySelectorAll(".av-item .state")];const n=await t(true);e.forEach((e,t)=>{const i=n[t].add_at*1e3+60*a;const c=l(i);console.log(n[t].aid,c);if(c还剩${n}天过期`)}}else{e.querySelectorAll(".expire-warning").forEach(e=>e.remove())}})})})()}})();
-onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box");if(!r){return}const a=r.querySelectorAll(".av-item");const c=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const d=t.querySelector(".av-about .t");d.target="_blank";d.href=n};a.forEach(c);Observer.childList(r,t=>{t.forEach(t=>{t.addedNodes.forEach(t=>{if(t instanceof Element){c(t,[...r.children].indexOf(t))}})})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
+onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/watchlater.min.js"] = (()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box > span");if(!r){return}const a=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const h=t.querySelector(".av-about .t");h.target="_blank";h.href=n};const c=r.querySelectorAll(".av-item");c.forEach(a);Observer.attributesSubtree(r,t=>{t.forEach(t=>{if(t.target instanceof HTMLAnchorElement&&t.attributeName==="href"){const e=t.target;const i=dqa(r,".av-item");if(e.href.includes("/medialist/play/watchlater/")){const t=i.findIndex(t=>t.contains(e));if(t!==-1){a(i[t],t)}}}})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
class ResourceType {
constructor (name, preprocessor) {
diff --git a/min/bundle.json b/min/bundle.json
index fd8057c20..0e54320ef 100644
--- a/min/bundle.json
+++ b/min/bundle.json
@@ -254,5 +254,5 @@
"volume-overdrive.min.js": "442428F9918086D86AD90966071E37298F4C726883232F627C6B6E15AAB4F6D0",
"watchlater-api.min.js": "0A341429EFB4489594C6670A1FEEF99E7EC2564FF18BCE3A679E98101BA0F2F4",
"watchlater-expire-warnings.min.js": "99282802EF8EB87F199BDE88240E1F196CD85C77516E8D5466EB6F1939B908DD",
- "watchlater.min.js": "417C3388866BAD80FCF6460ECABF549213D5B5BAB658DDA0BDBA4E4BA69A1BF4"
+ "watchlater.min.js": "32FB48E0F0D2E0BCED5C4BF536B7290F4DEE4B252FE1E85DAAD65D950577BC87"
}
\ No newline at end of file
diff --git a/min/bundle.zip b/min/bundle.zip
index 10683acb0..e5b80803c 100644
Binary files a/min/bundle.zip and b/min/bundle.zip differ
diff --git a/min/watchlater.min.js b/min/watchlater.min.js
index dafa67cfa..a77eca75a 100644
--- a/min/watchlater.min.js
+++ b/min/watchlater.min.js
@@ -1 +1 @@
-(()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box");if(!r){return}const a=r.querySelectorAll(".av-item");const c=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const d=t.querySelector(".av-about .t");d.target="_blank";d.href=n};a.forEach(c);Observer.childList(r,t=>{t.forEach(t=>{t.addedNodes.forEach(t=>{if(t instanceof Element){c(t,[...r.children].indexOf(t))}})})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
\ No newline at end of file
+(()=>{return(t,e)=>{const i=t=>{const e=t.match(/(BV[\w]+)\/p([\d]+)/i)||t.match(/(av[\d]+)\/p([\d]+)/i);if(e){return`https://www.bilibili.com/video/${e[1]}/?p=${e[2]}`}else{return"javascript:;"}};const r=t=>{const e=t.map(t=>{const e=t.getAttribute("href");if(!e){return"javascript:;"}if(e.match(/.*watchlater.*|javascript:;/g)){return i(e)}if(e.match(/video\/av|video\/BV/i)){return e}return e});t.forEach((t,i)=>{t.setAttribute("href",e[i]);t.setAttribute("target","_blank")})};const a=(...t)=>{for(const e of t){SpinQuery.select(()=>document.querySelectorAll(e),t=>r([...t]))}};if(t.watchLaterRedirectPage){if(document.URL==="https://www.bilibili.com/watchlater/#/list"){(async()=>{const{getWatchlaterList:t}=await e.importAsync("watchlater-api");const i=await t(true);const r=await SpinQuery.select(".watch-later-list .list-box > span");if(!r){return}const a=(t,e)=>{const r=i[e];const a=r.aid;const c=r.cid;const s=r.pages;const l=c===0?1:s.find(t=>t.cid===c).page;const n=l>1?`https://www.bilibili.com/video/av${a}?p=${l}`:`https://www.bilibili.com/video/av${a}`;const o=t.querySelector(".av-pic");o.target="_blank";o.href=n;const h=t.querySelector(".av-about .t");h.target="_blank";h.href=n};const c=r.querySelectorAll(".av-item");c.forEach(a);Observer.attributesSubtree(r,t=>{t.forEach(t=>{if(t.target instanceof HTMLAnchorElement&&t.attributeName==="href"){const e=t.target;const i=dqa(r,".av-item");if(e.href.includes("/medialist/play/watchlater/")){const t=i.findIndex(t=>t.contains(e));if(t!==-1){a(i[t],t)}}}})})})()}}if(t.watchLaterRedirectNavbar){SpinQuery.select(".van-popper-favorite").then(async t=>{if(!t){return}const e=Observer.childListSubtree(t,()=>{const i=t.querySelector(".play-all");if(i){const t="//www.bilibili.com/watchlater/#/list";Observer.attributes(i,()=>{if(i.firstElementChild===null||i.lastChild===null){return}if(i.getAttribute("href")==="//www.bilibili.com/watchlater/"){i.setAttribute("href",t);i.firstElementChild.classList.remove("bili-icon_dingdao_bofang");i.firstElementChild.classList.add("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="查看全部"}else if(i.getAttribute("href")!==t){i.firstElementChild.classList.add("bili-icon_dingdao_bofang");i.firstElementChild.classList.remove("bili-icon_xinxi_yuedushu");i.lastChild.nodeValue="播放全部"}});e.forEach(t=>t.stop())}})})}}})();
\ No newline at end of file
diff --git a/src/utils/watchlater.ts b/src/utils/watchlater.ts
index 56f0523b3..e0221437e 100644
--- a/src/utils/watchlater.ts
+++ b/src/utils/watchlater.ts
@@ -56,11 +56,10 @@ if (settings.watchLaterRedirectPage) {
(async () => {
const { getWatchlaterList } = await import('../video/watchlater-api')
const list = await getWatchlaterList(true)
- const listBox = await SpinQuery.select('.watch-later-list .list-box')
+ const listBox = await SpinQuery.select('.watch-later-list .list-box > span')
if (!listBox) {
return
}
- const avItems = listBox.querySelectorAll('.av-item')
const redirect = (item: Element, index: number) => {
const watchlaterItem = list[index]
const aid = watchlaterItem.aid
@@ -75,14 +74,20 @@ if (settings.watchLaterRedirectPage) {
title.target = '_blank'
title.href = url
}
+ const avItems = listBox.querySelectorAll('.av-item')
avItems.forEach(redirect)
- Observer.childList(listBox, records => {
+ Observer.attributesSubtree(listBox, records => {
records.forEach(record => {
- record.addedNodes.forEach(n => {
- if (n instanceof Element) {
- redirect(n, [...listBox.children].indexOf(n))
+ if (record.target instanceof HTMLAnchorElement && record.attributeName === 'href') {
+ const a = record.target
+ const items = dqa(listBox, '.av-item')
+ if (a.href.includes('/medialist/play/watchlater/')) {
+ const index = items.findIndex(it => it.contains(a))
+ if (index !== -1) {
+ redirect(items[index], index)
+ }
}
- })
+ }
})
})
})()