import { $, $$, addStyle, DOMUtils, log, utils } from "@/env"; import { DouYinRouter } from "@/router/DouYinRouter"; import { addBlockCSS } from "@components/env.base"; import { Panel } from "@components/setting/panel"; export const DouYinSearchBlock = { init() { Panel.execMenuOnce("douyin-search-shieldReleatedSearches", () => { return this.shieldReleatedSearches(); }); Panel.execMenuOnce("douyin-search-blockAIAsk", () => { return this.blockAIAsk(); }); Panel.execMenuOnce("douyin-search-blockAskAI", () => { return this.blockAskAI(); }); Panel.execMenuOnce("dy-search-blockUserLiveFlashingAvatar", () => { return this.blockUserLiveFlashingAvatar(); }); Panel.execMenuOnce("dy-search-blockKeywordsOptions", () => { return this.blockKeywordsOptions(); }); Panel.execMenuOnce("dy-search-blockSideBar", () => { return this.blockSideBar(); }); Panel.execMenuOnce("dy-search-blockAIAssistant", () => { return this.blockAIAssistant(); }); Panel.execMenuOnce("dy-search-blockColumn", () => { return this.blockColumn(); }); Panel.execMenuOnce("dy-search-blockSingleColumn", () => { return this.blockSingleColumn(); }); Panel.execMenuOnce("dy-search-blockFilter", () => { return this.blockFilter(); }); this.resizeSearchFilterBar(); }, /** * 把搜索结果过滤器宽度自适应 */ resizeSearchFilterBar() { DOMUtils.onReady(() => { const $searchFilter = $("div:has(+#search-result-container)"); const $searchResultContainer = $("#search-result-container"); if (!$searchFilter) { return; } if (!$searchResultContainer) { return; } const searchResultContainerWidth = DOMUtils.width($searchResultContainer); DOMUtils.css($searchFilter, "width", searchResultContainerWidth + "px"); }); }, /** * 【屏蔽】相关搜索 */ shieldReleatedSearches() { log.info("【屏蔽】相关搜索"); const lockFn = new utils.LockFunction(() => { if (!DouYinRouter.isSearch()) return; $$('[id^="waterfall_item"]:has(.search-result-card p)').forEach(($el) => { const $p = $el.querySelector("p")!; const text = DOMUtils.text($p); if (text.includes("相关搜索")) { DOMUtils.remove($el); } }); }); const observer = utils.mutationObserver(document, { config: { subtree: true, childList: true, }, immediate: true, callback: () => { lockFn.run(); }, }); return [ addBlockCSS("#search-content-area > div > div:nth-child(2)"), addStyle(/*css*/ ` /* 把搜索结果宽度自适应 */ #search-result-container{ width: auto !important; }`), () => { observer.disconnect(); }, ]; }, /** * 【屏蔽】AI问一问 */ blockAIAsk() { log.info(`【屏蔽】AI问一问`); return addBlockCSS("#search-content-area > div > div:nth-child(2) > div > div:first-child"); }, /** * 【屏蔽】问问AI */ blockAskAI() { // 为你找到以下结果,问问AI智能总结内容 log.info(`【屏蔽】问问AI`); return addBlockCSS("#search-toolbar-container>div:last-child:not(:first-child):not(:empty):has(svg)"); }, /** * 【屏蔽】AI为你生成回答 */ blockAIAssistant() { log.info(`【屏蔽】AI为你生成回答`); return addBlockCSS('#search-result-container .search-result-card:first-child:has([data-card-name*="search_ai"])'); }, /** * 【屏蔽】用户直播时闪烁的头像 */ blockUserLiveFlashingAvatar() { log.info(`【屏蔽】用户直播时闪烁的头像`); return addStyle(/*css*/ ` .search-result-card a[href*="live.douyin.com"][data-e2e="web_search"] div{ animation: none !important; --fallback-avatar-image: none !important; --label-image: none !important; --live-color: transparent !important; } `); }, /** * 【屏蔽】关键词选项 */ blockKeywordsOptions() { log.info(`【屏蔽】关键词选项`); return addBlockCSS("#search-toolbar-container > div:nth-child(2):not(:empty)"); }, /** * 【屏蔽】侧边栏 */ blockSideBar() { log.info(`【屏蔽】侧边栏`); return addBlockCSS("#douyin-sidebar"); }, /** * 【屏蔽】多列 */ blockColumn() { log.info(`【屏蔽】多列`); return addBlockCSS('#search-toolbar-container *:has(>svg rect[x="11"][y="11.5"][rx="1"])'); }, /** * 【屏蔽】单列 */ blockSingleColumn() { log.info(`【屏蔽】单列`); return addBlockCSS( '#search-toolbar-container *:has(>svg path[d="M4.963 7.628h10.36a.923.923 0 0 1 .922.923v7.025a.923.923 0 0 1-.923.924H4.964a.923.923 0 0 1-.923-.924V8.551a.923.923 0 0 1 .922-.923zm.923 1.384a.462.462 0 0 0-.461.462v5.18a.461.461 0 0 0 .461.46H14.4a.461.461 0 0 0 .462-.46v-5.18a.461.461 0 0 0-.462-.462H5.886z"])' ); }, /** * 【屏蔽】筛选 */ blockFilter() { log.info(`【屏蔽】筛选`); return addBlockCSS( '#search-toolbar-container *:has(>span svg path[d="M9.898 8.28a.75.75 0 0 1-1.06 0l-2.83-2.828L3.18 8.28a.75.75 0 0 1-1.06-1.06l3.358-3.36a.75.75 0 0 1 1.061 0l3.359 3.36a.75.75 0 0 1 0 1.06z"])' ); }, };