Bilibili-Evolved/min/custom-navbar.min.js
2020-01-08 17:48:10 +08:00

1 line
45 KiB
JavaScript

(()=>{return(i,t)=>{if(isIframe()){return}document.body.style.setProperty("--navbar-bounds-padding",`0 ${i.customNavbarBoundsPadding}%`);document.body.style.setProperty("--navbar-blur-opacity",i.customNavbarBlurOpacity||.7);addSettingsListener("customNavbarBlurOpacity",i=>{document.body.style.setProperty("--navbar-blur-opacity",i)});let e=true;const a={widget:{content:`\n<div class="gui-settings-flat-button" id="custom-navbar-settings">\n<i class="mdi mdi-24px mdi-auto-fix"></i>\n<span>顶栏布局</span>\n</div>`,condition:()=>e,success:async()=>{const{initSettingsPanel:i}=await t.importAsync("custom-navbar-settings");await i()}},unload:()=>{const i=document.querySelectorAll(".custom-navbar,.custom-navbar-settings");i.forEach(i=>i.style.display="none");t.removeStyle("customNavbarStyle")},reload:()=>{const i=document.querySelectorAll(".custom-navbar,.custom-navbar-settings");i.forEach(i=>i.style.display="flex");t.applyImportantStyle("customNavbarStyle")}};const s=(i,t,e)=>{e.classList.toggle(i,t)};const n=i=>{document.querySelector(".custom-navbar").classList[i?"add":"remove"]("dark");document.querySelector(".custom-navbar-settings").classList[i?"add":"remove"]("dark")};const l=["//www.bilibili.com","//t.bilibili.com","//search.bilibili.com","//space.bilibili.com","//account.bilibili.com","//pay.bilibili.com","//member.bilibili.com","//big.bilibili.com","//message.bilibili.com","//app.bilibili.com","//passport.bilibili.com","//game.bilibili.com","//live.bilibili.com/blackboard/"];const c=["//t.bilibili.com/lottery/h5/index/#/result","//member.bilibili.com/video/upload","//space.bilibili.com/ajax/","//www.bilibili.com/h5/comment/"];if(!l.some(i=>document.URL.includes(i))||c.some(i=>document.URL.includes(i))){e=false;return a}document.body.classList.add("custom-navbar-loading");let o={};let r={};let d;class m{constructor(){this.html=``;this.popupHtml=``;this.flex=`0 0 auto`;this.disabled=false;this.requestedPopup=false;this.initialPopup=null;this.onPopup=null;this.href=null;this.notifyCount=0;this.touch=i.touchNavBar;this.active=false}get name(){return"undefined"}get order(){return i.customNavbarOrder[this.name]}get hidden(){return i.customNavbarHidden.includes(this.name)}async setNotifyCount(i){const t=await SpinQuery.select(`.custom-navbar li[data-name='${this.name}'] .notify-count`);if(!t||!i){t.innerHTML="";return}t.innerHTML=i}async setNotifyStyle(i){const t=await SpinQuery.select(`.custom-navbar li[data-name='${this.name}'] .notify-count`);if(!t){return}const e={1:"number",2:"dot",3:"hidden"};t.classList.remove(Object.values(e));t.classList.add(e[i])}}class p extends m{constructor(i){super();this.number=i;this.flex="1 0 auto";this.disabled=true}get name(){return"blank"+this.number}}class u extends m{constructor(){super();this.href=`https://www.bilibili.com/`;this.touch=false;addSettingsListener("customNavbarSeasonLogo",()=>this.getLogo(),true)}async getLogo(){if(i.customNavbarSeasonLogo){const i=await Ajax.getJson("https://api.bilibili.com/x/web-show/res/locs?pf=0&ids=142");if(i.code===0){this.html=`<img height="38" src="${i.data[142][0].litpic.replace("http:","https:")}">`;return}}this.html=`<i class="custom-navbar-iconfont custom-navbar-icon-logo"></i>`}get name(){return"logo"}}class b extends m{constructor(i,t,e){super();this.linkName=e;this.html=i;this.href=t;this.touch=false;this.active=document.URL.startsWith(t)}get name(){return this.linkName+"Link"}}class h extends m{constructor(){super();this.href="https://member.bilibili.com/v2#/upload/video/frame";this.html=`\n<svg style="width:16px;height:16px;padding:3px;box-sizing:content-box;" viewBox="0 0 785 886">\n<path d="M582,374L582,566C582,585.333 576.167,600.833 564.5,612.5C552.833,624.167 537.333,630 518,630L262,630C242.667,630 227.167,624.167 215.5,612.5C203.833,600.833 198,585.333 198,566L198,374L32,374C22,374 14.1667,371.167 8.5,365.5C2.83333,359.833 0,352 0,342C0,338.667 1.16666,334.5 3.5,329.5C5.83333,324.5 8.66666,320 12,316L371,9C377.667,3.00006 385.167,6.10352e-005 393.5,0C401.833,6.10352e-005 409.333,3.00006 416,9L774,316C780,322.667 783.333,330.167 784,338.5C784.667,346.833 783.333,354.333 780,361L764,370C760,372.667 754.667,374 748,374ZM70,758L710,758C729.333,758 744.833,763.833 756.5,775.5C768.167,787.167 774,802.667 774,822C774,841.333 768.167,856.833 756.5,868.5C744.833,880.167 729.333,886 710,886L70,886C50.6667,886 35.1667,880.167 23.5,868.5C11.8333,856.833 6,841.333 6,822C6,802.667 11.8333,787.167 23.5,775.5C35.1667,763.833 50.6667,758 70,758Z" />\n</svg>\n<div id="upload-button">投稿</div>`;this.popupHtml=`\n<ul id="upload-actions">\n<li><a target="_blank" href="https://member.bilibili.com/v2#/upload/text/apply">专栏投稿</a></li>\n<li><a target="_blank" href="https://member.bilibili.com/v2#/upload/audio/">音频投稿</a></li>\n<li><a target="_blank" href="https://member.bilibili.com/v2#/upload/video/frame">视频投稿</a></li>\n<li><a target="_blank" href="https://member.bilibili.com/v2#/upload-manager/article">投稿管理</a></li>\n<li><a target="_blank" href="https://member.bilibili.com/v2#/home">创作中心</a></li>\n</ul>\n`}get name(){return"upload"}}class v extends m{constructor(){super();this.href="https://message.bilibili.com/";this.html="消息";this.popupHtml=`\n<ul id="message-list">\n<li><a data-name="reply" target="_blank" href="https://message.bilibili.com/#/reply">回复我的</a></li>\n<li><a data-name="at" target="_blank" href="https://message.bilibili.com/#/at">@我的</a></li>\n<li><a data-name="like" target="_blank" href="https://message.bilibili.com/#/love">收到的赞</a></li>\n<li><a data-name="user_msg" target="_blank" href="https://message.bilibili.com/#/whisper">我的消息</a></li>\n<li><a data-name="sys_msg" target="_blank" href="https://message.bilibili.com/#/system">系统通知</a></li>\n</ul>\n`;this.requestedPopup=true;this.active=document.URL.startsWith("https://message.bilibili.com/");this.fetchSettings().then(i=>{if(i){this.init()}})}get name(){return"messages"}async fetchSettings(){const i=await bilibiliEvolved.Ajax.getJsonWithCredentials(`https://api.vc.bilibili.com/link_setting/v1/link_setting/get?msg_notify=1`);if(i.code!==0){return}await this.setNotifyStyle(i.data.msg_notify);return i.data.msg_notify!==3}async init(){const i=await Ajax.getJsonWithCredentials(`https://api.bilibili.com/x/msgfeed/unread`);const t=await Ajax.getJsonWithCredentials(`https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread`);const e=await SpinQuery.select("#message-list");const a=[...e.querySelectorAll("a[data-name]")];const s=a.map(i=>i.getAttribute("data-name"));if(i.code!==0||t.code!==0){return}i.data["user_msg"]=t.data.unfollow_unread+t.data.follow_unread;let n=s.reduce((t,e)=>t+i.data[e],0);if(!n){return}await this.setNotifyCount(n);s.forEach((t,e)=>{const s=i.data[t];if(s>0){a[e].setAttribute("data-count",s)}else{a[e].removeAttribute("data-count")}});a.forEach(i=>{i.addEventListener("click",()=>{const t=i.getAttribute("data-count");i.removeAttribute("data-count");n-=t;this.setNotifyCount(n)})})}}class g extends m{constructor(){super();this.html=`主站`;this.popupHtml=`\n<ul id="custom-navbar-home-popup">\n<li class="category-item loading" v-if="loading">\n 加载中...\n</li>\n<li class="category-item" style="display: none" :style="{display: loading ? 'none' : 'list-item'}" v-for="item of info" :class="{ main: item[1].count }">\n<a :href="item[1].link">\n<svg aria-hidden="true">\n<use :href="'#header-icon-' + item[1].icon" :xlink:href="'#header-icon-' + item[1].icon"></use>\n</svg>\n<div>{{item[0]}}</div>\n<span>{{item[1].count}}</span>\n</a>\n<div class="popup" v-if="item[1].subRegions">\n<a v-for="region of Object.entries(item[1].subRegions)" :href="region[1]">\n {{region[0]}}\n</a>\n</div>\n</li>\n</ul>\n`;const i=async()=>{const i=await Ajax.getJson("https://api.bilibili.com/x/web-interface/online");if(parseInt(i.code)!==0){throw new Error(`[自定义顶栏] 分区投稿信息获取失败: ${i.message}`)}const t=i.data.region_count;await SpinQuery.select("#custom-navbar-home-popup");return{"动画":{icon:"douga",count:t[1],link:`https://www.bilibili.com/v/douga/`,subRegions:{"MAD·AMV":`https://www.bilibili.com/v/douga/mad/`,"MMD·3D":`https://www.bilibili.com/v/douga/mmd/`,"短片·手书·配音":`https://www.bilibili.com/v/douga/voice/`,"综合":`https://www.bilibili.com/v/douga/other/`}},"番剧":{icon:"anime",count:t[13],link:`https://www.bilibili.com/anime/`,subRegions:{"连载动画":`https://www.bilibili.com/v/anime/serial/`,"完结动画":`https://www.bilibili.com/v/anime/finish/`,"资讯":`https://www.bilibili.com/v/anime/information/`,"官方延伸":`https://www.bilibili.com/v/anime/offical/`,"新番时间表":`https://www.bilibili.com/anime/timeline/`}},"国创":{icon:"guochuang",count:t[167],link:`https://www.bilibili.com/guochuang/`,subRegions:{"国产动画":`https://www.bilibili.com/v/guochuang/chinese/`,"国产原创相关":`https://www.bilibili.com/v/guochuang/original/`,"布袋戏":`https://www.bilibili.com/v/guochuang/puppetry/`,"资讯":`https://www.bilibili.com/v/guochuang/information/`,"新番时间表":`https://www.bilibili.com/guochuang/timeline/`,"国产动画索引":`https://www.bilibili.com/guochuang/index/`}},"音乐":{icon:"music",count:t[3],link:`https://www.bilibili.com/v/music/`,subRegions:{"原创音乐":"https://www.bilibili.com/v/music/original/","翻唱":"https://www.bilibili.com/v/music/cover/","VOCALOID·UTAU":"https://www.bilibili.com/v/music/vocaloid/","电音":"https://www.bilibili.com/v/music/electronic/","演奏":"https://www.bilibili.com/v/music/perform/",MV:"https://www.bilibili.com/v/music/mv/","音乐现场":"https://www.bilibili.com/v/music/live/","音乐综合":"https://www.bilibili.com/v/music/other/","音频":"https://www.bilibili.com/audio/home?musicType=music"}},"舞蹈":{icon:"dance",count:t[129],link:`https://www.bilibili.com/v/dance/`,subRegions:{"宅舞":"https://www.bilibili.com/v/dance/otaku/","三次元舞蹈":"https://www.bilibili.com/v/dance/three_d/","舞蹈教程":"https://www.bilibili.com/v/dance/demo/"}},"游戏":{icon:"game",count:t[4],link:`https://www.bilibili.com/v/game/`,subRegions:{"单机游戏":"https://www.bilibili.com/v/game/stand_alone/","电子竞技":"https://www.bilibili.com/v/game/esports/","手机游戏":"https://www.bilibili.com/v/game/mobile/","网络游戏":"https://www.bilibili.com/v/game/online/","桌游棋牌":"https://www.bilibili.com/v/game/board/",GMV:"https://www.bilibili.com/v/game/gmv/","音游":"https://www.bilibili.com/v/game/music/",Mugen:"https://www.bilibili.com/v/game/mugen/","游戏赛事":"https://www.bilibili.com/v/game/match/"}},"科技":{icon:"technology",count:t[36],link:`https://www.bilibili.com/v/technology/`,subRegions:{"趣味科普人文":"https://www.bilibili.com/v/technology/fun/","野生技术协会":"https://www.bilibili.com/v/technology/wild/","演讲·公开课":"https://www.bilibili.com/v/technology/speech_course/","星海":"https://www.bilibili.com/v/technology/military/","机械":"https://www.bilibili.com/v/technology/mechanical/","汽车":"https://www.bilibili.com/v/technology/automobile/"}},"数码":{icon:"digital",count:t[188],link:`https://www.bilibili.com/v/digital/`,subRegions:{"手机平板":"https://www.bilibili.com/v/digital/mobile/","电脑装机":"https://www.bilibili.com/v/digital/pc/","摄影摄像":"https://www.bilibili.com/v/digital/photography/","影音智能":"https://www.bilibili.com/v/digital/intelligence_av/"}},"生活":{icon:"life",count:t[160],link:`https://www.bilibili.com/v/life/`,subRegions:{"搞笑":"https://www.bilibili.com/v/life/funny/","日常":"https://www.bilibili.com/v/life/daily/","美食圈":"https://www.bilibili.com/v/life/food/","动物圈":"https://www.bilibili.com/v/life/animal/","手工":"https://www.bilibili.com/v/life/handmake/","绘画":"https://www.bilibili.com/v/life/painting/","运动":"https://www.bilibili.com/v/life/sports/","其他":"https://www.bilibili.com/v/life/other/"}},"鬼畜":{icon:"kichiku",count:t[119],link:`https://www.bilibili.com/v/kichiku/`,subRegions:{"鬼畜调教":"https://www.bilibili.com/v/kichiku/guide/","音MAD":"https://www.bilibili.com/v/kichiku/mad/","人力VOCALOID":"https://www.bilibili.com/v/kichiku/manual_vocaloid/","教程演示":"https://www.bilibili.com/v/kichiku/course/"}},"时尚":{icon:"fashion",count:t[155],link:`https://www.bilibili.com/v/fashion/`,subRegions:{"美妆":"https://www.bilibili.com/v/fashion/makeup/","服饰":"https://www.bilibili.com/v/fashion/clothing/","健身":"https://www.bilibili.com/v/fashion/aerobics/","T台":"https://www.bilibili.com/v/fashion/catwalk/","风尚标":"https://www.bilibili.com/v/fashion/trends/"}},"广告":{icon:"ad",count:t[165],link:`https://www.bilibili.com/v/ad/ad/`},"娱乐":{icon:"ent",count:t[5],link:`https://www.bilibili.com/v/ent/`,subRegions:{"综艺":"https://www.bilibili.com/v/ent/variety/","明星":"https://www.bilibili.com/v/ent/star/","Korea相关":"https://www.bilibili.com/v/ent/korea/"}},"影视":{icon:"cinephile",count:t[181],link:`https://www.bilibili.com/v/cinephile/`,subRegions:{"影视杂谈":"https://www.bilibili.com/v/cinephile/cinecism/","影视剪辑":"https://www.bilibili.com/v/cinephile/montage/","短片":"https://www.bilibili.com/v/cinephile/shortfilm/","预告·资讯":"https://www.bilibili.com/v/cinephile/trailer_info/","特摄":"https://www.bilibili.com/v/cinephile/tokusatsu/"}},"放映厅":{icon:"cinema",count:t[177]+t[23]+t[11],link:`https://www.bilibili.com/cinema/`,subRegions:{"纪录片":"https://www.bilibili.com/documentary/","电影":"https://www.bilibili.com/movie/","电视剧":"https://www.bilibili.com/tv/"}},"专栏":{icon:"read",count:``,link:`https://www.bilibili.com/read/home`},"直播":{icon:"zhibo",count:``,link:`https://live.bilibili.com`,subRegions:{"全部直播":"https://live.bilibili.com/all?visit_id=5icxsa0kmts0","游戏直播":"https://live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0&visit_id=5icxsa0kmts0#/2/0","手游直播":"https://live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0&visit_id=5icxsa0kmts0#/3/0","娱乐直播":"https://live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0&visit_id=5icxsa0kmts0#/1/0","电台直播":"https://live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0&visit_id=5icxsa0kmts0#/5/0","绘画直播":"https://live.bilibili.com/p/eden/area-tags?parentAreaId=4&areaId=0&visit_id=5icxsa0kmts0#/4/0"}},"小黑屋":{icon:"blackroom",count:``,link:`https://www.bilibili.com/blackroom/`},"专题":{icon:"topic",count:``,link:`https://www.bilibili.com/blackboard/topic_list.html`},"活动":{icon:"activit",count:``,link:`https://www.bilibili.com/blackboard/x/act_list`}}};this.initialPopup=(async()=>{new Vue({el:await SpinQuery.select("#custom-navbar-home-popup"),data:{info:[],loading:true},async mounted(){try{this.info=Object.entries(await i())}finally{this.loading=false}}})})}get name(){return"category"}}class w extends m{constructor(){super();this.noPadding=true;this.href="https://space.bilibili.com";this.html=`\n<div class="user-face-container">\n<img src='${EmptyImageUrl}' class="user-face"></img>\n<img src='${EmptyImageUrl}' class="user-pendant"></img>\n</div>\n`;this.popupHtml=`\n<div class="user-info-panel">\n<div v-if="isLogin" class="logged-in">\n<a class="name" target="_blank" href="https://space.bilibili.com/">{{uname}}</a>\n<a class="type" target="_blank" href="https://account.bilibili.com/account/big">{{userType}}</a>\n<div class="privileges row" v-if="this.vipType === 2">\n<div class="b-coin" :class="{received: privileges.bCoin.received}" @click="privilegeReceive(1)" :title="'有效期限: ' + privileges.bCoin.expire">\n {{privileges.bCoin.received ? '已领取B币' : '领取B币'}}\n</div>\n<div class="coupons" :class="{received: privileges.coupons.received}" @click="privilegeReceive(2)" :title="'有效期限: ' + privileges.coupons.expire">\n {{privileges.coupons.received ? '已领取优惠券' : '领取优惠券'}}\n</div>\n</div>\n<div class="level-info row">\n<a target="_blank" title="等级" href="https://account.bilibili.com/account/record"\n class="level">\n<i class="custom-navbar-iconfont-extended" :class="'custom-navbar-icon-lv' + level_info.current_level"></i>\n</a>\n<span class="level-progress-label">{{level_info.current_exp}} / {{level_info.next_exp}}</span>\n</div>\n<div class="level-progress separator">\n<div class="level-progress-thumb" :style="levelProgressStyle"></div>\n</div>\n<div class="items">\n<a class="item" target="_blank" title="手机验证"\n href="https://passport.bilibili.com/account/security#/bindphone">\n<i class="custom-navbar-iconfont-new-home custom-navbar-icon-bind-phone"></i>\n<i v-if="mobile_verified" class="custom-navbar-iconfont-new-home custom-navbar-icon-ok"></i>\n<i v-else class="custom-navbar-iconfont-new-home custom-navbar-icon-cancel"></i>\n</a>\n<a class="item" target="_blank" title="邮箱验证"\n href="https://passport.bilibili.com/account/security#/bindmail">\n<i class="custom-navbar-iconfont-new-home custom-navbar-icon-bind-email"></i>\n<i v-if="email_verified" class="custom-navbar-iconfont-new-home custom-navbar-icon-ok"></i>\n<i v-else class="custom-navbar-iconfont-new-home custom-navbar-icon-cancel"></i>\n</a>\n<a class="item" target="_blank" href="https://account.bilibili.com/site/coin" title="硬币">\n<i class="custom-navbar-iconfont-new-home custom-navbar-icon-coin"></i>\n<span>{{money}}</span>\n</a>\n<a class="item" target="_blank" href="https://pay.bilibili.com/bb_balance.html" title="B币">\n<i class="custom-navbar-iconfont-new-home custom-navbar-icon-b-coin"></i>\n<span>{{wallet.bcoin_balance}}</span>\n</a>\n</div>\n<div class="separator"></div>\n<a class="operation" target="_blank" href="https://account.bilibili.com/account/home">\n<i class="icon custom-navbar-icon-profile custom-navbar-iconfont-new-home"></i>\n 个人中心\n</a>\n<a class="operation" target="_blank" href="https://member.bilibili.com/v2#/upload-manager/article">\n<i class="icon custom-navbar-icon-posts custom-navbar-iconfont-new-home"></i>\n 投稿管理\n</a>\n<a class="operation" target="_blank" href="https://pay.bilibili.com/">\n<i class="icon custom-navbar-icon-wallet custom-navbar-iconfont-new-home"></i>\n B币钱包\n</a>\n<a class="operation" target="_blank" href="https://link.bilibili.com/p/center/index">\n<i class="icon custom-navbar-icon-live-center custom-navbar-iconfont-new-home"></i>\n 直播中心\n</a>\n<a class="operation" target="_blank" href="https://show.bilibili.com/orderlist">\n<i class="icon custom-navbar-icon-order-center custom-navbar-iconfont-new-home"></i>\n 订单中心\n</a>\n \x3c!-- <a class="operation" target="_blank" href="https://www.bilibili.com/v/cheese/mine">\n<i class="icon custom-navbar-icon-course custom-navbar-iconfont-new-home"></i>\n 我的课程\n</a> --\x3e\n<a class="logout grey-button" href="https://account.bilibili.com/login?act=exit">\n 退出登录\n</a>\n</div>\n<div v-else class="not-logged-in">\n<h1 class="welcome">欢迎来到 bilibili</h1>\n<a href="https://passport.bilibili.com/register/phone.html" class="signup grey-button">注册</a>\n<a href="https://passport.bilibili.com/login" class="login theme-button">登录</a>\n</div>\n</div>\n`;this.requestedPopup=true;this.init()}get name(){return"userInfo"}async init(){const i=await SpinQuery.select(".custom-navbar .user-info-panel");const t=await SpinQuery.select(".custom-navbar .user-face-container .user-face");const e=await Ajax.getJsonWithCredentials("https://api.bilibili.com/x/web-interface/nav");const a=await Ajax.getJsonWithCredentials("https://api.bilibili.com/x/web-interface/nav/stat");Object.assign(o,e.data);Object.assign(o,a.data);const s=new Vue({el:i,data:{...o,privileges:{bCoin:{received:false,expire:""},coupons:{received:false,expire:""}}},computed:{userType(){if(!this.isLogin){return"未登录"}if(this.level_info.current_level===0){return"注册会员"}if(this.vipStatus===1){if(this.vipType===1){return this.vip_theme_type?"小会员":"大会员"}else if(this.vipType===2){return this.vip_theme_type?"年度小会员":"年度大会员"}}return"正式会员"},levelProgressStyle(){const i=(this.level_info.current_exp-this.level_info.current_min)/(this.level_info.next_exp-this.level_info.current_min);return{transform:`scaleX(${i})`}}},methods:{async privilegeReceive(i){const t={1:"bCoin",2:"coupons"};if(this.privileges[t[i]].received){return}this.privileges[t[i]].received=true;const e=getCsrf();const a=await(await fetch("https://api.bilibili.com/x/vip/privilege/receive",{credentials:"include",headers:{"content-type":"application/x-www-form-urlencoded"},body:`type=${i}&csrf=${e}`,method:"POST"})).json();console.log(a);if(a.code===0){if(t[i]==="bCoin"){this.wallet.bcoin_balance+=5}}else if(a.code===69801){return}else{this.privileges[t[i]].received=false;logError(a.message)}}}});if(o.isLogin){const i=o.face.replace("http","https");const e=[1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4];if(!i.includes("static.hdslb.com/images/member/noface.gif")){const a=68;t.setAttribute("srcset",e.map(t=>{return`${i}@${parseInt(a*t)}w_${parseInt(a*t)}h.jpg ${t}x`}).join(","))}else{t.setAttribute("src","//static.hdslb.com/images/member/noface.gif")}if(o.pendant.image){const i=await SpinQuery.select(".custom-navbar .user-face-container .user-pendant");const t=o.pendant.image.replace("http","https");const a=116;i.setAttribute("srcset",e.reduce((i,e)=>{return i+`, ${t}@${parseInt(a*e)}w_${parseInt(a*e)}h.png ${e}x`},""))}if(o.vipType===2){const i=await Ajax.getJsonWithCredentials("https://api.bilibili.com/x/vip/privilege/my");if(i.code===0){const t=i.data.list.find(i=>i.type===1);s.privileges.bCoin.received=t.state===1;s.privileges.bCoin.expire=new Date(t.expire_time*1e3).toLocaleDateString();const e=i.data.list.find(i=>i.type===2);s.privileges.coupons.received=e.state===1;s.privileges.coupons.expire=new Date(e.expire_time*1e3).toLocaleDateString()}}}else{t.setAttribute("src","https://static.hdslb.com/images/akari.jpg")}}}class f extends m{constructor(){super();this.disabled=true;this.html=`\n<form id="custom-navbar-search" autocomplete="off" target="_blank" method="get" action="https://search.bilibili.com/all">\n<input type="text" placeholder="搜索" name="keyword">\n<input type="hidden" name="from_source" value="banner_search">\n<a style="display: none" target="_blank" class="recommended-target"></a>\n<button type="submit" title="搜索" tabindex="-1">\n<svg style="width:22px;height:22px" viewBox="0 0 24 24">\n<path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" />\n</svg>\n</button>\n</form>\n<div class="popup search-list" :class="{empty: items.length === 0}">\n<div class="search-list-item" tabindex="0" v-for="(item, index) of items" v-html="item.html" :title="isHistory ? item.html : ''" @keydown.enter="submit(item.value)" @click.self="submit(item.value)" @keydown.shift.delete="deleteItem(item, index)" @keydown.down.prevent="nextItem(index)" @keydown.up.prevent="previousItem(index)"></div>\n<div tabindex="0" v-if="items.length > 0 && isHistory" class="search-list-item clear-history" @click="clearSearchHistory()" @keydown.enter="clearSearchHistory()" @keydown.down.prevent="nextItem(items.length)" @keydown.up.prevent="previousItem(items.length)"><i class="mdi mdi-18px mdi-delete-sweep"></i>清除搜索历史</div>\n</div>\n`;this.init()}async init(){const e=await SpinQuery.select("#custom-navbar-search");const a=e.querySelector("input[name='keyword']");e.addEventListener("submit",t=>{if(a.value===""){if(!i.hideTopSearch){e.querySelector(".recommended-target").click()}t.preventDefault();return false}if(/^av[\d]+$/.test(a.value)){window.open(`https://www.bilibili.com/${a.value}`);t.preventDefault();return false}const s=i.searchHistory.find(i=>i.keyword===a.value);if(s){s.count++;s.date=(new Date).toJSON();console.log(s)}else{i.searchHistory.unshift({count:1,keyword:a.value,date:(new Date).toJSON()});console.log({count:1,keyword:a.value,date:(new Date).toJSON()})}i.searchHistory=i.searchHistory.slice(0,10);return true});if(!i.hideTopSearch){const i=await Ajax.getJson("https://api.bilibili.com/x/web-interface/search/default");if(i.code===0){a.setAttribute("placeholder",i.data.show_name);let t;if(i.data.url!==""){t=i.data.url}else if(i.data.name.startsWith("av")){t=`https://www.bilibili.com/${i.data.name}`}else{t=`https://search.bilibili.com/all?keyword=${i.data.name}`}e.querySelector(".recommended-target").setAttribute("href",t)}else{console.error("[自定义顶栏] 获取搜索推荐词失败")}}const s=new Vue({el:dq(".popup.search-list"),data:{items:[],isHistory:true},methods:{submit(i){a.value=i;e.submit();raiseEvent(e,"submit")},nextItem(i){const t=dq(`.custom-navbar .search-list-item:nth-child(${i+2})`);if(t){t.focus()}},previousItem(i){const t=dq(`.custom-navbar .search-list-item:nth-child(${i})`);if(t){t.focus()}else{a.focus();return}},deleteItem(t,e){i.searchHistory.splice(i.searchHistory.findIndex(i=>i.keyword===t.value),1);i.searchHistory=i.searchHistory;this.items.splice(e,1)},clearSearchHistory(){i.searchHistory=[];this.items=[]}}});const{debounce:n}=await t.importAsync("debounce");let l="";const c=async()=>{const t=a.value;s.isHistory=t==="";if(s.isHistory){s.items=i.searchHistory.sort((i,t)=>{const e=i.date?new Date(i.date):new Date(0);const a=t.date?new Date(t.date):new Date(0);return Number(a)-Number(e)}).map(i=>{return{value:i.keyword,html:i.keyword}}).slice(0,10)}else{const i=`https://s.search.bilibili.com/main/suggest?func=suggest&suggest_type=accurate&sub_type=tag&main_ver=v1&highlight=&userid=${o.mid}&bangumi_acc_num=1&special_acc_num=1&topic_acc_num=1&upuser_acc_num=3&tag_num=10&special_num=10&bangumi_num=10&upuser_num=3&term=${t}`;l=i;const e=await Ajax.getJson(i);if(e.code!==0||l!==i){return}const a=e.result.tag;if(a===undefined){s.items=[];return}s.items=a.map(i=>{return{value:i.value,html:i.name.replace(/suggest_high_light/g,"suggest-highlight")}})}};c();const r=n(c,200);let d=false;a.addEventListener("compositionstart",()=>d=true);a.addEventListener("compositionend",()=>{d=false;raiseEvent(a,"input")});a.addEventListener("input",()=>{if(!d){r()}});a.addEventListener("keydown",i=>{if(i.key==="ArrowDown"&&s.items.length>0){i.preventDefault();dq(".custom-navbar .search-list-item:first-child").focus()}})}get name(){return"search"}}class y extends m{constructor(i,t,{src:e,width:a,height:s,lazy:n,iframeName:l}){super();this.iframeName=l;this.html=i;this.href=t;this.popupHtml=`\n<iframe src="${e}" frameborder="0" width="${a}" height="${s}"></iframe>\n`;this.noPadding=true;this.requestedPopup=n?false:true;this.touch=false;this.transparent=true}get name(){return this.iframeName+"Iframe"}}class _ extends y{constructor(...t){super(...t);this.touch=i.touchNavBar;this.getNotifyCount()}getApiUrl(){return null}getCount(){return 0}async getNotifyCount(){const i=await SpinQuery.select(`.custom-navbar li[data-name='${this.name}'] .notify-count`);const t=await Ajax.getJsonWithCredentials(this.getApiUrl());const e=this.getCount(t);if(t.code===0&&e){i.innerHTML=e;this.initialPopup=(()=>{i.innerHTML=""})}}}let k=()=>{};let x=()=>{};const $=({dataObject:i,apiUrl:e,name:a,handleJson:s,template:n})=>{return{template:n,components:{"dpi-img":()=>t.importAsync("dpi-img.vue")},methods:{handleJson:s,async fetchData(i=false){try{const t=await Ajax.getJsonWithCredentials(e);if(t.code!==0){throw new Error(t.message)}await this.handleJson(t)}catch(t){if(i===true){return}logError(`加载${a}动态失败, error = ${t}`)}finally{this.loading=false}}},data(){return Object.assign({loading:true},i)},mounted(){this.fetchData();k=(async()=>await this.fetchData(true))},destroyed(){k=(()=>{})}}};class C extends m{constructor(){super();this.noPadding=true;this.href=i.oldTweets?"https://www.bilibili.com/account/dynamic":"https://t.bilibili.com/";this.html="动态";this.popupHtml=`\n<div class="activity-popup">\n<activity-tabs :tab.sync="selectedTab" :items="tabs"></activity-tabs>\n<div class="activity-popup-content">\n<transition name="activity-content" mode="out-in">\n<component :is="content"></component>\n</transition>\n \x3c!-- <a class="view-more" target="_blank" :href="viewMoreUrl">查看更多<i class="mdi mdi-dots-horizontal-circle-outline"></i></a> --\x3e\n</div>\n</div>\n`;this.active=document.URL.replace(/\?.*$/,"")===this.href;this.initialPopup=(()=>{this.init()});this.onPopup=(()=>{this.setNotifyCount(0)});this.getNotifyCount();setInterval(async()=>{await this.getNotifyCount();await x();await k()},C.updateInterval)}static get updateInterval(){return 5*60*1e3}static getLatestID(){return document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)bp_t_offset_${o.mid}\\s*\\=\\s*([^;]*).*$)|^.*$`),"$1")}static setLatestID(i){const t=C.getLatestID();if(C.compareID(i,t)<0){return}document.cookie=`bp_t_offset_${o.mid}=${i};path=/;domain=.bilibili.com;max-age=${60*60*24*30}`}static compareID(i,t){if(i===t){return 0}if(i.length>t.length){return 1}if(t.length>i.length){return-1}return i>t===true?1:-1}static isNewID(i){return C.compareID(i,d)>0}static updateLatestID(i){const[t]=[...i.map(i=>i.id)].sort(C.compareID).reverse();C.setLatestID(t)}async getNotifyCount(){const i=`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_num?rsp_type=1&uid=${o.mid}&update_num_dy_id=${C.getLatestID()}&type_list=8,64,512`;const t=await Ajax.getJsonWithCredentials(i);if(t.code!==0){return}this.setNotifyCount(t.data.update_num)}async init(){Vue.component("activity-loading",{template:`\n<div v-if="loading" class="loading">\n<i class="mdi mdi-18px mdi-loading mdi-spin"></i>加载中...\n</div>`,props:["loading"]});Vue.component("activity-empty",{template:`\n<div class="empty">空空如也哦 = ̄ω ̄=</div>`});this.popupVM=new Vue({el:await SpinQuery.select(".activity-popup"),data:{tabs:[{name:"视频",component:"video-activity",moreUrl:"https://t.bilibili.com/?tab=8",get notifyApi(){return`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_num?rsp_type=1&uid=${o.mid}&update_num_dy_id=${C.getLatestID()}&type_list=8`},notifyCount:null},{name:"番剧",component:"bangumi-activity",moreUrl:"https://t.bilibili.com/?tab=512",get notifyApi(){return`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_num?rsp_type=1&uid=${o.mid}&update_num_dy_id=${C.getLatestID()}&type_list=512`},notifyCount:null},{name:"专栏",component:"column-activity",moreUrl:"https://t.bilibili.com/?tab=64",get notifyApi(){return`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_num?rsp_type=1&uid=${o.mid}&update_num_dy_id=${C.getLatestID()}&type_list=64`},notifyCount:null},{name:"直播",component:"live-activity",moreUrl:"https://link.bilibili.com/p/center/index#/user-center/follow/1",notifyCount:null}],selectedTab:"视频"},components:{"activity-tabs":{props:["items","tab"],template:`\n<ul class="activity-tabs">\n<li v-for="item of items" class="activity-tab" :data-count="item.notifyCount" :class="{selected: item.name === tab}" @click="changeTab(item)">\n<div class="tab-name">{{item.name}}</div>\n</li>\n<a class="view-all" target="_blank" href="${i.oldTweets?"https://www.bilibili.com/account/dynamic":"https://t.bilibili.com/"}">\n 全部动态\n<i class="custom-navbar-iconfont-new-home custom-navbar-icon-activity"></i>\n</a>\n</ul>\n`,methods:{changeTab(i){if(this.tab===i.name){window.open(i.moreUrl,"_blank")}this.$emit("update:tab",i.name)}}},"video-activity":Object.assign($({dataObject:{leftCards:[],rightCards:[]},apiUrl:`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=${o.mid}&type_list=8`,name:"视频",template:`\n<div class="video-activity" :class="{center: loading || (leftCards.length + rightCards.length) === 0}">\n<activity-loading :loading="loading"></activity-loading>\n<activity-empty v-if="!loading && leftCards.length + rightCards.length === 0"></activity-empty>\n<div v-if="!loading" class="video-activity-column">\n<video-card v-for="card of leftCards" :key="card.id" :card="card" :watchlaterInit="card.watchlater"></video-card>\n</div>\n<div v-if="!loading" class="video-activity-column">\n<video-card v-for="card of rightCards" :key="card.id" :card="card" :watchlaterInit="card.watchlater"></video-card>\n</div>\n</div>\n`,handleJson:async function(i){const t=i.data.cards.map(i=>{const t=JSON.parse(i.card);return{coverUrl:t.pic,title:t.title,timeNumber:t.duration,time:formatDuration(t.duration),description:t.desc,aid:t.aid,videoUrl:`https://www.bilibili.com/av${t.aid}`,faceUrl:i.desc.user_profile.info.face,upName:i.desc.user_profile.info.uname,upUrl:`https://space.bilibili.com/${i.desc.user_profile.info.uid}`,id:i.desc.dynamic_id_str,watchlater:true,get new(){return C.isNewID(this.id)}}});this.leftCards=t.filter((i,t)=>t%2===0);this.rightCards=t.filter((i,t)=>t%2===1);if(this.leftCards.length!==this.rightCards.length){this.leftCards.pop()}C.updateLatestID(t)}}),{components:{"video-card":{props:["card","watchlaterInit"],store:store,data(){return{}},computed:{...Vuex.mapState(["watchlaterList"]),watchlater(){if(this.watchlaterInit!==null){return this.watchlaterList.includes(this.card.aid)}else{return null}}},components:{"dpi-img":()=>t.importAsync("dpi-img.vue")},methods:{...Vuex.mapActions(["toggleWatchlater"])},async mounted(){},template:`\n<a class="video-activity-card" :class="{new: card.new}" target="_blank" :href="card.videoUrl">\n<div class="cover-container">\n<dpi-img class="cover" :size="{width: 172}" :src="card.coverUrl"></dpi-img>\n<div class="time">{{card.time}}</div>\n<div @click.stop.prevent="toggleWatchlater(card.aid)" class="watchlater"><i class="mdi" :class="{'mdi-clock-outline': !watchlater, 'mdi-check-circle': watchlater}"></i>{{watchlater ? '已添加' : '稍后再看'}}</div>\n</div>\n<h1 class="title" :title="card.title">{{card.title}}</h1>\n<a class="up" target="_blank" :href="card.upUrl" :title="card.upName">\n<dpi-img class="face" :size="24" :src="card.faceUrl"></dpi-img>\n<span class="name">{{card.upName}}</span>\n</a>\n</a>\n`}}}),"bangumi-activity":$({dataObject:{cards:[]},apiUrl:`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=${o.mid}&type_list=512`,name:"番剧",template:`\n<div class="bangumi-activity" :class="{center: loading || cards.length === 0}">\n<activity-loading :loading="loading"></activity-loading>\n<activity-empty v-if="!loading && cards.length === 0"></activity-empty>\n<a v-if="!loading" class="bangumi-card" :class="{new: card.new}" v-for="card of cards" :key="card.id" target="_blank" :href="card.url">\n<dpi-img class="ep-cover" :size="{width: 100}" :src="card.epCoverUrl"></dpi-img>\n<h1 class="ep-title" :title="card.epTitle">{{card.epTitle}}</h1>\n<div class="up" :title="card.title">\n<dpi-img class="cover" :size="24" :src="card.coverUrl"></dpi-img>\n<div class="title">{{card.title}}</div>\n</div>\n</a>\n</div>\n`,handleJson:async function(i){this.cards=i.data.cards.map(i=>{const t=JSON.parse(i.card);return{title:t.apiSeasonInfo.title,coverUrl:t.apiSeasonInfo.cover,epCoverUrl:t.cover,epTitle:t.new_desc,url:t.url,id:i.desc.dynamic_id_str,get new(){return C.isNewID(this.id)}}});C.updateLatestID(this.cards)}}),"column-activity":$({dataObject:{cards:[]},apiUrl:`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=${o.mid}&type_list=64`,name:"专栏",template:`\n<div class="column-activity" :class="{center: loading || cards.length === 0}">\n<activity-loading :loading="loading"></activity-loading>\n<activity-empty v-if="!loading && cards.length === 0"></activity-empty>\n<a v-if="!loading" class="column-card" :class="{new: card.new}" v-for="card of cards" :key="card.id" target="_blank" :href="card.url">\n<div class="covers">\n<dpi-img class="cover" v-for="cover of card.covers" :key="cover" :size="{height: 120}" :src="cover"></dpi-img>\n<a class="up" target="_blank" :href="card.upUrl">\n<dpi-img class="face" :size="24" :src="card.faceUrl"></dpi-img>\n<div class="name">{{card.upName}}</div>\n</a>\n</div>\n<h1 class="title" :title="card.title">{{card.title}}</h1>\n<div class="description" :title="card.description">{{card.description}}</div>\n</a>\n</div>\n`,handleJson:async function(i){this.cards=i.data.cards.map(i=>{const t=JSON.parse(i.card);return{covers:t.image_urls,originalCovers:t.origin_image_urls,upName:t.author.name,faceUrl:t.author.face,upUrl:`https://space.bilibili.com/${t.author.mid}`,title:t.title,description:t.summary,url:`https://www.bilibili.com/read/cv${t.id}`,id:i.desc.dynamic_id_str,get new(){return C.isNewID(this.id)}}});C.updateLatestID(this.cards)}}),"live-activity":$({dataObject:{cards:[]},apiUrl:`https://api.live.bilibili.com/relation/v1/feed/feed_list?page=1&pagesize=24`,name:"直播",template:`\n<div class="live-activity" :class="{center: loading || cards.length === 0}">\n<activity-loading :loading="loading"></activity-loading>\n<activity-empty v-if="!loading && cards.length === 0"></activity-empty>\n<a v-if="!loading" class="live-card" v-for="card of cards" :key="card.id" target="_blank" :href="card.url">\n<dpi-img class="face" :size="{width: 48}" :src="card.faceUrl"></dpi-img>\n<h1 class="live-title" :title="card.title">{{card.title}}</h1>\n<div class="name" :title="card.name">{{card.name}}</div>\n</a>\n</div>\n`,handleJson:async function(i){this.cards=i.data.list.map(i=>{return{faceUrl:i.face,title:i.title,name:i.uname,id:i.roomid,url:i.link}})}})},computed:{content(){return this.tabs.find(i=>i.name===this.selectedTab).component},viewMoreUrl(){return this.tabs.find(i=>i.name===this.selectedTab).moreUrl}},mounted(){x=(async()=>{for(const i of this.tabs){if(i.notifyApi){const t=await Ajax.getJsonWithCredentials(i.notifyApi);if(t.code!==0||!t.data.update_num||this.selectedTab===i.name){continue}i.notifyCount=t.data.update_num}}});x()},destroyed(){x=(()=>{})},watch:{selectedTab(i){this.tabs.find(t=>t.name===i).notifyCount=null}}})}get name(){return"activities"}}class L extends m{constructor({mainUrl:i,name:t,apiUrl:e,listName:a,listMap:s}){super();this.href=i;this.listName=a;this.html=t;this.noPadding=true;this.requestedPopup=false;this.popupHtml=`\n<ol class="video-list ${a}">\n<li class="loading">加载中...</li>\n</ol>\n`;this.initialPopup=(async()=>{if(!s){return}const n=await SpinQuery.select(`.video-list.${a}`);if(n===null){return}const l=await Ajax.getJsonWithCredentials(e);let c="";if(l.code!==0){logError(`加载${t}信息失败. 错误码: ${l.code} ${l.message}`)}else{c=s(l).join("")}n.insertAdjacentHTML("beforeend",c+`\n<li class="more"><a target="_blank" href="${i}">查看更多</a></li>\n`);n.classList.add("loaded")})}get name(){return this.listName+"List"}}class I extends L{constructor(){super({name:"收藏",mainUrl:`https://space.bilibili.com/${o.mid}/favlist`,apiUrl:"https://api.bilibili.com/medialist/gateway/coll/resource/recent",listName:"favorites",listMap:i=>{if(!i.data||i.data.length===0){return[`<li class="loading empty">空空如也哦 = ̄ω ̄=</li>`]}return i.data.map(i=>{return`\n<li>\n<a target="_blank" href="https://www.bilibili.com/video/av${i.id}">${i.title}</a>\n</li>`})}});this.active=document.URL.replace(/\?.*$/,"")===`https://space.bilibili.com/${o.mid}/favlist`}}class A extends L{constructor(){super({name:"历史",mainUrl:"https://www.bilibili.com/account/history",apiUrl:"https://api.bilibili.com/x/v2/history?pn=1&ps=6",listName:"history",listMap:i=>{if(!i.data||i.data.length===0){return[`<li class="loading empty">空空如也哦 = ̄ω ̄=</li>`]}return i.data.map(i=>{let t=[];let e="";const a=i.page?i.page.page:1;let s=i.progress>=0?i.progress/i.duration:1;if(isNaN(s)){s=0}if(a!==1){t.push(`p=${a}`);e+=`看到第${a}`}if(i.progress>0&&i.progress<i.duration){t.push(`t=${i.progress}`);e+=` ${Math.floor(s*100)}%`}else if(i.progress===0){e+=` 刚开始看`}else{e+=" 100%"}return`\n<li class="history-item">\n<a target="_blank" href="https://www.bilibili.com/video/av${i.aid}?${t.join("&")}">\n<span class="title">${i.title}</span>\n<span class="description">${e}</span>\n<div class="progress background">\n<div class="progress foreground" style="--progress: ${s*100}%"></div>\n</div>\n</a>\n</li>`})}});this.active=document.URL.replace(/\?.*$/,"")==="https://www.bilibili.com/account/history"}}class S extends m{constructor(){super();this.noPadding=true;this.href=`https://space.bilibili.com/${o.mid}/bangumi`;this.html="订阅";this.active=[`https://space.bilibili.com/${o.mid}/bangumi`,`https://space.bilibili.com/${o.mid}/cinema`,`https://space.bilibili.com/${o.mid}/subs`].includes(document.URL.replace(/\?.*$/,""));this.popupHtml=`\n<div class="subscriptions">\n<ul class="subscriptions-tabs">\n<li class="tab" :class="{selected: bangumi}" @click="bangumi = true">追番</li>\n<li class="tab" :class="{selected: !bangumi}" @click="bangumi = false">追剧</li>\n<div class="tab-placeholder"></div>\n<a class="view-all" target="_blank" :href="'https://space.bilibili.com/${o.mid}/' + (bangumi ? 'bangumi' : 'cinema')">\n 查看更多\n<i class="mdi mdi-dots-horizontal"></i>\n</a>\n</ul>\n<div class="content">\n<transition name="subscriptions-content" mode="out-in">\n<bangumi-subscriptions v-if="bangumi" type="bangumi" :key="'bangumi'"></bangumi-subscriptions>\n<bangumi-subscriptions v-else type="cinema" :key="'cinema'"></bangumi-subscriptions>\n</transition>\n</div>\n</div>`;this.initialPopup=(()=>{this.init()})}async init(){new Vue({el:await SpinQuery.select(".custom-navbar .subscriptions"),data:{bangumi:true},components:{"bangumi-subscriptions":{props:["type"],components:{"dpi-img":()=>t.importAsync("dpi-img.vue")},template:`\n<div class="bangumi-subscriptions" :class="{center: loading || !loading && cards.length === 0}">\n<div v-if="loading" class="loading">\n<i class="mdi mdi-18px mdi-loading mdi-spin"></i>\n 加载中...\n</div>\n<div v-if="!loading && cards.length === 0" class="empty">空空如也哦 = ̄ω ̄=</div>\n<a v-if="!loading" v-for="card of cards" :key="card.id" :href="card.playUrl" target="_blank" class="bangumi-subscriptions-card">\n<dpi-img class="cover" :src="card.coverUrl" :size="{height: 64}"></dpi-img>\n<div class="card-info">\n<h1 class="title" :title="card.title">{{card.title}}</h1>\n<div class="progress-row">\n<div v-if="card.progress" class="progress" :title="card.progress + ' | ' + card.latest">{{card.progress}} | {{card.latest}}</div>\n<div v-else class="progress" :title="card.latest">{{card.latest}}</div>\n<a class="info" :href="card.mediaUrl" target="_blank" title="详细信息">\n<i class="mdi mdi-information-outline"></i>\n</a>\n</div>\n</div>\n</a>\n</div>\n`,data(){return{loading:true,cards:[]}},async mounted(){try{const i=await Ajax.getJsonWithCredentials(`https://api.bilibili.com/x/space/bangumi/follow/list?type=${this.type!=="bangumi"?"2":"1"}&pn=1&ps=16&vmid=${o.mid}`);if(i.code!==0){logError(`加载订阅信息失败: ${i.message}`);return}this.cards=i.data.list.map(i=>{return{title:i.title,coverUrl:i.square_cover.replace("http:","https:"),latest:i.new_ep.index_show,progress:i.progress,id:i.season_id,playUrl:`https://www.bilibili.com/bangumi/play/ss${i.season_id}`,mediaUrl:`https://www.bilibili.com/bangumi/media/md${i.media_id}`}})}finally{this.loading=false}}}}})}get name(){return"bangumi"}}(async()=>{const e=await t.importAsync("customNavbarHtml");o={mid:getUID(),isLogin:Boolean(getUID())};d=C.getLatestID();document.body.insertAdjacentHTML("beforeend",e);addSettingsListener("useDarkStyle",n,true);["Fill","Shadow","Compact","Blur"].forEach(i=>{addSettingsListener("customNavbar"+i,t=>s(i.toLowerCase(),t,document.querySelector(".custom-navbar")),true)});SpinQuery.condition(()=>dq("#banner_link,.international-header .bili-banner"),i=>i===null?null:i.style.backgroundImage,t=>{Observer.attributes(t,()=>{const e=document.querySelectorAll(".custom-navbar .blur-layer");e.forEach(i=>{i.style.backgroundImage=t.style.backgroundImage;i.setAttribute("data-image",t.style.backgroundImage)});addSettingsListener("customNavbarTransparent",t=>{if(!i.hideBanner){dq(".custom-navbar").classList.toggle("transparent",t)}},true);addSettingsListener("hideBanner",t=>{if(i.customNavbarTransparent){dq(".custom-navbar").classList.toggle("transparent",!t)}})})});const a=[new p(1),new u,new g,new b("排行","https://www.bilibili.com/ranking","ranking"),new b("相簿","https://h.bilibili.com","drawing"),new b("音频","https://www.bilibili.com/audio/home/","music"),new y("游戏中心","https://game.bilibili.com/",{src:`https://www.bilibili.com/page-proxy/game-nav.html`,width:`680px`,height:`260px`,lazy:true,iframeName:"games"}),new y("直播","https://live.bilibili.com",{src:`https://live.bilibili.com/blackboard/dropdown-menu.html`,width:`528px`,height:`266px`,lazy:true,iframeName:"lives"}),new b("会员购","https://show.bilibili.com","shop"),new b("漫画","https://manga.bilibili.com","manga"),new p(2),new f,new w];if(o.isLogin){const{WatchlaterList:i}=await t.importAsync("custom-navbar-watchlater-list");a.push(new v,new S,new C,new i,new I,new A)}a.push(new h,new p(3));new Vue({el:".custom-navbar",data:{components:a},methods:{requestPopup(i){if(!i.requestedPopup&&!i.disabled&&!i.active){this.$set(i,`requestedPopup`,true);i.initialPopup&&i.initialPopup()}i.onPopup&&i.onPopup()}},mounted(){document.body.classList.remove("custom-navbar-loading")}})})();return a}})();