mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Add top comment support
This commit is contained in:
parent
ebf9c64e68
commit
f31b6456cb
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
@ -176,7 +176,7 @@
|
||||
"remove-top-mask.min.js": "A15C1EC10D2E1A61845B1ADAE51860553F96427059E10443B1E53FAF48F45304",
|
||||
"remove-watermark.min.js": "5A63C694BB9E68EA9FDA394D61D227FA31A504E31783C62BF42AACC3FC78C8C4",
|
||||
"reorder.min.js": "C52DEC9C8962AEC9E824913788BDACFCAB1E43356056658F884EE707508629D2",
|
||||
"restore-floors.min.js": "D08ADEE88A8BDC82029D7F7425B7333109B4CAD5F5E6D0F73D1871B272E1DCFB",
|
||||
"restore-floors.min.js": "0277EE2C11AD2EE48990B551016652EBD3D36A36D30BDB25BB6B40957DAF1C12",
|
||||
"screenshot.min.css": "6310BD2E77013EAAB38675DCD00761C2B7132C79A529B4FE25C8E86EC7E2F967",
|
||||
"screenshot.min.js": "7EE9BF54C2297BDF1496A890677EB85AD972A05C566436D41F3DB51C8CCA1C71",
|
||||
"scrollbar.min.css": "E17BDD4F223F7992A1AF279D7EBA58D9FBB51217F45964C79E30DC2ACBC15B46",
|
||||
|
||||
BIN
min/bundle.zip
BIN
min/bundle.zip
Binary file not shown.
2
min/restore-floors.min.js
vendored
2
min/restore-floors.min.js
vendored
@ -1 +1 @@
|
||||
(()=>{return(e,t)=>{var o;(function(e){e[e["Default"]=1]="Default";e[e["ByTime"]=2]="ByTime";e[e["ByLikes"]=3]="ByLikes"})(o||(o={}));const r=(e,t,r=1)=>{if(t===o.ByTime){return Ajax.getJson(`https://api.bilibili.com/x/v2/reply/main?oid=${e}&type=1&mode=${t}`)}return Ajax.getJson(`https://api.bilibili.com/x/v2/reply/main?oid=${e}&type=1&mode=${t}&next=${r}`)};const i=async e=>{if(document.URL.match(/\/\/www\.bilibili\.com\/(video|bangumi)/)){return await SpinQuery.select(()=>unsafeWindow.aid)}console.error("No oid extract method for current context.",e)};const n=async e=>{const t=await i(e);if(t===undefined){return}const n=dq(e,".hot-sort.on")!==null?o.ByLikes:o.ByTime;let s=1;const a=dq(e,".paging-box .current");if(a!==null){s=parseInt(a.textContent)}const l=await r(t,n,s);if(l.code!==0){console.error("Comment API failed: ",l.message);return}const c=_.flatMap(_.get(l,"data.replies",[]),e=>{const t=[{id:e.rpid_str,floor:e.floor}];if(e.replies!==null){t.push(...e.replies.map(e=>{return{id:e.rpid_str,floor:e.floor}}))}return t});console.log(c);const d=dqa(e,".reply-wrap[data-id]");const f=d.map(e=>dq(e,".reply-wrap > .con > .info, .reply-wrap > .info"));d.forEach((e,t)=>{const o=e.getAttribute("data-id");const r=c.find(e=>e.id===o);if(r!==undefined){const e=f[t];if(e.getAttribute("data-restore-floor")===null){e.insertAdjacentHTML("afterbegin",`<span class="floor">#${r.floor}</span>`);e.setAttribute("data-restore-floor",r.floor.toString())}}})};const s=e=>{const t="comment-loading";if(Array.prototype.some.call(e.children,e=>e.classList.contains(t))){const o=Observer.childList(e,r=>{if(r.some(e=>{Array.prototype.some.call(e.removedNodes,e=>{return e.nodeType===Node.ELEMENT_NODE&&e.classList.contains(t)})})){o.stop();s(e)}})}else{if(e.getAttribute("data-restore-floor")===null){e.setAttribute("data-restore-floor","true");const t=dq(e,".comment-list");Observer.childList(t,_.debounce(t=>{console.log(t);n(e)},100))}}};fullyLoaded(()=>{if(document.URL.match(/\/\/www\.bilibili\.com\/(video|bangumi)/)){const e=_.debounce(()=>dqa(".bb-comment").forEach(e=>s(e)),200);Observer.childListSubtree(document.body,e)}})}})();
|
||||
(()=>{return(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===undefined){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=>{return{id:t.rpid_str,floor:t.floor}}))}return e};const d=_.flatMap(_.get(l,"data.replies",[]),c);const u=_.get(l,"data.top.upper");if(u){d.push(...c(u))}const f=dqa(t,".reply-wrap[data-id]");const p=f.map(t=>dq(t,".reply-wrap > .con > .info, .reply-wrap > .info"));f.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",`<span class="floor">#${i.floor}</span>`);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=>{return 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)})}}})();
|
||||
@ -31,22 +31,27 @@ const restore = async (commentContainer: HTMLElement) => {
|
||||
console.error('Comment API failed: ', json.message)
|
||||
return
|
||||
}
|
||||
const replies: { id: string; floor: number }[] = _.flatMap(_.get(json, 'data.replies', []), item => {
|
||||
const getFloorInfo = (item: any) => {
|
||||
const result = [{
|
||||
id: item.rpid_str,
|
||||
floor: item.floor,
|
||||
id: item.rpid_str as string,
|
||||
floor: item.floor as number,
|
||||
}]
|
||||
if (item.replies !== null) {
|
||||
result.push(...item.replies.map((it: any) => {
|
||||
return {
|
||||
id: it.rpid_str,
|
||||
floor: it.floor,
|
||||
id: it.rpid_str as string,
|
||||
floor: it.floor as number,
|
||||
}
|
||||
}))
|
||||
}
|
||||
return result
|
||||
})
|
||||
console.log(replies)
|
||||
}
|
||||
const replies = _.flatMap(_.get(json, 'data.replies', []), getFloorInfo)
|
||||
const top = _.get(json, 'data.top.upper')
|
||||
if (top) {
|
||||
replies.push(...getFloorInfo(top))
|
||||
}
|
||||
// console.log(replies)
|
||||
const commentItems = dqa(commentContainer, '.reply-wrap[data-id]')
|
||||
const commentInfos = commentItems.map(item => dq(item, '.reply-wrap > .con > .info, .reply-wrap > .info') as HTMLElement)
|
||||
commentItems.forEach((item, index) => {
|
||||
@ -85,9 +90,14 @@ const prepareRestore = (commentContainer: HTMLElement) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
fullyLoaded(() => {
|
||||
if (document.URL.match(/\/\/www\.bilibili\.com\/(video|bangumi)/)) {
|
||||
const supportedUrls = [
|
||||
'//www.bilibili.com/video',
|
||||
'//www.bilibili.com/bangumi',
|
||||
// '//t.bilibili.com/',
|
||||
]
|
||||
if (supportedUrls.some(it => document.URL.includes(it))) {
|
||||
fullyLoaded(() => {
|
||||
const callback = _.debounce(() => dqa('.bb-comment').forEach(it => prepareRestore(it as HTMLElement)), 200)
|
||||
Observer.childListSubtree(document.body, callback)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user