Add pattern block

This commit is contained in:
the1812 2019-10-16 23:41:25 +08:00
parent 462ed90351
commit 0245a1bfa4
10 changed files with 116 additions and 30 deletions

View File

@ -35,7 +35,7 @@ declare global {
}
type RunAtOptions = "document-start" | "document-end" | "document-idle" | "document-body" | "context-menu";
type DanmakuOption = '无' | 'XML' | 'ASS'
type Pattern = string | RegExp
type Pattern = string
interface RpcOption {
secretKey: string
baseDir: string

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name Bilibili Evolved (Offline)
// @version 457.21
// @version 457.33
// @description Bilibili Evolved 的离线版, 所有功能都已内置于脚本中.
// @author Grant Howard, Coulomb-G
// @copyright 2019, Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)
@ -1087,9 +1087,9 @@ offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/m
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.js"] = (()=>{return(e,p)=>{p.applyStyle("expandDescriptionStyle")}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/favorites-redirect.min.js"] = (()=>{return(t,e)=>{function i(){const t=document.querySelectorAll("li[data-aid]>a");t.forEach(t=>{const e=t.getAttribute("href");if(e===null||!e.includes("medialist")){return}const i=t.parentElement.getAttribute("data-aid");t.setAttribute("href",`https://www.bilibili.com/video/av${i}`)})}(async()=>{const t=await SpinQuery.select("#app>.s-space");if(t!==null){Observer.childListSubtree("#app>.s-space",i)}})()}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-apis.min.js"] = (()=>{return(e,t)=>{const r={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧"},share:{id:2048,name:"分享"}};class n extends EventTarget{constructor(){super(...arguments);this.cards=[]}addEventListener(e,t,r){super.addEventListener(e,t,r)}removeEventListener(e,t,r){super.removeEventListener(e,t,r)}addCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){if(e.querySelector(".skeleton")!==null){const t=Observer.childList(e,()=>{if(e.querySelector(".skeleton")===null){t.forEach(e=>e.stop());this.addCard(e)}})}else{const t=this.parseCard(e);this.cards.push(t);const r=new CustomEvent("addCard",{detail:t});this.dispatchEvent(r)}}}removeCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){const t=this.parseCard(e).id;const r=this.cards.findIndex(e=>e.id===t);const n=this.cards[r];this.cards.splice(r,1);const s=new CustomEvent("removeCard",{detail:n});this.dispatchEvent(s)}}parseCard(e){const t=t=>{if(e.querySelector(t)===null){return""}return e.querySelector(t).innerText};const n=e=>{const r=parseInt(t(e));if(isNaN(r)){return 0}return r};const s=(()=>{if(e.querySelector(".repost")){return r.repost}if(e.querySelector(".imagesbox")){return r.textWithImages}if(e.querySelector(".video-container")){return r.video}if(e.querySelector(".bangumi-container")){return r.bangumi}if(e.querySelector(".article-container")){return r.column}if(e.querySelector(".music-container")){return r.audio}if(e.querySelector(".h5share-container")){return r.share}if(e.querySelector(".vc-ctnr")){return r.miniVideo}return r.text})();const i={id:e.getAttribute("data-did"),username:t(".main-content .user-name"),text:t(".card-content .text.description"),reposts:n(".button-bar .single-button:nth-child(1) .text-offset"),comments:n(".button-bar .single-button:nth-child(2) .text-offset"),likes:n(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:s};e.setAttribute("data-type",s.id.toString());return i}async startWatching(){const e=await SpinQuery.select(".card-list .content");if(!e){return false}const t=[...e.querySelectorAll(".content>.card")];t.forEach(e=>this.addCard(e));Observer.childList(e,e=>{e.forEach(e=>{e.addedNodes.forEach(e=>this.addCard(e));e.removedNodes.forEach(e=>this.removeCard(e))})});return true}}const s=new n;return{export:{feedsCardsManager:s,feedsCardTypes:r}}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const d=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div></div>`;t.applyStyleFromText(`body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:12px;margin:0 0 12px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}`,"feeds-filter-card-style");return{export:Object.assign({template:d},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e instanceof RegExp){return e.test(t.text)}return t.text.includes(e)})){t.element.style.display="none"}else{t.element.style.display="block"}}},data(){return{allTypes:[]}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:d}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!")}this.allTypes=Object.entries(d);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)})}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const r=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div><h2>关键词</h2><div class=filter-patterns><div class=pattern v-for="p of patterns":key=p>{{p}}<icon title=删除 type=mdi icon=trash-can-outline @click.native=deletePattern(p)></icon></div></div><div class=add-pattern><input placeholder="支持正则表达式 /^xxx$/"type=text v-model=newPattern @keydown.enter=addPattern(newPattern)><icon title=添加 type=mdi icon=plus @click.native=addPattern(newPattern)></icon></div></div>`;t.applyStyleFromText(`body .feed-card .card.pattern-block,body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:13px;margin:0 0 8px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns:not(:empty){margin-bottom:8px}.feeds-filter .filter-patterns .pattern{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:4px;background-color:#0001;font-size:12px}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:18px;cursor:pointer}.feeds-filter .add-pattern{display:flex;align-items:center}.feeds-filter .add-pattern input{color:inherit;background-color:transparent;font-size:12px;border:1px solid #8884;border-radius:4px;outline:0!important;padding:4px;flex:1 0 0;width:0}.feeds-filter .add-pattern input:focus{border-color:var(--theme-color)}.feeds-filter .add-pattern .be-icon{font-size:18px;cursor:pointer;margin-left:8px}`,"feeds-filter-card-style");return{export:Object.assign({template:r},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t.text)}return t.text.includes(e)})){t.element.classList.add("pattern-block")}else{t.element.classList.remove("pattern-block")}},deletePattern(t){const r=e.feedsFilterPatterns.indexOf(t);if(r!==-1){this.patterns.splice(r,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(this.feedsCardsManager!==null){this.feedsCardsManager.cards.forEach(e=>this.updateCard(e))}}},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",feedsCardsManager:null}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:r}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!");return}this.allTypes=Object.entries(r);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=e}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter.min.js"] = (()=>{return(e,r)=>{(async()=>{if(document.URL.replace(location.search,"")!=="https://t.bilibili.com/"){return}const e=await SpinQuery.select(".home-container .left-panel");if(e===null){return}e.insertAdjacentHTML("beforeend",html`<feeds-filter-card></feeds-filter-card>`);new Vue({el:"feeds-filter-card",components:{FeedsFilterCard:()=>r.importAsync("feeds-filter-card.vue")}})})()}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:not(.disabled):hover{background-color:#0002}.filter-type-switch label.disabled{background-color:var(--theme-color-10)}.filter-type-switch label.disabled:hover{background-color:var(--theme-color-20)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:hover{background-color:#0002}.filter-type-switch label.disabled{border-color:var(--theme-color)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fix-fullscreen.min.js"] = (()=>{return(e,n)=>{unsafeWindow.Element.ALLOW_KEYBOARD_INPUT={};const t=unsafeWindow.Element.prototype.requestFullscreen;unsafeWindow.Element.prototype.requestFullscreen=function(){t.call(this)}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fold-comment.min.css"] = `.panel-area .bb-comment .fold-comment{position:-webkit-sticky;position:sticky;bottom:0;height:40px;width:calc(100% + 48px);font-size:14px;transform:translateX(-24px);display:flex;align-items:center;justify-content:center;background-color:#fff;color:#99a2aa;cursor:pointer;transition:.2s ease-out;z-index:1000;border-radius:4px}.panel-area .bb-comment .fold-comment:hover{color:#000}body.dark .panel-area .bb-comment .fold-comment{background-color:#444;color:#eee}body.dark .panel-area .bb-comment .fold-comment:hover{color:var(--theme-color)}`;
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fold-comment.min.js"] = (()=>{return(e,t)=>{if(document.URL.replace(window.location.search,"")==="https://t.bilibili.com/"){(async()=>{t.applyImportantStyle("foldCommentStyle");const e=await SpinQuery.select(".card-list .feed-card>.content");const l=e=>{const t=t=>{const l=document.createElement("div");l.classList.add("fold-comment");l.innerHTML="收起评论";const n=t.querySelector(".bb-comment");if(n===null){console.error("未找到评论区");return}else if(n.querySelector(".fold-comment")!==null){return}else{l.addEventListener("click",()=>{const t=e.querySelector(".button-bar").children[1];if(t!==null){t.click();e.scrollIntoView()}});n.insertAdjacentElement("beforeend",l)}};const l=e.querySelector(".panel-area");if(l===null){console.log(e)}if(l.childElementCount===0){const e=Observer.childList(l,n=>{if(n.length>0){t(l);e.forEach(e=>e.stop())}})}else{t(l)}};Observer.childList(e,()=>e.querySelectorAll("div.card").forEach(l))})()}}})();

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name Bilibili Evolved (Preview Offline)
// @version 457.21
// @version 457.33
// @description Bilibili Evolved 的预览离线版, 可以抢先体验新功能, 并且所有功能都已内置于脚本中.
// @author Grant Howard, Coulomb-G
// @copyright 2019, Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)
@ -1087,9 +1087,9 @@ offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/m
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.js"] = (()=>{return(e,p)=>{p.applyStyle("expandDescriptionStyle")}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/favorites-redirect.min.js"] = (()=>{return(t,e)=>{function i(){const t=document.querySelectorAll("li[data-aid]>a");t.forEach(t=>{const e=t.getAttribute("href");if(e===null||!e.includes("medialist")){return}const i=t.parentElement.getAttribute("data-aid");t.setAttribute("href",`https://www.bilibili.com/video/av${i}`)})}(async()=>{const t=await SpinQuery.select("#app>.s-space");if(t!==null){Observer.childListSubtree("#app>.s-space",i)}})()}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-apis.min.js"] = (()=>{return(e,t)=>{const r={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧"},share:{id:2048,name:"分享"}};class n extends EventTarget{constructor(){super(...arguments);this.cards=[]}addEventListener(e,t,r){super.addEventListener(e,t,r)}removeEventListener(e,t,r){super.removeEventListener(e,t,r)}addCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){if(e.querySelector(".skeleton")!==null){const t=Observer.childList(e,()=>{if(e.querySelector(".skeleton")===null){t.forEach(e=>e.stop());this.addCard(e)}})}else{const t=this.parseCard(e);this.cards.push(t);const r=new CustomEvent("addCard",{detail:t});this.dispatchEvent(r)}}}removeCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){const t=this.parseCard(e).id;const r=this.cards.findIndex(e=>e.id===t);const n=this.cards[r];this.cards.splice(r,1);const s=new CustomEvent("removeCard",{detail:n});this.dispatchEvent(s)}}parseCard(e){const t=t=>{if(e.querySelector(t)===null){return""}return e.querySelector(t).innerText};const n=e=>{const r=parseInt(t(e));if(isNaN(r)){return 0}return r};const s=(()=>{if(e.querySelector(".repost")){return r.repost}if(e.querySelector(".imagesbox")){return r.textWithImages}if(e.querySelector(".video-container")){return r.video}if(e.querySelector(".bangumi-container")){return r.bangumi}if(e.querySelector(".article-container")){return r.column}if(e.querySelector(".music-container")){return r.audio}if(e.querySelector(".h5share-container")){return r.share}if(e.querySelector(".vc-ctnr")){return r.miniVideo}return r.text})();const i={id:e.getAttribute("data-did"),username:t(".main-content .user-name"),text:t(".card-content .text.description"),reposts:n(".button-bar .single-button:nth-child(1) .text-offset"),comments:n(".button-bar .single-button:nth-child(2) .text-offset"),likes:n(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:s};e.setAttribute("data-type",s.id.toString());return i}async startWatching(){const e=await SpinQuery.select(".card-list .content");if(!e){return false}const t=[...e.querySelectorAll(".content>.card")];t.forEach(e=>this.addCard(e));Observer.childList(e,e=>{e.forEach(e=>{e.addedNodes.forEach(e=>this.addCard(e));e.removedNodes.forEach(e=>this.removeCard(e))})});return true}}const s=new n;return{export:{feedsCardsManager:s,feedsCardTypes:r}}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const d=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div></div>`;t.applyStyleFromText(`body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:12px;margin:0 0 12px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}`,"feeds-filter-card-style");return{export:Object.assign({template:d},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e instanceof RegExp){return e.test(t.text)}return t.text.includes(e)})){t.element.style.display="none"}else{t.element.style.display="block"}}},data(){return{allTypes:[]}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:d}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!")}this.allTypes=Object.entries(d);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)})}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const r=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div><h2>关键词</h2><div class=filter-patterns><div class=pattern v-for="p of patterns":key=p>{{p}}<icon title=删除 type=mdi icon=trash-can-outline @click.native=deletePattern(p)></icon></div></div><div class=add-pattern><input placeholder="支持正则表达式 /^xxx$/"type=text v-model=newPattern @keydown.enter=addPattern(newPattern)><icon title=添加 type=mdi icon=plus @click.native=addPattern(newPattern)></icon></div></div>`;t.applyStyleFromText(`body .feed-card .card.pattern-block,body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:13px;margin:0 0 8px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns:not(:empty){margin-bottom:8px}.feeds-filter .filter-patterns .pattern{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:4px;background-color:#0001;font-size:12px}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:18px;cursor:pointer}.feeds-filter .add-pattern{display:flex;align-items:center}.feeds-filter .add-pattern input{color:inherit;background-color:transparent;font-size:12px;border:1px solid #8884;border-radius:4px;outline:0!important;padding:4px;flex:1 0 0;width:0}.feeds-filter .add-pattern input:focus{border-color:var(--theme-color)}.feeds-filter .add-pattern .be-icon{font-size:18px;cursor:pointer;margin-left:8px}`,"feeds-filter-card-style");return{export:Object.assign({template:r},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t.text)}return t.text.includes(e)})){t.element.classList.add("pattern-block")}else{t.element.classList.remove("pattern-block")}},deletePattern(t){const r=e.feedsFilterPatterns.indexOf(t);if(r!==-1){this.patterns.splice(r,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(this.feedsCardsManager!==null){this.feedsCardsManager.cards.forEach(e=>this.updateCard(e))}}},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",feedsCardsManager:null}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:r}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!");return}this.allTypes=Object.entries(r);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=e}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter.min.js"] = (()=>{return(e,r)=>{(async()=>{if(document.URL.replace(location.search,"")!=="https://t.bilibili.com/"){return}const e=await SpinQuery.select(".home-container .left-panel");if(e===null){return}e.insertAdjacentHTML("beforeend",html`<feeds-filter-card></feeds-filter-card>`);new Vue({el:"feeds-filter-card",components:{FeedsFilterCard:()=>r.importAsync("feeds-filter-card.vue")}})})()}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:not(.disabled):hover{background-color:#0002}.filter-type-switch label.disabled{background-color:var(--theme-color-10)}.filter-type-switch label.disabled:hover{background-color:var(--theme-color-20)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:hover{background-color:#0002}.filter-type-switch label.disabled{border-color:var(--theme-color)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fix-fullscreen.min.js"] = (()=>{return(e,n)=>{unsafeWindow.Element.ALLOW_KEYBOARD_INPUT={};const t=unsafeWindow.Element.prototype.requestFullscreen;unsafeWindow.Element.prototype.requestFullscreen=function(){t.call(this)}}})();
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fold-comment.min.css"] = `.panel-area .bb-comment .fold-comment{position:-webkit-sticky;position:sticky;bottom:0;height:40px;width:calc(100% + 48px);font-size:14px;transform:translateX(-24px);display:flex;align-items:center;justify-content:center;background-color:#fff;color:#99a2aa;cursor:pointer;transition:.2s ease-out;z-index:1000;border-radius:4px}.panel-area .bb-comment .fold-comment:hover{color:#000}body.dark .panel-area .bb-comment .fold-comment{background-color:#444;color:#eee}body.dark .panel-area .bb-comment .fold-comment:hover{color:var(--theme-color)}`;
offlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fold-comment.min.js"] = (()=>{return(e,t)=>{if(document.URL.replace(window.location.search,"")==="https://t.bilibili.com/"){(async()=>{t.applyImportantStyle("foldCommentStyle");const e=await SpinQuery.select(".card-list .feed-card>.content");const l=e=>{const t=t=>{const l=document.createElement("div");l.classList.add("fold-comment");l.innerHTML="收起评论";const n=t.querySelector(".bb-comment");if(n===null){console.error("未找到评论区");return}else if(n.querySelector(".fold-comment")!==null){return}else{l.addEventListener("click",()=>{const t=e.querySelector(".button-bar").children[1];if(t!==null){t.click();e.scrollIntoView()}});n.insertAdjacentElement("beforeend",l)}};const l=e.querySelector(".panel-area");if(l===null){console.log(e)}if(l.childElementCount===0){const e=Observer.childList(l,n=>{if(n.length>0){t(l);e.forEach(e=>e.stop())}})}else{t(l)}};Observer.childList(e,()=>e.querySelectorAll("div.card").forEach(l))})()}}})();

