Fix BiliPlus in deleted videos

This commit is contained in:
the1812 2020-10-02 16:26:52 +08:00
parent dae4b4fe4f
commit bef054a970
9 changed files with 53 additions and 16 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(()=>{return(i,e)=>{const n=`www.biliplus.com`;const c=["bilibili.com/video/","bilibili.com/bangumi/play","bilibili.com/bangumi/media","space.bilibili.com"];return{widget:{condition:()=>{return c.some(i=>document.URL.includes(i))},content:`\n<a class="gui-settings-flat-button" id="biliplus-redirect">\n<i class="icon-biliplus"></i>\n<span>转到BiliPlus</span>\n</a>`,success:()=>{const i=document.querySelector("#biliplus-redirect");const e=e=>{if(document.URL!==e){i.href=e}else{i.disabled=true}};if(location.host==="space.bilibili.com"){const i=document.URL.replace("space.bilibili.com/",`${n}/space/`);e(i)}else if(document.URL.includes("/bangumi/")){Observer.videoChange(()=>{const i=unsafeWindow.aid||document.querySelector(".av-link,.info-sec-av").innerText.replace(/[aAvV]/g,"");const c=`https://${n}/video/av${i}/`;e(c)})}else{Observer.videoChange(()=>{const i=document.URL.replace(window.location.host,n);e(i)})}}}}}})(); (()=>{return(i,e)=>{const n=`www.biliplus.com`;const c=["bilibili.com/video/","bilibili.com/bangumi/play","bilibili.com/bangumi/media","space.bilibili.com"];return{widget:{condition:()=>{return c.some(i=>document.URL.includes(i))},content:`\n<a class="gui-settings-flat-button" id="biliplus-redirect">\n<i class="icon-biliplus"></i>\n<span>转到BiliPlus</span>\n</a>`,success:()=>{const i=document.querySelector("#biliplus-redirect");const e=/\/video\/(av[\d]+|BV.+)/i;const c=e=>{if(document.URL!==e){i.href=e}else{i.href="";i.disabled=true}};if(location.host==="space.bilibili.com"){const i=document.URL.replace("space.bilibili.com/",`${n}/space/`);c(i)}else if(document.URL.includes("/bangumi/")){Observer.videoChange(()=>{const i=document.querySelector(".av-link,.info-sec-av");const e=unsafeWindow.aid||i.innerText.replace(/[aAvV]/g,"");const o=`https://${n}/video/av${e}/`;c(o)})}else if(e.test(document.URL)){const[,i]=document.URL.match(e);c(`https://${n}/video/${i}/`)}else{Observer.videoChange(()=>{const i=document.URL.replace(window.location.host,n);c(i)})}}}}}})();

View File

@ -15,7 +15,7 @@
"bangumi-timeline.vue.min.js": "3A02A24CA45655763C3A568F618A10F4009747FB67FCD002EAEBE256F03CEDC4", "bangumi-timeline.vue.min.js": "3A02A24CA45655763C3A568F618A10F4009747FB67FCD002EAEBE256F03CEDC4",
"batch-download.min.js": "73D9904D157C9F105B0C10329447F5F47CD8ACAB0944A083110520A4E847412C", "batch-download.min.js": "73D9904D157C9F105B0C10329447F5F47CD8ACAB0944A083110520A4E847412C",
"batch-warning.min.js": "C4D35814CBCFAD0EFB166D0F34B6F37E034DC59E09719BC3656520120E493475", "batch-warning.min.js": "C4D35814CBCFAD0EFB166D0F34B6F37E034DC59E09719BC3656520120E493475",
"biliplus-redirect.min.js": "54F389F88D24D47DAFEB9603CABFD1C56E13E5CBC46B0DA67EE439A7E913B330", "biliplus-redirect.min.js": "45D9E9CAE332FE8929863FE987DDAFEE239931254BCD82B46DD2D887B6277A5B",
"blackboard.min.js": "5F50F1DDA203AC0C54AB52868881AA43B22007EAEF042618B1A093BBAFFDEE5B", "blackboard.min.js": "5F50F1DDA203AC0C54AB52868881AA43B22007EAEF042618B1A093BBAFFDEE5B",
"blackboard.vue.min.js": "65C08D7C295519E833C1CE001E583726410603A482B3036D55F0186ADC5BE1EF", "blackboard.vue.min.js": "65C08D7C295519E833C1CE001E583726410603A482B3036D55F0186ADC5BE1EF",
"blur-video-control.min.css": "B72FA7AD198ED1C9A9620A83881441F96F9FF3083ED12203A324B9753A7CCFFD", "blur-video-control.min.css": "B72FA7AD198ED1C9A9620A83881441F96F9FF3083ED12203A324B9753A7CCFFD",

Binary file not shown.

View File

@ -192,7 +192,13 @@ export const matchPattern = (str, pattern) => {
} }
export const playerReady = () => { export const playerReady = () => {
return SpinQuery.condition( return SpinQuery.condition(
() => parseInt(dq('.video-data .dm').textContent), () => {
const danmakuInfo = dq('.video-data .dm')
if (danmakuInfo) {
return parseInt(danmakuInfo.textContent)
}
return NaN
},
it => !Number.isNaN(it), it => !Number.isNaN(it),
) )
} }

View File

@ -17,11 +17,13 @@ export default {
<span>BiliPlus</span> <span>BiliPlus</span>
</a>`, </a>`,
success: () => { success: () => {
const button = document.querySelector('#biliplus-redirect') const button = document.querySelector('#biliplus-redirect') as HTMLAnchorElement & HTMLButtonElement
const setUrl = url => { const videoRegex = /\/video\/(av[\d]+|BV.+)/i
const setUrl = (url: string) => {
if (document.URL !== url) { if (document.URL !== url) {
button.href = url button.href = url
} else { } else {
button.href = ''
button.disabled = true button.disabled = true
} }
} }
@ -32,11 +34,16 @@ export default {
} }
else if (document.URL.includes('/bangumi/')) { else if (document.URL.includes('/bangumi/')) {
Observer.videoChange(() => { Observer.videoChange(() => {
const aid = unsafeWindow.aid || document.querySelector('.av-link,.info-sec-av').innerText.replace(/[aAvV]/g, '') const bangumiAid = document.querySelector('.av-link,.info-sec-av') as HTMLElement
const aid = unsafeWindow.aid || bangumiAid.innerText.replace(/[aAvV]/g, '')
const url = `https://${host}/video/av${aid}/` const url = `https://${host}/video/av${aid}/`
setUrl(url) setUrl(url)
}) })
} }
else if (videoRegex.test(document.URL)) {
const [, id] = document.URL.match(videoRegex)!
setUrl(`https://${host}/video/${id}/`)
}
else { else {
Observer.videoChange(() => { Observer.videoChange(() => {
const url = document.URL.replace(window.location.host, host) const url = document.URL.replace(window.location.host, host)