mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Add fallback roomID
This commit is contained in:
parent
b950d92fe4
commit
09c3412c1a
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
@ -181,7 +181,7 @@
|
||||
"quick-favorite.min.js": "A68C33151E3B6E0EA73143FDB29E7F34EBE3496D9C40B2C0358466B3FAB63322",
|
||||
"rank-list.vue.min.js": "5E0E59EE822A055C043929764470A8A8DA9BBB43E0FC31B17B3F2B43303EF0DF",
|
||||
"record-live-danmaku.min.js": "2590A564ADD42BBB34E957B92728EBBE85A644A8E0F94ACDE69B55E3FF1C3889",
|
||||
"record-live-danmaku.vue.min.js": "740784A24CD5326095C269FD33A5B498ADAAF03FE31B136060888D7E7B616BD3",
|
||||
"record-live-danmaku.vue.min.js": "781B03852A7286F2ED261E697A290591E73F73B3264F26C1D6CE1CA649D9AE01",
|
||||
"remove-promotions.min.css": "524327BDED373CE4F4FDDB32009D685100BA186B089648D5EAC7AD68512BFDBC",
|
||||
"remove-promotions.min.js": "47D864E7CF96C5ED714E6903B6CB241880A5B9A696D888744F307D664844A858",
|
||||
"remove-top-mask.min.js": "A15C1EC10D2E1A61845B1ADAE51860553F96427059E10443B1E53FAF48F45304",
|
||||
|
||||
BIN
min/bundle.zip
BIN
min/bundle.zip
Binary file not shown.
2
min/record-live-danmaku.vue.min.js
vendored
2
min/record-live-danmaku.vue.min.js
vendored
@ -1 +1 @@
|
||||
(()=>{return(e,o)=>{const r=`<div class=live-danmaku-recorder :class={opened}><div class=header><div class=title v-if="!(collapsed && isRecording)">记录弹幕</div><template v-if="collapsed && isRecording"><icon type=mdi icon=record-rec></icon><div class=collapse-danmaku-count>{{danmakus.length}}</div></template><icon class=collapse type=mdi :icon="collapsed ? 'chevron-up' : 'chevron-down'"@click.native="collapsed = !collapsed"></icon><div class=close @click="opened = false"><icon type=mdi icon=close></icon></div></div><template v-if=!collapsed><div class=record-stats>已记录{{danmakus.length}}条弹幕</div><div class=loading-tip v-if=loading>正在连接...</div><div class=toggle-record v-else @click="isRecording = !isRecording"><template v-if=isRecording><icon type=mdi icon=square></icon>记录中</template><template v-else><icon type=mdi icon=circle></icon>开始记录</template></div><div class=exports><div class=export-xml @click=exportXML()>导出XML</div></div></template></div>`;o.applyStyleFromText(`.live-danmaku-recorder{position:fixed;top:100%;left:0;transform:translateX(8px) translateY(calc(-100% + 8px));opacity:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;padding:12px;z-index:1000;color:#000;background-color:#fff;box-shadow:rgba(0,0,0,.2) 0 4px 8px 0;border-radius:8px 8px 0 0;min-width:200px}.live-danmaku-recorder.opened{transform:translateX(8px) translateY(calc(-100%));opacity:1;pointer-events:initial}body.dark .live-danmaku-recorder{color:#fff;background-color:#282828}.live-danmaku-recorder,.live-danmaku-recorder *{transition:.2s ease-out}.live-danmaku-recorder .header{display:flex;align-items:center;align-self:stretch}.live-danmaku-recorder .header .collapse{cursor:pointer}.live-danmaku-recorder .header .collapse-danmaku-count{flex-grow:1;padding-right:24px}.live-danmaku-recorder .header .title{flex-grow:1;font-weight:700;font-size:15px;padding-right:16px}.live-danmaku-recorder .header .close{cursor:pointer}.live-danmaku-recorder .header .close .be-icon{font-size:20px}.live-danmaku-recorder .record-stats{margin-top:16px;margin-bottom:8px}.live-danmaku-recorder .loading-tip{margin-bottom:16px}.live-danmaku-recorder .toggle-record{display:flex;align-items:center;padding:8px;margin-bottom:16px;background-color:var(--theme-color);color:var(--foreground-color);cursor:pointer;border-radius:8px}.live-danmaku-recorder .toggle-record .be-icon{font-size:14px;margin-right:8px}.live-danmaku-recorder .exports{align-self:stretch;display:flex;align-items:center}.live-danmaku-recorder .exports>*{border-radius:8px;cursor:pointer;padding:8px;text-align:center;white-space:nowrap;background-color:#8882}.live-danmaku-recorder .exports>:hover{background-color:#8884}.live-danmaku-recorder .exports .export-xml{flex:2 0 0}.live-danmaku-recorder .exports .export-ass{flex:1 0 0;margin-left:8px}`,"record-live-danmaku-style");return{export:Object.assign({template:r},{components:{Icon:()=>o.importAsync("icon.vue")},data(){return{isRecording:true,danmakus:[],opened:false,collapsed:false,loading:true}},async mounted(){try{const{LiveSocket:e}=await o.importAsync("live-socket");const r=await SpinQuery.select(".header-info-ctnr .room-cover");const a=r.href.match(/space\.bilibili\.com\/(\d+)/)[1];const i=await Ajax.getJson(`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${a}`);const t=_.get(i,"data.roomid",document.URL.match(/live\.bilibili\.com\/(\d+)/)[1]);const n=new e(parseInt(t));n.addEventListener("danmaku",e=>{if(this.isRecording){console.log(e.detail.content);this.danmakus.push(e.detail)}});await n.start()}catch(e){logError(e)}finally{this.loading=false}},methods:{getXML(){const e=this.danmakus.map(e=>{const o=e.content.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");return`<d p="${fixed(e.time/1e3,3)},${e.type},${e.fontSize},${e.color},${e.sendTime},0,${e.userHash},0">${o}</d>`});const o=`\n<?xml version="1.0" encoding="UTF-8"?>\n<i>\n ${e.join("\n ")}\n</i>\n`.trim();return o},async exportXML(){const{getFriendlyTitle:e}=await o.importAsync("title");const{DownloadVideoPackage:r}=await o.importAsync("download-video-package");const a=new r;a.add(e()+".xml",this.getXML());await a.emit()},async exportASS(){const e=this.getXML();console.log(e)}}})}}})();
|
||||
(()=>{return(e,o)=>{const r=`<div class=live-danmaku-recorder :class={opened}><div class=header><div class=title v-if="!(collapsed && isRecording)">记录弹幕</div><template v-if="collapsed && isRecording"><icon type=mdi icon=record-rec></icon><div class=collapse-danmaku-count>{{danmakus.length}}</div></template><icon class=collapse type=mdi :icon="collapsed ? 'chevron-up' : 'chevron-down'"@click.native="collapsed = !collapsed"></icon><div class=close @click="opened = false"><icon type=mdi icon=close></icon></div></div><template v-if=!collapsed><div class=record-stats>已记录{{danmakus.length}}条弹幕</div><div class=loading-tip v-if=loading>正在连接...</div><div class=toggle-record v-else @click="isRecording = !isRecording"><template v-if=isRecording><icon type=mdi icon=square></icon>记录中</template><template v-else><icon type=mdi icon=circle></icon>开始记录</template></div><div class=exports><div class=export-xml @click=exportXML()>导出XML</div></div></template></div>`;o.applyStyleFromText(`.live-danmaku-recorder{position:fixed;top:100%;left:0;transform:translateX(8px) translateY(calc(-100% + 8px));opacity:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;padding:12px;z-index:1000;color:#000;background-color:#fff;box-shadow:rgba(0,0,0,.2) 0 4px 8px 0;border-radius:8px 8px 0 0;min-width:200px}.live-danmaku-recorder.opened{transform:translateX(8px) translateY(calc(-100%));opacity:1;pointer-events:initial}body.dark .live-danmaku-recorder{color:#fff;background-color:#282828}.live-danmaku-recorder,.live-danmaku-recorder *{transition:.2s ease-out}.live-danmaku-recorder .header{display:flex;align-items:center;align-self:stretch}.live-danmaku-recorder .header .collapse{cursor:pointer}.live-danmaku-recorder .header .collapse-danmaku-count{flex-grow:1;padding-right:24px}.live-danmaku-recorder .header .title{flex-grow:1;font-weight:700;font-size:15px;padding-right:16px}.live-danmaku-recorder .header .close{cursor:pointer}.live-danmaku-recorder .header .close .be-icon{font-size:20px}.live-danmaku-recorder .record-stats{margin-top:16px;margin-bottom:8px}.live-danmaku-recorder .loading-tip{margin-bottom:16px}.live-danmaku-recorder .toggle-record{display:flex;align-items:center;padding:8px;margin-bottom:16px;background-color:var(--theme-color);color:var(--foreground-color);cursor:pointer;border-radius:8px}.live-danmaku-recorder .toggle-record .be-icon{font-size:14px;margin-right:8px}.live-danmaku-recorder .exports{align-self:stretch;display:flex;align-items:center}.live-danmaku-recorder .exports>*{border-radius:8px;cursor:pointer;padding:8px;text-align:center;white-space:nowrap;background-color:#8882}.live-danmaku-recorder .exports>:hover{background-color:#8884}.live-danmaku-recorder .exports .export-xml{flex:2 0 0}.live-danmaku-recorder .exports .export-ass{flex:1 0 0;margin-left:8px}`,"record-live-danmaku-style");return{export:Object.assign({template:r},{components:{Icon:()=>o.importAsync("icon.vue")},data(){return{isRecording:true,danmakus:[],opened:false,collapsed:false,loading:true}},async mounted(){try{const{LiveSocket:e}=await o.importAsync("live-socket");const r=await SpinQuery.select(".header-info-ctnr .room-cover");let i;if(r!==null){const e=r.href.match(/space\.bilibili\.com\/(\d+)/)[1];const o=await Ajax.getJson(`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${e}`);i=_.get(o,"data.roomid",document.URL.match(/live\.bilibili\.com\/(\d+)/)[1])}else{i=document.URL.match(/live\.bilibili\.com\/(\d+)/)[1]}const a=new e(parseInt(i));a.addEventListener("danmaku",e=>{if(this.isRecording){console.log(e.detail.content);this.danmakus.push(e.detail)}});await a.start()}catch(e){logError(e)}finally{this.loading=false}},methods:{getXML(){const e=this.danmakus.map(e=>{const o=e.content.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");return`<d p="${fixed(e.time/1e3,3)},${e.type},${e.fontSize},${e.color},${e.sendTime},0,${e.userHash},0">${o}</d>`});const o=`\n<?xml version="1.0" encoding="UTF-8"?>\n<i>\n ${e.join("\n ")}\n</i>\n`.trim();return o},async exportXML(){const{getFriendlyTitle:e}=await o.importAsync("title");const{DownloadVideoPackage:r}=await o.importAsync("download-video-package");const i=new r;i.add(e()+".xml",this.getXML());await i.emit()},async exportASS(){const e=this.getXML();console.log(e)}}})}}})();
|
||||
@ -57,15 +57,20 @@ export default {
|
||||
const user = (await SpinQuery.select(
|
||||
'.header-info-ctnr .room-cover'
|
||||
)) as HTMLAnchorElement
|
||||
const uid = user.href.match(/space\.bilibili\.com\/(\d+)/)![1]
|
||||
const json = await Ajax.getJson(
|
||||
`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${uid}`
|
||||
)
|
||||
const roomID = _.get(
|
||||
json,
|
||||
'data.roomid',
|
||||
document.URL.match(/live\.bilibili\.com\/(\d+)/)![1]
|
||||
)
|
||||
let roomID: string
|
||||
if (user !== null) {
|
||||
const uid = user.href.match(/space\.bilibili\.com\/(\d+)/)![1]
|
||||
const json = await Ajax.getJson(
|
||||
`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${uid}`
|
||||
)
|
||||
roomID = _.get(
|
||||
json,
|
||||
'data.roomid',
|
||||
document.URL.match(/live\.bilibili\.com\/(\d+)/)![1]
|
||||
)
|
||||
} else {
|
||||
roomID = document.URL.match(/live\.bilibili\.com\/(\d+)/)![1]
|
||||
}
|
||||
const socket = new LiveSocket(parseInt(roomID))
|
||||
socket.addEventListener('danmaku', (e: CustomEvent<LiveDanmaku>) => {
|
||||
if (this.isRecording) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user