View File

@ -1086,9 +1086,9 @@ onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/m
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/expand-description.min.js"] = (()=>{return(e,p)=>{p.applyStyle("expandDescriptionStyle")}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/favorites-redirect.min.js"] = (()=>{return(t,e)=>{function i(){const t=document.querySelectorAll("li[data-aid]>a");t.forEach(t=>{const e=t.getAttribute("href");if(e===null||!e.includes("medialist")){return}const i=t.parentElement.getAttribute("data-aid");t.setAttribute("href",`https://www.bilibili.com/video/av${i}`)})}(async()=>{const t=await SpinQuery.select("#app>.s-space");if(t!==null){Observer.childListSubtree("#app>.s-space",i)}})()}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/feeds-apis.min.js"] = (()=>{return(e,t)=>{const r={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧"},share:{id:2048,name:"分享"}};class n extends EventTarget{constructor(){super(...arguments);this.cards=[]}addEventListener(e,t,r){super.addEventListener(e,t,r)}removeEventListener(e,t,r){super.removeEventListener(e,t,r)}addCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){if(e.querySelector(".skeleton")!==null){const t=Observer.childList(e,()=>{if(e.querySelector(".skeleton")===null){t.forEach(e=>e.stop());this.addCard(e)}})}else{const t=this.parseCard(e);this.cards.push(t);const r=new CustomEvent("addCard",{detail:t});this.dispatchEvent(r)}}}removeCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){const t=this.parseCard(e).id;const r=this.cards.findIndex(e=>e.id===t);const n=this.cards[r];this.cards.splice(r,1);const s=new CustomEvent("removeCard",{detail:n});this.dispatchEvent(s)}}parseCard(e){const t=t=>{if(e.querySelector(t)===null){return""}return e.querySelector(t).innerText};const n=e=>{const r=parseInt(t(e));if(isNaN(r)){return 0}return r};const s=(()=>{if(e.querySelector(".repost")){return r.repost}if(e.querySelector(".imagesbox")){return r.textWithImages}if(e.querySelector(".video-container")){return r.video}if(e.querySelector(".bangumi-container")){return r.bangumi}if(e.querySelector(".article-container")){return r.column}if(e.querySelector(".music-container")){return r.audio}if(e.querySelector(".h5share-container")){return r.share}if(e.querySelector(".vc-ctnr")){return r.miniVideo}return r.text})();const i={id:e.getAttribute("data-did"),username:t(".main-content .user-name"),text:t(".card-content .text.description"),reposts:n(".button-bar .single-button:nth-child(1) .text-offset"),comments:n(".button-bar .single-button:nth-child(2) .text-offset"),likes:n(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:s};e.setAttribute("data-type",s.id.toString());return i}async startWatching(){const e=await SpinQuery.select(".card-list .content");if(!e){return false}const t=[...e.querySelectorAll(".content>.card")];t.forEach(e=>this.addCard(e));Observer.childList(e,e=>{e.forEach(e=>{e.addedNodes.forEach(e=>this.addCard(e));e.removedNodes.forEach(e=>this.removeCard(e))})});return true}}const s=new n;return{export:{feedsCardsManager:s,feedsCardTypes:r}}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const d=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div></div>`;t.applyStyleFromText(`body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:12px;margin:0 0 12px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}`,"feeds-filter-card-style");return{export:Object.assign({template:d},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e instanceof RegExp){return e.test(t.text)}return t.text.includes(e)})){t.element.style.display="none"}else{t.element.style.display="block"}}},data(){return{allTypes:[]}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:d}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!")}this.allTypes=Object.entries(d);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)})}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const r=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div><h2>关键词</h2><div class=filter-patterns><div class=pattern v-for="p of patterns":key=p>{{p}}<icon title=删除 type=mdi icon=trash-can-outline @click.native=deletePattern(p)></icon></div></div><div class=add-pattern><input placeholder="支持正则表达式 /^xxx$/"type=text v-model=newPattern @keydown.enter=addPattern(newPattern)><icon title=添加 type=mdi icon=plus @click.native=addPattern(newPattern)></icon></div></div>`;t.applyStyleFromText(`body .feed-card .card.pattern-block,body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:13px;margin:0 0 8px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns:not(:empty){margin-bottom:8px}.feeds-filter .filter-patterns .pattern{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:4px;background-color:#0001;font-size:12px}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:18px;cursor:pointer}.feeds-filter .add-pattern{display:flex;align-items:center}.feeds-filter .add-pattern input{color:inherit;background-color:transparent;font-size:12px;border:1px solid #8884;border-radius:4px;outline:0!important;padding:4px;flex:1 0 0;width:0}.feeds-filter .add-pattern input:focus{border-color:var(--theme-color)}.feeds-filter .add-pattern .be-icon{font-size:18px;cursor:pointer;margin-left:8px}`,"feeds-filter-card-style");return{export:Object.assign({template:r},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t.text)}return t.text.includes(e)})){t.element.classList.add("pattern-block")}else{t.element.classList.remove("pattern-block")}},deletePattern(t){const r=e.feedsFilterPatterns.indexOf(t);if(r!==-1){this.patterns.splice(r,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(this.feedsCardsManager!==null){this.feedsCardsManager.cards.forEach(e=>this.updateCard(e))}}},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",feedsCardsManager:null}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:r}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!");return}this.allTypes=Object.entries(r);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=e}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/feeds-filter.min.js"] = (()=>{return(e,r)=>{(async()=>{if(document.URL.replace(location.search,"")!=="https://t.bilibili.com/"){return}const e=await SpinQuery.select(".home-container .left-panel");if(e===null){return}e.insertAdjacentHTML("beforeend",html`<feeds-filter-card></feeds-filter-card>`);new Vue({el:"feeds-filter-card",components:{FeedsFilterCard:()=>r.importAsync("feeds-filter-card.vue")}})})()}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:not(.disabled):hover{background-color:#0002}.filter-type-switch label.disabled{background-color:var(--theme-color-10)}.filter-type-switch label.disabled:hover{background-color:var(--theme-color-20)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:hover{background-color:#0002}.filter-type-switch label.disabled{border-color:var(--theme-color)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/fix-fullscreen.min.js"] = (()=>{return(e,n)=>{unsafeWindow.Element.ALLOW_KEYBOARD_INPUT={};const t=unsafeWindow.Element.prototype.requestFullscreen;unsafeWindow.Element.prototype.requestFullscreen=function(){t.call(this)}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/fold-comment.min.css"] = `.panel-area .bb-comment .fold-comment{position:-webkit-sticky;position:sticky;bottom:0;height:40px;width:calc(100% + 48px);font-size:14px;transform:translateX(-24px);display:flex;align-items:center;justify-content:center;background-color:#fff;color:#99a2aa;cursor:pointer;transition:.2s ease-out;z-index:1000;border-radius:4px}.panel-area .bb-comment .fold-comment:hover{color:#000}body.dark .panel-area .bb-comment .fold-comment{background-color:#444;color:#eee}body.dark .panel-area .bb-comment .fold-comment:hover{color:var(--theme-color)}`;
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/min/fold-comment.min.js"] = (()=>{return(e,t)=>{if(document.URL.replace(window.location.search,"")==="https://t.bilibili.com/"){(async()=>{t.applyImportantStyle("foldCommentStyle");const e=await SpinQuery.select(".card-list .feed-card>.content");const l=e=>{const t=t=>{const l=document.createElement("div");l.classList.add("fold-comment");l.innerHTML="收起评论";const n=t.querySelector(".bb-comment");if(n===null){console.error("未找到评论区");return}else if(n.querySelector(".fold-comment")!==null){return}else{l.addEventListener("click",()=>{const t=e.querySelector(".button-bar").children[1];if(t!==null){t.click();e.scrollIntoView()}});n.insertAdjacentElement("beforeend",l)}};const l=e.querySelector(".panel-area");if(l===null){console.log(e)}if(l.childElementCount===0){const e=Observer.childList(l,n=>{if(n.length>0){t(l);e.forEach(e=>e.stop())}})}else{t(l)}};Observer.childList(e,()=>e.querySelectorAll("div.card").forEach(l))})()}}})();

