mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
Merge branch 'hotfix#1-v1.11.0'
This commit is contained in:
commit
58e34085e9
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
@ -66,7 +66,7 @@
|
||||
"danmaku-send-bar.min.css": "52149D46CF3A15CF6EB186CB49F298DE18B0723E52D8693228F66099847EDCCB",
|
||||
"danmaku-send-bar.min.js": "7108E72F00C169F26E20409F4AA79F05553310375BABC392EB7E2166224B800A",
|
||||
"dark.min.css": "7B31789D505589C30EA61AEA4789426D1444490E218CB2A9BFA251F224533A73",
|
||||
"dark.user.css": "6CB54949F6DD41B4A0B46E1F7CF19C43AAEE58964CD076F35FBB19989FEFAEA0",
|
||||
"dark.user.css": "16F37FD2DF617FE3AAAA0D92A3478F47A429567486F98497C523E03B38367F8D",
|
||||
"dark-color-scheme.min.js": "6D353AC738180317ACF9D2E046BFFBA0ACC0FA7A8D22B8E16C51127CDE4FE96B",
|
||||
"dark-important.min.css": "546E3C3E0F181EB710CFE486A81CCB5CCC22D61E6C5D442182294CE03D8F4DDF",
|
||||
"dark-navbar.min.css": "7FAD547E326B768904B3739C978DF86FFDDD5E5064FB8F490710D197CCC3018B",
|
||||
@ -84,7 +84,7 @@
|
||||
"disable-profile-popup.min.js": "69901EC9A3D15D585F61B1370DC69003CE5869499CAC9C57A03B24511F338A2D",
|
||||
"double-click-fullscreen.min.js": "C6D95B92ECDE67F2C0A3C6B6E4DC655C524F6A98CE0D48733ADCE4ABA780A47B",
|
||||
"download-audio.min.js": "1F4536DE4FF302BFD026CA17E028AF8EB037FB6D0CB355692549DECAEAE0E8C9",
|
||||
"download-danmaku.min.js": "BCDC6878CE6A8BC6FCF6B3154FD42861C7B442F21107C67D94EEEAF2B72A3DB9",
|
||||
"download-danmaku.min.js": "BB6DAA0F0FD4FFAA8816FB45F8697E17F8B576EFE0DB048C248FD7E3063F8E34",
|
||||
"download-live-records.min.js": "7EF26D22D22EB75A6B27B78B3DB0E2ADE6004587C11B0C2893CF1CCB3B6FAB6F",
|
||||
"download-subtitle.min.js": "EAD1F63E53C5A0A9877EBF655B68FB3438601D2869F31D0D4A2F7BD2A215E5F3",
|
||||
"download-video.min.css": "E312176F7A6AA8492FCF0E6422327996D8B9FAB866A39CEA237E43FE353B6569",
|
||||
|
||||
BIN
min/bundle.zip
BIN
min/bundle.zip
Binary file not shown.
@ -3,7 +3,7 @@
|
||||
@namespace Bilibili-Evolved
|
||||
@homepageURL https://github.com/the1812/Bilibili-Evolved
|
||||
@updateURL https://cdn.jsdelivr.net/gh/the1812/Bilibili-Evolved@preview/min/dark.user.css
|
||||
@version 824.25.0
|
||||
@version 825.31.0
|
||||
@license MIT
|
||||
@author Grant Howard (https://github.com/the1812), Coulomb-G (https://github.com/Coulomb-G)
|
||||
==/UserStyle== */
|
||||
|
||||
2
min/download-danmaku.min.js
vendored
2
min/download-danmaku.min.js
vendored
@ -1 +1 @@
|
||||
(()=>{return(t,n)=>{const{getFriendlyTitle:e}=n.import("title");const{DanmakuInfo:o}=n.import("video-info");const{DanmakuConverter:a}=n.import("danmaku-converter");async function s(t){const n=e();const o={font:"微软雅黑",alpha:.4,duration:t=>{switch(t.type){case 4:case 5:return 4;default:return 6}},blockTypes:[7,8],resolution:{x:1920,y:1080},bottomMarginPercent:.15,bold:false};let s={...o,title:n};try{await loadDanmakuSettingsPanel();const t=localStorage.getItem("bilibili_player_settings");if(t){const n=JSON.parse(t);const e=(t,e)=>_.get(n,`setting_config.${t}`,e);s.blockTypes=(()=>{const t=[];const e={scroll:[1,2,3],top:[5],bottom:[4],color:["color"]};for(const[o,a]of Object.entries(e)){if(_.get(n,`block.type_${o}`,true)===false){t.push(...a)}}return t.concat(7,8)})();s.bold=e("bold",false);s.alpha=parseFloat(e("opacity","0.4"));const o=1.4-.4*e("fontsize",1);s.resolution={x:Math.round(1920*o),y:Math.round(1080*o)};s.duration=(()=>{const t=18-3*e("speedplus",0);return n=>{switch(n.type){case 4:case 5:return 4;default:return t}}})();const a=e("danmakuArea",0);s.bottomMarginPercent=a>=100?0:a/100;if(s.bottomMarginPercent===0&&e("preventshade",false)){s.bottomMarginPercent=.15}const r=_.get(n,"block.list",[]);s.blockFilter=(t=>{for(const n of r){if(!n.s){continue}switch(n.t){case"keyword":{if(t.content.includes(n.v)){return false}break}case"regexp":{if(new RegExp(n.v).test(t.content)){return false}break}case"user":{if(t.userHash===n.v){return false}break}}}return true})}else{console.warn("[弹幕转换] 未找到播放器设置");s={...s,...o}}s.font=dq(".bilibili-player-video-danmaku-setting-right-font .bui-select-result").innerText}catch(t){logError(t);s={...s,...o}}for(const[t,n]of Object.entries(s)){if(n===undefined||n===null){console.warn("danmaku config invalid for key",t,", value =",n);s[t]=o[n]}}console.log(s);const r=new a(s);const c=r.convertToAssDocument(t);return c.generateAss()}async function r(t){const n=e();const a=new o((unsafeWindow||window).cid);await a.fetchInfo();const r=await(async()=>{if(t===true){return new Blob([await s(a.rawXML)],{type:"text/plain"})}else{return new Blob([a.rawXML],{type:"text/plain"})}})();const c=URL.createObjectURL(r);const i=dq("#danmaku-link");const l=i.getAttribute("href");if(l){URL.revokeObjectURL(l)}i.setAttribute("download",`${n}.${t?"ass":"xml"}`);i.setAttribute("href",c);i.click()}return{export:{downloadDanmaku:r,convertToAss:s},widget:{content:`\n<a id="danmaku-link" style="display:none"></a>\n<button\n class="gui-settings-flat-button"\n id="download-danmaku-xml">\n<i class="icon-danmaku"></i>\n<span>下载弹幕<span>(XML)</span></span>\n</button>\n<button\n class="gui-settings-flat-button"\n id="download-danmaku-ass">\n<i class="icon-danmaku"></i>\n<span>下载弹幕<span>(ASS)</span></span>\n</button>\n`,condition:async()=>{let t=await SpinQuery.select(()=>(unsafeWindow||window).cid);return Boolean(t)},success:()=>{const t=dq("#download-danmaku-xml");const n=dq("#download-danmaku-ass");const e=[t,n];const o=(t,n)=>{t.addEventListener("click",async()=>{try{e.forEach(t=>t.disabled=true);await r(n)}catch(t){logError(t)}finally{e.forEach(t=>t.disabled=false)}})};o(t,false);o(n,true)}}}}})();
|
||||
(()=>{return(t,n)=>{const{getFriendlyTitle:e}=n.import("title");const{DanmakuInfo:o}=n.import("video-info");const{DanmakuConverter:a}=n.import("danmaku-converter");async function s(t){const n=e();const o={font:"微软雅黑",alpha:.4,duration:t=>{switch(t.type){case 4:case 5:return 4;default:return 6}},blockTypes:[7,8],resolution:{x:1920,y:1080},bottomMarginPercent:.15,bold:false};let s={...o,title:n};try{await loadDanmakuSettingsPanel();const t=localStorage.getItem("bilibili_player_settings");if(t){const n=JSON.parse(t);const e=(t,e)=>_.get(n,`setting_config.${t}`,e);s.blockTypes=(()=>{const t=[];const e={scroll:[1,2,3],top:[5],bottom:[4],color:["color"]};for(const[o,a]of Object.entries(e)){if(_.get(n,`block.type_${o}`,true)===false){t.push(...a)}}return t.concat(7,8)})();s.bold=e("bold",false);s.alpha=_.clamp(1-parseFloat(e("opacity","0.4")),0,1);const o=1.4-.4*e("fontsize",1);s.resolution={x:Math.round(1920*o),y:Math.round(1080*o)};s.duration=(()=>{const t=18-3*e("speedplus",0);return n=>{switch(n.type){case 4:case 5:return 4;default:return t}}})();const a=e("danmakuArea",0);s.bottomMarginPercent=a>=100?0:a/100;if(s.bottomMarginPercent===0&&e("preventshade",false)){s.bottomMarginPercent=.15}const r=_.get(n,"block.list",[]);s.blockFilter=(t=>{for(const n of r){if(!n.s){continue}switch(n.t){case"keyword":{if(t.content.includes(n.v)){return false}break}case"regexp":{if(new RegExp(n.v).test(t.content)){return false}break}case"user":{if(t.userHash===n.v){return false}break}}}return true})}else{console.warn("[弹幕转换] 未找到播放器设置");s={...s,...o}}s.font=dq(".bilibili-player-video-danmaku-setting-right-font .bui-select-result").innerText}catch(t){logError(t);s={...s,...o}}for(const[t,n]of Object.entries(s)){if(n===undefined||n===null){console.warn("danmaku config invalid for key",t,", value =",n);s[t]=o[n]}}console.log(s);const r=new a(s);const c=r.convertToAssDocument(t);return c.generateAss()}async function r(t){const n=e();const a=new o((unsafeWindow||window).cid);await a.fetchInfo();const r=await(async()=>{if(t===true){return new Blob([await s(a.rawXML)],{type:"text/plain"})}else{return new Blob([a.rawXML],{type:"text/plain"})}})();const c=URL.createObjectURL(r);const i=dq("#danmaku-link");const l=i.getAttribute("href");if(l){URL.revokeObjectURL(l)}i.setAttribute("download",`${n}.${t?"ass":"xml"}`);i.setAttribute("href",c);i.click()}return{export:{downloadDanmaku:r,convertToAss:s},widget:{content:`\n<a id="danmaku-link" style="display:none"></a>\n<button\n class="gui-settings-flat-button"\n id="download-danmaku-xml">\n<i class="icon-danmaku"></i>\n<span>下载弹幕<span>(XML)</span></span>\n</button>\n<button\n class="gui-settings-flat-button"\n id="download-danmaku-ass">\n<i class="icon-danmaku"></i>\n<span>下载弹幕<span>(ASS)</span></span>\n</button>\n`,condition:async()=>{let t=await SpinQuery.select(()=>(unsafeWindow||window).cid);return Boolean(t)},success:()=>{const t=dq("#download-danmaku-xml");const n=dq("#download-danmaku-ass");const e=[t,n];const o=(t,n)=>{t.addEventListener("click",async()=>{try{e.forEach(t=>t.disabled=true);await r(n)}catch(t){logError(t)}finally{e.forEach(t=>t.disabled=false)}})};o(t,false);o(n,true)}}}}})();
|
||||
@ -55,8 +55,8 @@ export async function convertToAss(xml: string) {
|
||||
// 加粗
|
||||
config.bold = getConfig('bold', false)
|
||||
|
||||
// 不透明度
|
||||
config.alpha = parseFloat(getConfig('opacity', '0.4'))
|
||||
// 透明度
|
||||
config.alpha = _.clamp(1 - parseFloat(getConfig('opacity', '0.4')), 0, 1)
|
||||
|
||||
// 分辨率
|
||||
const resolutionFactor = 1.4 - 0.4 * getConfig('fontsize', 1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user