mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
1 line
25 KiB
JavaScript
1 line
25 KiB
JavaScript
(()=>{return(i,t)=>{if(isIframe()){return}const e={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:()=>true,success:async()=>{await SpinQuery.select(".custom-navbar-settings");document.querySelector("#custom-navbar-settings").addEventListener("click",()=>{document.querySelector(".custom-navbar-settings").classList.toggle("show");document.querySelector(".gui-settings-mask").click()});new Vue({el:".custom-navbar-settings",data:{},methods:{close(){document.querySelector(".custom-navbar-settings").classList.remove("show")}}})}},unload:()=>{const i=document.querySelector(".custom-navbar");if(i!==null){i.style.display="none"}t.removeStyle("customNavbarStyle")},reload:()=>{const i=document.querySelector(".custom-navbar");if(i!==null){i.style.display="flex"}t.applyImportantStyle("customNavbarStyle")}};const s=(i,t,e)=>{e.classList[t?"add":"remove"](i)};const n=i=>{document.querySelector(".custom-navbar").classList[i?"add":"remove"]("dark");document.querySelector(".custom-navbar-settings").classList[i?"add":"remove"]("dark")};addSettingsListener("allNavbarFill",i=>s("all-navbar-fill",i,document.body));s("all-navbar-fill",i.allNavbarFill,document.body);const a=["/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"];const l=["/t.bilibili.com/lottery/h5/index/#/result"];if(!a.some(i=>document.URL.includes(i))||l.some(i=>document.URL.includes(i))){return e}let o={};let c={};class r{constructor(){this.html=``;this.popupHtml=``;this.flex=`0 0 auto`;this.disabled=false;this.requestedPopup=false;this.onPopup=null;this.href=null;this.notifyCount=0;this.touch=i.touchNavBar}get name(){return"undefined"}get order(){return i.customNavbarOrder[this.name]}get hidden(){return i.customNavbarHidden.includes(this.name)}}class m extends r{constructor(){super();this.flex="1 0 auto";this.disabled=true}get name(){return"blank"}}class b extends r{constructor(){super();this.href=`https://www.bilibili.com/`;this.html=`<i class="custom-navbar-iconfont custom-navbar-icon-logo"></i>`;this.touch=false}get name(){return"logo"}}class p extends r{constructor(i,t,e){super();this.linkName=e;this.html=i;this.href=t;this.touch=false}get name(){return this.linkName+"Link"}}class u extends r{constructor(){super();this.href="https://member.bilibili.com/v2#/upload/video/frame";this.html=`\n <svg style="width:22px;height:22px" viewBox="0 0 24 24">\n <path d="M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z" />\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 h extends r{constructor(){super();this.href="https://message.bilibili.com/";this.html="消息";this.popupHtml=`\n <ul id="message-list">\n <li><a data-name="reply_me" target="_blank" href="https://message.bilibili.com/#/reply">回复我的</a></li>\n <li><a data-name="at_me" target="_blank" href="https://message.bilibili.com/#/at">@我的</a></li>\n <li><a data-name="praise_me" target="_blank" href="https://message.bilibili.com/#/love">收到的赞</a></li>\n <li><a data-name="notify_me" target="_blank" href="https://message.bilibili.com/#/system">系统通知</a></li>\n </ul>\n `;this.requestedPopup=true;this.init()}get name(){return"messages"}async init(){const i=await Ajax.getJsonWithCredentials("https://message.bilibili.com/api/notify/query.notify.count.do");const t=await SpinQuery.select("#message-list");const e=[...t.querySelectorAll("a[data-name]")];const s=e.map(i=>i.getAttribute("data-name"));if(i.code!==0){return}const n=await SpinQuery.select(`.custom-navbar li[data-name='${this.name}'] .notify-count`);let a=s.reduce((t,e)=>t+i.data[e],0);if(a===0){return}n.innerHTML=a;s.forEach((t,s)=>{const n=i.data[t];if(n>0){e[s].setAttribute("data-count",n)}else{e[s].removeAttribute("data-count")}});e.forEach(i=>{i.addEventListener("click",()=>{const t=i.getAttribute("data-count");i.removeAttribute("data-count");a-=t;n.innerHTML=a||""})})}}class w extends r{constructor(){super();this.html=`主站`;this.requestedPopup=true;this.popupHtml=`\n <ul id="custom-navbar-home-popup">\n <li class="category-item" v-for="item of info" v-bind:class="{ main: item[1].count }">\n <a v-bind:href="item[1].link">\n <svg aria-hidden="true">\n <use v-bind:href="'#header-icon-' + item[1].icon" v-bind: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)" v-bind:href="region[1]">\n {{region[0]}}\n </a>\n </div>\n </li>\n </ul>\n `;this.getOnlineInfo().then(i=>{new Vue({el:"#custom-navbar-home-popup",data:{info:Object.entries(i)}})})}get name(){return"category"}async getOnlineInfo(){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`}}}}class d extends r{constructor(){super();this.href="https://space.bilibili.com";this.html=`\n <div class="user-face-container">\n <img src='data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"></svg>' class="user-face"></img>\n <img src='data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"></svg>' 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 <div class="row">\n <a target="_blank" title="等级" href="https://account.bilibili.com/site/record?type=exp" class="level">LV<strong>{{level_info.current_level}}</strong></a>\n <a target="_blank" href="https://account.bilibili.com/account/big" class="type">{{userType}}</a>\n <div class="level-progress">\n <div class="level-progress-thumb" v-bind:style="levelProgressStyle"></div>\n </div>\n <span class="level-progress-label">{{level_info.current_exp}} / {{level_info.next_exp}}</span>\n </div>\n <div class="row">\n <div class="coins-container">\n <a target="_blank" href="https://account.bilibili.com/site/coin" title="硬币" class="coins">{{money}}</a>\n <a target="_blank" href="https://pay.bilibili.com/bb_balance.html" title="B币" class="b-coins">{{wallet.bcoin_balance}}</a>\n </div>\n <div class="verifications">\n <a target="_blank" v-bind:class="{verified: email_verified }" title="邮箱验证" href="https://passport.bilibili.com/account/security#/bindmail">\n <i class="mdi mdi-email"></i>\n </a>\n <a target="_blank" v-bind:class="{verified: mobile_verified }" title="手机验证" href="https://passport.bilibili.com/account/security#/bindphone">\n <i class="mdi mdi-cellphone-android"></i>\n </a>\n </div>\n </div>\n <div class="row operations">\n <a target="_blank" href="https://account.bilibili.com/account/home">\n <i class="mdi mdi-account"></i>个人中心\n </a>\n <a target="_blank" href="https://member.bilibili.com/v2#/upload-manager/article">\n <i class="mdi mdi-square-edit-outline"></i>投稿管理\n </a>\n </div>\n <div class="row operations">\n <a target="_blank" href="https://pay.bilibili.com/">\n <i class="mdi mdi-wallet"></i>B币钱包\n </a>\n <a target="_blank" href="https://link.bilibili.com/p/center/index">\n <i class="mdi mdi-video-input-antenna"></i>直播中心\n </a>\n </div>\n <div class="row operations">\n <a target="_blank" href="https://show.bilibili.com/orderlist">\n <i class="mdi mdi-ticket"></i>订单中心\n </a>\n <a href="https://account.bilibili.com/login?act=exit">\n <i class="mdi mdi-logout"></i>退出登录\n </a>\n </div>\n </div>\n <div v-else class="not-logged-in">\n <a href="https://passport.bilibili.com/login" class="login">登录</a>\n <a href="https://passport.bilibili.com/register/phone.html" class="sign-up">注册</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");new Vue({el:i,data:{...o},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.next_exp-this.level_info.current_exp)/(this.level_info.next_exp-this.level_info.current_min);return{transform:`scaleX(${i})`}}}});const t=await SpinQuery.select(".custom-navbar .user-face-container .user-face");if(o.isLogin){const i=o.face.replace("http","https");const e=68;const s=[1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4];t.setAttribute("srcset",s.map(t=>{return`${i}@${parseInt(e*t)}w_${parseInt(e*t)}h.jpg ${t}x`}).join(","));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 e=116;i.setAttribute("srcset",s.reduce((i,s)=>{return i+`, ${t}@${parseInt(e*s)}w_${parseInt(e*s)}h.png ${s}x`},""))}}else{t.setAttribute("src","https://static.hdslb.com/images/akari.jpg")}}}class v extends r{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="搜索">\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 `;this.init()}async init(){const t=await SpinQuery.select("#custom-navbar-search");const e=t.querySelector("input[name='keyword']");t.addEventListener("submit",s=>{if(e.value===""){if(!i.hideTopSearch){t.querySelector(".recommended-target").click()}s.preventDefault();return false}return true});if(!i.hideTopSearch){const i=await Ajax.getJson("https://api.bilibili.com/x/web-interface/search/default");if(i.code===0){e.setAttribute("placeholder",i.data.show_name);if(i.data.name.startsWith("av")){t.querySelector(".recommended-target").setAttribute("href",`https://www.bilibili.com/${i.data.name}`)}else{t.querySelector(".recommended-target").setAttribute("href",`https://search.bilibili.com/all?keyword=${i.data.name}`)}}else{console.error("[自定义顶栏] 获取搜索推荐词失败")}}}get name(){return"search"}}class g extends r{constructor(i,t,{src:e,width:s,height:n,lazy:a,iframeName:l}){super();this.iframeName=l;this.html=i;this.href=t;this.popupHtml=`\n <iframe src="${e}" frameborder="0" width="${s}" height="${n}"></iframe>\n `;this.noPadding=true;this.requestedPopup=a?false:true;this.touch=false;this.transparent=true}get name(){return this.iframeName+"Iframe"}}class f extends g{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!==0){i.innerHTML=e;this.onPopup=(()=>{i.innerHTML=""})}}}class y extends f{constructor(){super("动态","https://t.bilibili.com/",{src:`https://t.bilibili.com/pages/nav/index`,width:`380px`,height:`422px`,lazy:true})}getApiUrl(){const i=document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)bp_t_offset_${o.mid}\\s*\\=\\s*([^;]*).*$)|^.*$`),"$1");return`https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_num?rsp_type=1&uid=${o.mid}&update_num_dy_id=${i}&type_list=8,512,64`}getCount(i){return i.data.update_num}get name(){return"activities"}}class k extends r{constructor({mainUrl:i,name:t,apiUrl:e,listName:s,listMap:n}){super();this.href=i;this.listName=s;this.html=t;this.requestedPopup=false;this.popupHtml=`\n <ol class="video-list ${s}">\n <li class="loading">加载中...</li>\n </ol>\n `;this.onPopup=(async()=>{if(!n){return}const a=await SpinQuery.select(`.video-list.${s}`);if(a===null){return}const l=await Ajax.getJsonWithCredentials(e);if(l.code!==0){logError(`加载${t}信息失败. 错误码: ${l.code} ${l.message}`);return}const o=n(l).join("");a.insertAdjacentHTML("beforeend",o+`\n <li class="more"><a target="_blank" href="${i}">查看更多</a></li>\n `);a.classList.add("loaded")})}get name(){return this.listName+"List"}}class _ extends k{constructor(){super({name:"稍后再看",mainUrl:"https://www.bilibili.com/watchlater/#/list",apiUrl:"https://api.bilibili.com/x/v2/history/toview/web",listName:"watchlater",listMap:t=>{return t.data.list.slice(0,6).map(t=>{const e=t.pages.map(i=>i.cid);const s=t.cid===0?1:e.indexOf(t.cid)+1;const n=i.watchLaterRedirect?`https://www.bilibili.com/video/av${t.aid}?p=${s}`:`https://www.bilibili.com/watchlater/#/av${t.aid}/p${s}`;return`<li>\n <a target="_blank" href="${n}">${t.title}</a>\n </li>`})}})}}class x extends k{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=>{return i.data.map(i=>{return`<li>\n <a target="_blank" href="https://www.bilibili.com/video/av${i.id}">${i.title}</a>\n </li>`})}})}}class $ extends k{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=>{return i.data.map(i=>{let t=[];let e="";const s=i.page.page;const n=i.progress>=0?i.progress/i.duration:1;if(s!==1){t.push(`p=${s}`);e+=`看到第${s}话`}if(i.progress>0&&i.progress<i.duration){t.push(`t=${i.progress}`);e+=` ${Math.floor(n*100)}%`}else if(i.progress===0){e+=` 刚开始看`}else{e+=" 100%"}return`<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" style="transform: scaleX(${n})"></div>\n </a>\n </li>`})}})}}(async()=>{const e=await t.importAsync("customNavbarHtml");const a=await Ajax.getJsonWithCredentials("https://api.bilibili.com/x/web-interface/nav");o=a.data;document.body.insertAdjacentHTML("beforeend",e);addSettingsListener("useDarkStyle",n);n(i.useDarkStyle);["Fill","Shadow","Compact","Blur"].forEach(t=>{addSettingsListener("customNavbar"+t,i=>s(t.toLowerCase(),i,document.querySelector(".custom-navbar")));s(t.toLowerCase(),i["customNavbar"+t],document.querySelector(".custom-navbar"))});SpinQuery.condition(()=>document.getElementById("banner_link"),i=>i===null?null:i.style.backgroundImage,i=>{Observer.attributes(i,()=>{const t=document.querySelectorAll(".custom-navbar .blur-layer");t.forEach(t=>{t.style.backgroundImage=i.style.backgroundImage;t.setAttribute("data-image",i.style.backgroundImage)})})});const l=[new b,new w,new p("排行","https://www.bilibili.com/ranking","ranking"),new p("画友","https://h.bilibili.com","drawing"),new p("音频","https://www.bilibili.com/audio/home/?type=10","music"),new g("游戏中心","https://game.bilibili.com/",{src:`https://www.bilibili.com/page-proxy/game-nav.html`,width:`680px`,height:`260px`,lazy:true,iframeName:"games"}),new g("直播","https://live.bilibili.com",{src:`https://live.bilibili.com/blackboard/dropdown-menu.html`,width:`528px`,height:`266px`,lazy:true,iframeName:"lives"}),new p("会员购","https://show.bilibili.com/platform/home.html?msource=pc_web","shop"),new p("漫画","https://manga.bilibili.com","manga"),new m,new v,new d];if(o.isLogin){l.push(new h,new y,new _,new x,new $)}l.push(new u);new Vue({el:".custom-navbar",data:{components:l},methods:{requestPopup(i){if(!i.requestedPopup){this.$set(i,`requestedPopup`,true);i.onPopup&&i.onPopup()}}}})})();return e}})(); |