View File

@ -1086,9 +1086,9 @@ onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/mi
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/expand-description.min.js"] = (()=>{return(e,p)=>{p.applyStyle("expandDescriptionStyle")}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/favorites-redirect.min.js"] = (()=>{return(t,e)=>{function i(){const t=document.querySelectorAll("li[data-aid]>a");t.forEach(t=>{const e=t.getAttribute("href");if(e===null||!e.includes("medialist")){return}const i=t.parentElement.getAttribute("data-aid");t.setAttribute("href",`https://www.bilibili.com/video/av${i}`)})}(async()=>{const t=await SpinQuery.select("#app>.s-space");if(t!==null){Observer.childListSubtree("#app>.s-space",i)}})()}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-apis.min.js"] = (()=>{return(e,t)=>{const r={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧"},share:{id:2048,name:"分享"}};class n extends EventTarget{constructor(){super(...arguments);this.cards=[]}addEventListener(e,t,r){super.addEventListener(e,t,r)}removeEventListener(e,t,r){super.removeEventListener(e,t,r)}addCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){if(e.querySelector(".skeleton")!==null){const t=Observer.childList(e,()=>{if(e.querySelector(".skeleton")===null){t.forEach(e=>e.stop());this.addCard(e)}})}else{const t=this.parseCard(e);this.cards.push(t);const r=new CustomEvent("addCard",{detail:t});this.dispatchEvent(r)}}}removeCard(e){if(e instanceof HTMLElement&&e.classList.contains("card")){const t=this.parseCard(e).id;const r=this.cards.findIndex(e=>e.id===t);const n=this.cards[r];this.cards.splice(r,1);const s=new CustomEvent("removeCard",{detail:n});this.dispatchEvent(s)}}parseCard(e){const t=t=>{if(e.querySelector(t)===null){return""}return e.querySelector(t).innerText};const n=e=>{const r=parseInt(t(e));if(isNaN(r)){return 0}return r};const s=(()=>{if(e.querySelector(".repost")){return r.repost}if(e.querySelector(".imagesbox")){return r.textWithImages}if(e.querySelector(".video-container")){return r.video}if(e.querySelector(".bangumi-container")){return r.bangumi}if(e.querySelector(".article-container")){return r.column}if(e.querySelector(".music-container")){return r.audio}if(e.querySelector(".h5share-container")){return r.share}if(e.querySelector(".vc-ctnr")){return r.miniVideo}return r.text})();const i={id:e.getAttribute("data-did"),username:t(".main-content .user-name"),text:t(".card-content .text.description"),reposts:n(".button-bar .single-button:nth-child(1) .text-offset"),comments:n(".button-bar .single-button:nth-child(2) .text-offset"),likes:n(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:s};e.setAttribute("data-type",s.id.toString());return i}async startWatching(){const e=await SpinQuery.select(".card-list .content");if(!e){return false}const t=[...e.querySelectorAll(".content>.card")];t.forEach(e=>this.addCard(e));Observer.childList(e,e=>{e.forEach(e=>{e.addedNodes.forEach(e=>this.addCard(e));e.removedNodes.forEach(e=>this.removeCard(e))})});return true}}const s=new n;return{export:{feedsCardsManager:s,feedsCardTypes:r}}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const d=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div></div>`;t.applyStyleFromText(`body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:12px;margin:0 0 12px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}`,"feeds-filter-card-style");return{export:Object.assign({template:d},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e instanceof RegExp){return e.test(t.text)}return t.text.includes(e)})){t.element.style.display="none"}else{t.element.style.display="block"}}},data(){return{allTypes:[]}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:d}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!")}this.allTypes=Object.entries(d);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)})}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter-card.vue.min.js"] = (()=>{return(e,t)=>{const r=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div><h2>关键词</h2><div class=filter-patterns><div class=pattern v-for="p of patterns":key=p>{{p}}<icon title=删除 type=mdi icon=trash-can-outline @click.native=deletePattern(p)></icon></div></div><div class=add-pattern><input placeholder="支持正则表达式 /^xxx$/"type=text v-model=newPattern @keydown.enter=addPattern(newPattern)><icon title=添加 type=mdi icon=plus @click.native=addPattern(newPattern)></icon></div></div>`;t.applyStyleFromText(`body .feed-card .card.pattern-block,body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:13px;margin:0 0 8px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns:not(:empty){margin-bottom:8px}.feeds-filter .filter-patterns .pattern{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:4px;background-color:#0001;font-size:12px}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:18px;cursor:pointer}.feeds-filter .add-pattern{display:flex;align-items:center}.feeds-filter .add-pattern input{color:inherit;background-color:transparent;font-size:12px;border:1px solid #8884;border-radius:4px;outline:0!important;padding:4px;flex:1 0 0;width:0}.feeds-filter .add-pattern input:focus{border-color:var(--theme-color)}.feeds-filter .add-pattern .be-icon{font-size:18px;cursor:pointer;margin-left:8px}`,"feeds-filter-card-style");return{export:Object.assign({template:r},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t.text)}return t.text.includes(e)})){t.element.classList.add("pattern-block")}else{t.element.classList.remove("pattern-block")}},deletePattern(t){const r=e.feedsFilterPatterns.indexOf(t);if(r!==-1){this.patterns.splice(r,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(this.feedsCardsManager!==null){this.feedsCardsManager.cards.forEach(e=>this.updateCard(e))}}},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",feedsCardsManager:null}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:r}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!");return}this.allTypes=Object.entries(r);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=e}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/feeds-filter.min.js"] = (()=>{return(e,r)=>{(async()=>{if(document.URL.replace(location.search,"")!=="https://t.bilibili.com/"){return}const e=await SpinQuery.select(".home-container .left-panel");if(e===null){return}e.insertAdjacentHTML("beforeend",html`<feeds-filter-card></feeds-filter-card>`);new Vue({el:"feeds-filter-card",components:{FeedsFilterCard:()=>r.importAsync("feeds-filter-card.vue")}})})()}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:not(.disabled):hover{background-color:#0002}.filter-type-switch label.disabled{background-color:var(--theme-color-10)}.filter-type-switch label.disabled:hover{background-color:var(--theme-color-20)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/filter-type-switch.vue.min.js"] = (()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:hover{background-color:#0002}.filter-type-switch label.disabled{border-color:var(--theme-color)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fix-fullscreen.min.js"] = (()=>{return(e,n)=>{unsafeWindow.Element.ALLOW_KEYBOARD_INPUT={};const t=unsafeWindow.Element.prototype.requestFullscreen;unsafeWindow.Element.prototype.requestFullscreen=function(){t.call(this)}}})();
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fold-comment.min.css"] = `.panel-area .bb-comment .fold-comment{position:-webkit-sticky;position:sticky;bottom:0;height:40px;width:calc(100% + 48px);font-size:14px;transform:translateX(-24px);display:flex;align-items:center;justify-content:center;background-color:#fff;color:#99a2aa;cursor:pointer;transition:.2s ease-out;z-index:1000;border-radius:4px}.panel-area .bb-comment .fold-comment:hover{color:#000}body.dark .panel-area .bb-comment .fold-comment{background-color:#444;color:#eee}body.dark .panel-area .bb-comment .fold-comment:hover{color:var(--theme-color)}`;
onlineData["https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/min/fold-comment.min.js"] = (()=>{return(e,t)=>{if(document.URL.replace(window.location.search,"")==="https://t.bilibili.com/"){(async()=>{t.applyImportantStyle("foldCommentStyle");const e=await SpinQuery.select(".card-list .feed-card>.content");const l=e=>{const t=t=>{const l=document.createElement("div");l.classList.add("fold-comment");l.innerHTML="收起评论";const n=t.querySelector(".bb-comment");if(n===null){console.error("未找到评论区");return}else if(n.querySelector(".fold-comment")!==null){return}else{l.addEventListener("click",()=>{const t=e.querySelector(".button-bar").children[1];if(t!==null){t.click();e.scrollIntoView()}});n.insertAdjacentElement("beforeend",l)}};const l=e.querySelector(".panel-area");if(l===null){console.log(e)}if(l.childElementCount===0){const e=Observer.childList(l,n=>{if(n.length>0){t(l);e.forEach(e=>e.stop())}})}else{t(l)}};Observer.childList(e,()=>e.querySelectorAll("div.card").forEach(l))})()}}})();

View File

@ -51,9 +51,9 @@
"expand-description.min.js": "A56857AD6B1C9F431B233D188E857D30DD5A2EB644986DE32A21280B1B7BC7A7",
"favorites-redirect.min.js": "70D6ECCE0402AA76387D2A3288C1148C60CC88D5378B7A2BDC813F3F78E4EE84",
"feeds-apis.min.js": "2C704CF50C6F2C562AC2FCD7E6C9706E63E109D2FB4A6836BFE316C34D4A4FCE",
"feeds-filter-card.vue.min.js": "9B3B09C62982448CE4175FE7339585F31E14DE19D4F794C6BB65C45126DD143E",
"feeds-filter-card.vue.min.js": "B7D084FC44D0C57D3A0BC88016DE103780A51AEE3D5294628210F00F8946FD72",
"feeds-filter.min.js": "C5781B8313AFDE875CE65C7BDF2C6D545847E2A29EC98BA4CD55C0F802567228",
"filter-type-switch.vue.min.js": "7FEA6617256698891A5282F18F4ECAAC910586FA582384D054133A43E186E88A",
"filter-type-switch.vue.min.js": "86F40D40C2464A56A2A0D32A0B94860DD376D1FE7850836B4CE37B767312BBE7",
"fix-fullscreen.min.js": "C0628A7CABB4421FCBD7663700EF9965C96F6D79979B9F7523A9F9B0B009C8B6",
"fold-comment.min.css": "74DF4566EB80AD7078E65E8B68633E05FC41D3B4E47A20D6E415E8A743F35378",
"fold-comment.min.js": "B149A9A8EA03DCB39BC4FF59591BE9D8E7BA45B2049A545F9611251EBE85FEA9",

Binary file not shown.

View File

@ -1 +1 @@
(()=>{return(e,t)=>{const d=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div></div>`;t.applyStyleFromText(`body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:12px;margin:0 0 12px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}`,"feeds-filter-card-style");return{export:Object.assign({template:d},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e instanceof RegExp){return e.test(t.text)}return t.text.includes(e)})){t.element.style.display="none"}else{t.element.style.display="block"}}},data(){return{allTypes:[]}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:d}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!")}this.allTypes=Object.entries(d);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)})}})}}})();
(()=>{return(e,t)=>{const r=`<div class=feeds-filter><h1>动态过滤</h1><h2>类型</h2><div class=filter-types><filter-type-switch v-for="[name, type] of allTypes":name=name :type=type :key=type.id></filter-type-switch></div><h2>关键词</h2><div class=filter-patterns><div class=pattern v-for="p of patterns":key=p>{{p}}<icon title=删除 type=mdi icon=trash-can-outline @click.native=deletePattern(p)></icon></div></div><div class=add-pattern><input placeholder="支持正则表达式 /^xxx$/"type=text v-model=newPattern @keydown.enter=addPattern(newPattern)><icon title=添加 type=mdi icon=plus @click.native=addPattern(newPattern)></icon></div></div>`;t.applyStyleFromText(`body .feed-card .card.pattern-block,body.feeds-filter-block-audio .feed-card .card[data-type="256"],body.feeds-filter-block-bangumi .feed-card .card[data-type="512"],body.feeds-filter-block-column .feed-card .card[data-type="64"],body.feeds-filter-block-miniVideo .feed-card .card[data-type="16"],body.feeds-filter-block-repost .feed-card .card[data-type="1"],body.feeds-filter-block-share .feed-card .card[data-type="2048"],body.feeds-filter-block-text .feed-card .card[data-type="4"],body.feeds-filter-block-textWithImages .feed-card .card[data-type="2"],body.feeds-filter-block-video .feed-card .card[data-type="8"]{display:none!important}.feeds-filter{background-color:#fff;width:100%;padding:12px 16px;float:left;border-radius:4px;margin-top:8px;box-sizing:border-box;display:flex;flex-direction:column}.feeds-filter,.feeds-filter *{transition:.2s ease-out}body.dark .feeds-filter{color:#eee;background-color:#444}.feeds-filter h1{font-weight:400;font-size:14px;margin:0 0 14px}.feeds-filter h2{font-weight:700;font-size:13px;margin:0 0 8px}.feeds-filter .filter-types{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:18px}.feeds-filter .filter-types .filter-type-switch{flex:0 0 49%}.feeds-filter .filter-types .filter-type-switch:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns:not(:empty){margin-bottom:8px}.feeds-filter .filter-patterns .pattern{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:4px;background-color:#0001;font-size:12px}.feeds-filter .filter-patterns .pattern:not(:last-child){margin-bottom:4px}.feeds-filter .filter-patterns .pattern .be-icon{font-size:18px;cursor:pointer}.feeds-filter .add-pattern{display:flex;align-items:center}.feeds-filter .add-pattern input{color:inherit;background-color:transparent;font-size:12px;border:1px solid #8884;border-radius:4px;outline:0!important;padding:4px;flex:1 0 0;width:0}.feeds-filter .add-pattern input:focus{border-color:var(--theme-color)}.feeds-filter .add-pattern .be-icon{font-size:18px;cursor:pointer;margin-left:8px}`,"feeds-filter-card-style");return{export:Object.assign({template:r},{components:{FilterTypeSwitch:()=>t.importAsync("filter-type-switch.vue"),Icon:()=>t.importAsync("icon.vue")},methods:{updateCard(t){if(e.feedsFilterPatterns.some(e=>{if(e.startsWith("/")&&e.endsWith("/")){return new RegExp(e.slice(1,e.length-1)).test(t.text)}return t.text.includes(e)})){t.element.classList.add("pattern-block")}else{t.element.classList.remove("pattern-block")}},deletePattern(t){const r=e.feedsFilterPatterns.indexOf(t);if(r!==-1){this.patterns.splice(r,1)}},addPattern(e){if(e&&!this.patterns.includes(e)){this.patterns.push(e)}this.newPattern=""}},watch:{patterns(){e.feedsFilterPatterns=this.patterns;if(this.feedsCardsManager!==null){this.feedsCardsManager.cards.forEach(e=>this.updateCard(e))}}},data(){return{allTypes:[],patterns:[...e.feedsFilterPatterns],newPattern:"",feedsCardsManager:null}},async mounted(){const{feedsCardsManager:e,feedsCardTypes:r}=await t.importAsync("feeds-apis");const a=await e.startWatching();if(!a){console.error("feedsCardsManager.startWatching() failed!");return}this.allTypes=Object.entries(r);e.cards.forEach(e=>this.updateCard(e));e.addEventListener("addCard",e=>{const t=e.detail;this.updateCard(t)});this.feedsCardsManager=e}})}}})();

View File

@ -1 +1 @@
(()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:not(.disabled):hover{background-color:#0002}.filter-type-switch label.disabled{background-color:var(--theme-color-10)}.filter-type-switch label.disabled:hover{background-color:var(--theme-color-20)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();
(()=>{return(e,t)=>{const i=`<div class=filter-type-switch><label :class={disabled}><span class=name :class={disabled}>{{type.name}}</span><input type=checkbox v-model=disabled><icon class=disabled type=mdi icon=cancel v-if=disabled></icon><icon type=mdi icon=check v-else></icon></label></div>`;t.applyStyleFromText(`.filter-type-switch label{cursor:pointer;margin:0;padding:4px 8px;border-radius:4px;background-color:#0001;display:flex;align-items:center;justify-content:space-between;border:1px solid transparent}.filter-type-switch label .name{font-size:12px}.filter-type-switch label .disabled{color:var(--theme-color)!important}.filter-type-switch label:hover{background-color:#0002}.filter-type-switch label.disabled{border-color:var(--theme-color)}.filter-type-switch label input{display:none}.filter-type-switch label .be-icon{font-size:16px}`,"filter-type-switch-style");return{export:Object.assign({template:i},{components:{Icon:()=>t.importAsync("icon.vue")},props:["name","type"],methods:{setFilter(t,i=true){document.body.classList[t?"add":"remove"](`feeds-filter-block-${this.name}`);if(!i){return}if(t){e.feedsFilterTypes.push(this.type.id)}else{const t=e.feedsFilterTypes.indexOf(this.type.id);if(t!==-1){e.feedsFilterTypes.splice(t,1)}}e.feedsFilterTypes=e.feedsFilterTypes}},data(){const t=e.feedsFilterTypes.includes(this.type.id);this.setFilter(t,false);return{disabled:t}},watch:{disabled(e){this.setFilter(e)}}})}}})();

View File

@ -5,6 +5,17 @@
<div class="filter-types">
<filter-type-switch v-for="[name, type] of allTypes" :name="name" :type="type" :key="type.id"></filter-type-switch>
</div>
<h2>关键词</h2>
<div class="filter-patterns">
<div class="pattern" v-for="p of patterns" :key="p">
{{p}}
<icon title="删除" type="mdi" icon="trash-can-outline" @click.native="deletePattern(p)"></icon>
</div>
</div>
<div class="add-pattern">
<input placeholder="支持正则表达式 /^xxx$/" type="text" v-model="newPattern" @keydown.enter="addPattern(newPattern)" />
<icon title="添加" type="mdi" icon="plus" @click.native="addPattern(newPattern)"></icon>
</div>
</div>
</template>
@ -12,27 +23,53 @@
import { FeedsCard, FeedsCardType } from '../feeds-apis'
export default {
components: {
FilterTypeSwitch: () => import('./filter-type-switch.vue')
FilterTypeSwitch: () => import('./filter-type-switch.vue'),
Icon: () => import('../../style/icon.vue')
},
methods: {
updateCard(card: FeedsCard) {
if (
settings.feedsFilterPatterns.some(pattern => {
if (pattern instanceof RegExp) {
return pattern.test(card.text)
if (pattern.startsWith('/') && pattern.endsWith('/')) {
return new RegExp(pattern.slice(1, pattern.length - 1)).test(card.text)
}
return card.text.includes(pattern)
})
) {
card.element.style.display = 'none'
card.element.classList.add('pattern-block')
} else {
card.element.style.display = 'block'
card.element.classList.remove('pattern-block')
}
},
deletePattern(pattern: Pattern) {
const index = settings.feedsFilterPatterns.indexOf(pattern)
if (index !== -1) {
this.patterns.splice(index, 1)
}
},
addPattern(pattern: Pattern) {
if (pattern && !this.patterns.includes(pattern)) {
this.patterns.push(pattern)
}
this.newPattern = ''
}
},
watch: {
patterns() {
settings.feedsFilterPatterns = this.patterns
if (this.feedsCardsManager !== null) {
this.feedsCardsManager.cards.forEach((card: FeedsCard) =>
this.updateCard(card)
)
}
}
},
data() {
return {
allTypes: [] as [string, FeedsCardType][]
allTypes: [] as [string, FeedsCardType][],
patterns: [...settings.feedsFilterPatterns],
newPattern: '',
feedsCardsManager: null
}
},
async mounted() {
@ -40,6 +77,7 @@ export default {
const success = await feedsCardsManager.startWatching()
if (!success) {
console.error('feedsCardsManager.startWatching() failed!')
return
}
this.allTypes = Object.entries(feedsCardTypes)
feedsCardsManager.cards.forEach(card => this.updateCard(card))
@ -47,6 +85,7 @@ export default {
const card = e.detail as FeedsCard
this.updateCard(card)
})
this.feedsCardsManager = feedsCardsManager
}
}
</script>
@ -71,6 +110,9 @@ body {
display: none !important;
}
}
.feed-card .card.pattern-block {
display: none !important;
}
}
.feeds-filter {
background-color: white;
@ -83,8 +125,9 @@ body {
display: flex;
flex-direction: column;
&, & * {
transition: .2s ease-out;
&,
& * {
transition: 0.2s ease-out;
}
body.dark & {
color: #eee;
@ -93,21 +136,20 @@ body {
h1 {
font-weight: normal;
font-size: 14px;
margin: 0 {
bottom: 14px;
}
margin: 0;
margin-bottom: 14px;
}
h2 {
font-weight: bold;
font-size: 12px;
margin: 0 {
bottom: 12px;
}
font-size: 13px;
margin: 0;
margin-bottom: 8px;
}
.filter-types {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-bottom: 18px;
.filter-type-switch {
flex: 0 0 49%;
&:not(:last-child) {
@ -115,5 +157,49 @@ body {
}
}
}
.filter-patterns {
&:not(:empty) {
margin-bottom: 8px;
}
.pattern {
display: flex;
align-items: center;
justify-content: space-between;
padding: 4px 8px;
border-radius: 4px;
background-color: #0001;
font-size: 12px;
&:not(:last-child) {
margin-bottom: 4px;
}
.be-icon {
font-size: 18px;
cursor: pointer;
}
}
}
.add-pattern {
display: flex;
align-items: center;
input {
color: inherit;
background-color: transparent;
font-size: 12px;
border: 1px solid #8884;
border-radius: 4px;
outline: none !important;
padding: 4px;
flex: 1 0 0;
width: 0;
&:focus {
border-color: var(--theme-color);
}
}
.be-icon {
font-size: 18px;
cursor: pointer;
margin-left: 8px;
}
}
}
</style>