直播插件

虎牙、斗鱼、哔哔哔里、抖音 页面简化,给观众一个干净的页面!新增虎牙、斗鱼、哔哩哔哩的护眼主题🚀

As of 2023-09-17. See the latest version.

  1. // ==UserScript==
  2. // @name 直播插件
  3. // @namespace https://github.com/wuxin0011/huya-live
  4. // @version 4.0.9
  5. // @author wuxin0011
  6. // @description 虎牙、斗鱼、哔哔哔里、抖音 页面简化,给观众一个干净的页面!新增虎牙、斗鱼、哔哩哔哩的护眼主题🚀
  7. // @license MIT
  8. // @icon https://cdn.staticaly.com/gh/wuxin0011/blog-resource@main/picgo/icon.png
  9. // @source https://github.com/wuxin0011/huya-live
  10. // @supportURL https://github.com/wuxin0011/huya-live/issues
  11. // @match https://*.douyin.com/*
  12. // @match https://*.douyu.com/*
  13. // @match https://*.huya.com/*
  14. // @match https://*.bilibili.com/*
  15. // @match https://www.douyu.com/*
  16. // @match https://www.huya.com/*
  17. // @match https://www.bilibili.com/*
  18. // @match https://www.douyin.com/*
  19. // @grant GM_addStyle
  20. // ==/UserScript==
  21.  
  22. (function () {
  23. 'use strict';
  24.  
  25. const exculues = [
  26. "https://i.huya.com/",
  27. "https://www.douyu.com/member/",
  28. "https://yuba.douyu.com/",
  29. "https://manga.bilibili.com/",
  30. "https://account.bilibili.com/",
  31. "https://member.bilibili.com/",
  32. "https://show.bilibili.com/",
  33. "https://www.bilibili.com/cheese",
  34. "https://pay.bilibili.com/",
  35. "https://show.bilibili.com/",
  36. "https://link.bilibili.com/"
  37. ];
  38. const prefix = "[live-plugin]:";
  39. const msg = (...args) => `${prefix} ${args}`;
  40. const emptyMethod = (...args) => {
  41. console.warn(`${prefix} run empty method...`);
  42. };
  43. const log = (...args) => console.log(msg(args));
  44. const warn = (...args) => console.warn(msg(args));
  45. const error = (...args) => console.error(msg(args));
  46. const douyu_address_pattern = /^https:\/\/www\.douyu\.((com)|(cn)).*/;
  47. const bilibili_address_pattern = /^https:\/\/.*\.bilibili\..*/;
  48. const huya_address_pattern = /^https:\/\/www\.huya\.((com)|(cn)).*/;
  49. const douyin_address_pattern = /^https:\/\/www\.douyin\.((com)|(cn)).*/;
  50. const localhost = /^http:\/\/127\.0\.0\.1\.*|^http:\/\/localhost.*/;
  51. const local_url = window.location.href;
  52. const is_huya = huya_address_pattern.test(local_url);
  53. const is_douyu = douyu_address_pattern.test(local_url);
  54. const is_bilibili = bilibili_address_pattern.test(local_url);
  55. const is_douyin = douyin_address_pattern.test(local_url);
  56. const is_localhost = localhost.test(local_url);
  57. const wd = window.document;
  58. const wls = window.localStorage;
  59. const download_plugin_url = "https://greatest.deepsurf.us/zh-CN/scripts/449261-%E8%99%8E%E7%89%99%E7%9B%B4%E6%92%AD";
  60. const source_code_url = "https://github.com/wuxin0011/huya-live";
  61. const isImage = (file) => /.*(\.(png|jpg|jpeg|apng|avif|bmp|gif|ico|cur|svg|tiff|webp))$/.test(file);
  62. const querySelector = (el, sel) => !!el && !!sel && el instanceof HTMLElement ? el.querySelector(sel) : el ? wd.querySelector(el) : emptyMethod;
  63. const querySelectorAll = (el, sel) => !!el && !!sel && el instanceof HTMLElement ? el.querySelectorAll(sel) : el ? wd.querySelectorAll(el) : emptyMethod;
  64. const addEventListener = (el, type, callback) => !!el && type && typeof callback === "function" ? el === wd || el instanceof HTMLElement ? el.addEventListener(type, callback, false) : false : false;
  65. const createElement = (tag) => !!tag && wd.createElement(tag);
  66. const appendChild = (el1, el2) => !!el1 && !!el2 && el1 instanceof HTMLElement && el2 instanceof HTMLElement && el1.appendChild(el2);
  67. const insertChild = (el1, el2) => !!el1 && !!el2 && el1 instanceof HTMLElement && el2 instanceof HTMLElement && el1.insertBefore(el2, el1.firstChild);
  68. const is_exculues = exculues.filter((url) => local_url.indexOf(url) !== -1).length !== 0;
  69. const addStyle = (str) => {
  70. if ((window == null ? void 0 : window.GM_addStyle) && typeof window.GM_addStyle == "function") {
  71. window.GM_addStyle(str);
  72. } else {
  73. let head = querySelector("head");
  74. let style = createElement("style");
  75. style.innerText = str;
  76. head.appendChild(style);
  77. }
  78. };
  79. const removeDOM = (element, realRemove = false) => {
  80. try {
  81. if (!(element instanceof HTMLElement)) {
  82. element = querySelector(element);
  83. }
  84. if (element instanceof HTMLElement) {
  85. element.style.display = "none";
  86. if (realRemove) {
  87. element.remove();
  88. }
  89. }
  90. } catch (e) {
  91. error(e);
  92. }
  93. };
  94. const s2d = (string) => new DOMParser().parseFromString(string, "text/html").body.childNodes[0];
  95. const isArray = (a) => a && (a == null ? void 0 : a.length) > 0;
  96. const timeoutSelectorAll = (selector, callback, time = 0) => {
  97. if (typeof callback != "function") {
  98. warn("callback should is a function!");
  99. return;
  100. }
  101. setTimeout(() => {
  102. const nodes = querySelectorAll(selector);
  103. if (isArray(nodes)) {
  104. callback(nodes);
  105. }
  106. }, time);
  107. };
  108. const timeoutSelectorAllOne = (selector, callback, time = 0) => {
  109. if (typeof callback != "function") {
  110. warn("callback should is a function!");
  111. return;
  112. }
  113. setTimeout(() => {
  114. const nodes = querySelectorAll(selector);
  115. if (isArray(nodes)) {
  116. for (let node of nodes) {
  117. callback(node);
  118. }
  119. }
  120. }, time);
  121. };
  122. const getLocalStore = (k, type = Array.name, isParse = true) => {
  123. let obj = wls.getItem(k);
  124. if (type === Array.name) {
  125. if (isParse && obj) {
  126. obj = JSON.parse(obj);
  127. }
  128. return Array.isArray(obj) ? obj : [];
  129. }
  130. if (type === Object.name) {
  131. if (isParse && obj) {
  132. obj = JSON.parse(obj);
  133. }
  134. return obj ? obj : {};
  135. }
  136. if (type === String.name) {
  137. return obj ? obj : "";
  138. }
  139. if (type === Boolean.name) {
  140. return obj === "true" || obj === true;
  141. }
  142. return obj;
  143. };
  144. const addLocalStore = (k, v = [], type = Array.name, isParse = true) => (type === Object.name || type === Array.name) && isParse ? wls.setItem(k, JSON.stringify(v)) : wls.setItem(k, v);
  145. const removeVideo = (selector, time1 = 100, maxCount = 1e3) => {
  146. let count = 0;
  147. let video_timer = setInterval(() => {
  148. try {
  149. const video2 = querySelector(selector);
  150. if (video2 && video2 instanceof HTMLVideoElement) {
  151. video2.pause();
  152. }
  153. removeDOM(video2, false);
  154. if (count >= maxCount) {
  155. clearInterval(video_timer);
  156. }
  157. count = count + 1;
  158. } catch (e) {
  159. }
  160. }, time1);
  161. };
  162. const throttle = (wait, func, ...args) => {
  163. let pre = Date.now();
  164. return () => {
  165. if (Date.now() - pre > wait) {
  166. func(...args);
  167. pre = Date.now();
  168. }
  169. };
  170. };
  171. const intervalRemoveElement = (selectors, time = 160, maxCount = 1e3) => {
  172. if (!isArray(selectors)) {
  173. warn(`selectors 必须是数组 : ${selectors}`);
  174. return;
  175. }
  176. let count = 0;
  177. let timer = setInterval(() => {
  178. selectors.forEach((sel) => {
  179. removeDOM(sel, true);
  180. });
  181. if (count >= maxCount) {
  182. clearInterval(timer);
  183. return;
  184. }
  185. count = count + 1;
  186. }, time);
  187. };
  188. const loopDo = (callback, count = 100, wait = 100) => {
  189. if (typeof callback != "function") {
  190. warn("callback is a function!");
  191. return;
  192. }
  193. let timer = setInterval(() => {
  194. count--;
  195. if (count === 0) {
  196. clearInterval(timer);
  197. } else {
  198. callback(timer);
  199. }
  200. }, wait);
  201. };
  202. const findMark = (selector, callback, count = 100, wait = 100) => {
  203. if (!selector) {
  204. warn("selector not allow or null !");
  205. return;
  206. }
  207. if (typeof callback != "function") {
  208. warn("callback is a function!");
  209. return;
  210. }
  211. loopDo((timer) => {
  212. try {
  213. let element = selector instanceof HTMLElement ? selector : querySelector(selector);
  214. if (element && element instanceof HTMLElement) {
  215. let isMark = element.getAttribute("mark");
  216. if (!isMark) {
  217. element.setAttribute("mark", true);
  218. callback(element);
  219. } else {
  220. clearInterval(timer);
  221. }
  222. }
  223. } catch (e) {
  224. clearInterval(timer);
  225. error(e);
  226. }
  227. }, 100, 100);
  228. setTimeout(() => {
  229. let element = selector instanceof HTMLElement ? selector : querySelector(selector);
  230. if (element && element instanceof HTMLElement) {
  231. let isMark = element.getAttribute("mark");
  232. if (!isMark) {
  233. element.setAttribute("mark", true);
  234. callback(element);
  235. }
  236. }
  237. }, 5e3);
  238. };
  239. const setTimeoutMark = (selector, callback, wait = 0) => {
  240. if (!selector) {
  241. warn("selector not allow or null !");
  242. return;
  243. }
  244. if (typeof callback != "function") {
  245. warn("callback is a function!");
  246. return;
  247. }
  248. let timer = setTimeout(() => {
  249. try {
  250. let element = selector instanceof HTMLElement ? selector : querySelector(selector);
  251. if (element && element instanceof HTMLElement) {
  252. let isMark = element.getAttribute("mark");
  253. if (!isMark) {
  254. element.setAttribute("mark", true);
  255. callback(element);
  256. } else {
  257. clearInterval(timer);
  258. }
  259. }
  260. } catch (e) {
  261. clearInterval(timer);
  262. error(e);
  263. }
  264. }, wait);
  265. };
  266. const backgroundNone = (element, selectors = [".layout-Main"], time = 100, maxCount = 500) => {
  267. if (!(element instanceof HTMLElement) || !isArray(selectors)) {
  268. warn(`element 参数应是 元素, selector 应该是元素选择器集合`);
  269. return;
  270. }
  271. let count = 0;
  272. let timer = setInterval(() => {
  273. selectors.forEach((sel) => {
  274. let b = querySelector(element, sel);
  275. if (!(b instanceof HTMLElement)) {
  276. return;
  277. }
  278. b.style.backgroundImage = "none";
  279. });
  280. if (count >= maxCount) {
  281. clearInterval(timer);
  282. return;
  283. }
  284. count = count + 1;
  285. }, time);
  286. };
  287. const uploadImage = (file, callback) => {
  288. try {
  289. if (!isImage(file == null ? void 0 : file.name)) {
  290. return alert("图片格式不正确!");
  291. }
  292. let fileReader = new FileReader();
  293. fileReader.readAsDataURL(file);
  294. fileReader.onerror = (e) => {
  295. return alert("图片解析失败!" + JSON.stringify(e));
  296. };
  297. fileReader.onload = (e) => {
  298. let base64 = e.target.result;
  299. let str = base64.slice(base64.indexOf(",") + 1);
  300. if (atob) {
  301. str = atob(str);
  302. let bytes = str.length;
  303. const size = (bytes / (1024 * 1024)).toFixed(2);
  304. if (size > 5) {
  305. if (confirm("图片保存失败,浏览器最大只能保存5MB大小图片,确认查看原因?")) {
  306. window.location.href = "https://developer.mozilla.org/zh-CN/docs/Web/API/File_and_Directory_Entries_API/Introduction";
  307. }
  308. return;
  309. }
  310. callback(base64);
  311. } else {
  312. alert("保存失败,当前浏览器不支持!");
  313. }
  314. };
  315. } catch (e) {
  316. alert("图片解析失败!");
  317. }
  318. };
  319. const findButton = (sel = "body", key = "full_screen_button_class_or_id", text = "全屏", tagName = "div") => {
  320. var _a, _b;
  321. const container = querySelector(sel);
  322. let classId = "";
  323. if (container) {
  324. const fullButton = querySelector(container, key);
  325. if (fullButton && fullButton instanceof HTMLElement && ((fullButton == null ? void 0 : fullButton.textContent) === text || (fullButton == null ? void 0 : fullButton.title) === text)) {
  326. classId = `${sel} ${fullButton.id ? fullButton.id : fullButton.className}`;
  327. }
  328. if (!classId) {
  329. const nodes = querySelectorAll(container, tagName);
  330. if (isArray(nodes)) {
  331. for (let i = 0; i < nodes.length; i++) {
  332. if (nodes[i] && nodes[i] instanceof HTMLElement && (((_a = nodes[i]) == null ? void 0 : _a.title) === text || ((_b = nodes[i]) == null ? void 0 : _b.textContent) === text)) {
  333. classId = `${sel} ${nodes[i].id ? nodes[i].id : nodes[i].className}`;
  334. }
  335. }
  336. }
  337. }
  338. }
  339. if (key && classId) {
  340. addLocalStore(key, classId, String.name, false);
  341. }
  342. return classId || key;
  343. };
  344. const handlerPromise = (result, callback) => {
  345. if (typeof callback !== "function") {
  346. warn("回调函数不能为空!");
  347. return;
  348. }
  349. if (!result) {
  350. warn("请求结果为空!");
  351. callback(result);
  352. return;
  353. }
  354. if (result instanceof Promise) {
  355. result.then((res) => {
  356. callback(res);
  357. }).catch((e) => {
  358. error(e);
  359. });
  360. } else {
  361. callback(result);
  362. }
  363. };
  364. const handlerDisplay = (element, isBlock) => {
  365. if (!(element && element instanceof HTMLElement)) {
  366. return;
  367. }
  368. if (isBlock) {
  369. if (!element.classList.contains("m-container-display-block")) {
  370. element.classList.add("m-container-display-block");
  371. }
  372. if (element.classList.contains("m-container-display-none")) {
  373. element.classList.remove("m-container-display-none");
  374. }
  375. } else {
  376. if (element.classList.contains("m-container-display-block")) {
  377. element.classList.remove("m-container-display-block");
  378. }
  379. if (!element.classList.contains("m-container-display-none")) {
  380. element.classList.add("m-container-display-none");
  381. }
  382. }
  383. };
  384. const support = {
  385. supportSearch() {
  386. return !is_douyin;
  387. },
  388. supportAdd() {
  389. return !is_douyin;
  390. },
  391. supportReset() {
  392. return !is_douyin;
  393. },
  394. supportBg() {
  395. return !is_douyin && !is_bilibili;
  396. },
  397. supportMenu() {
  398. return !is_douyin && !is_bilibili;
  399. },
  400. supportGift() {
  401. return !is_douyin && !is_bilibili;
  402. },
  403. supportAutoFullScreen() {
  404. return true;
  405. },
  406. supportAutoViewMaxPro() {
  407. return true;
  408. },
  409. supportTable() {
  410. return !is_douyin;
  411. },
  412. supportTheme() {
  413. return !is_douyin;
  414. }
  415. };
  416. class HostUser {
  417. constructor(roomId, name) {
  418. this.roomId = roomId;
  419. this.name = name;
  420. }
  421. }
  422. const iconLogo = () => {
  423. let logo = "none";
  424. if (is_douyu) {
  425. logo = `<svg t="1694231763777" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5947" width="40" height="40"><path d="M838.45600394 295.68265482c63.56182914-60.97275259 162.72346075-74.95376592 162.72346075-74.95376593s-6.08432987-74.95376592-101.10343901-106.41104592c-136.57378765-43.49648592-212.17482272 19.41807408-212.17482272 19.41807406S517.15160494 3.24645925 346.53146074 92.18123852s-291.27111111 332.04906667-291.27111111 332.04906666c65.63309037 81.03809581 234.31142717 82.9799032 234.31142717 81.68536495-20.0653432 4.66033778-51.5226232 28.73874963-49.58081582 28.73874962-71.58796642-20.71261235-236.25323457 74.95376592-210.88028445 141.88139456 26.14967309 66.92762864 257.74256987 49.58081581 257.74256989 49.58081582s47.50955457 35.47034864 37.54160988 35.47034863c-124.53458173-10.09739852-144.59992494 55.53569185-144.59992494 57.60695309 31.45728 0 222.27222124 51.5226232 222.27222122 51.52262321s31.45728 135.92651852 61.62002173 137.86832592c29.51547259 2.07126124 55.53569185-49.58081581 55.53569185-51.5226232 37.54160987-37.54160987 27.44421136-116.50844445 24.07841186-120.52151309 18.12353581-10.09739852 101.10343902-35.47034864 245.70336395-187.44914172s55.40623803-349.3958795 49.45136197-353.40894815z m-805.97952789 371.53248394c0-81.03809581 186.15460347-140.5868563 186.80187259-124.53458173-24.07841185 56.95968395 0 96.44310124 0 96.44310124l-37.54160988 33.52854123 51.52262321 2.07126125s29.51547259 41.55467852 31.45728 43.49648592c-131.91344987 11.9097521-228.87436642-14.23992098-232.24016592-51.00480791zM223.29141728 653.10467161v8.67340642h-8.02613728l8.02613728-8.67340642z m204.14868544 121.16878222c-2.07126124 6.08432987-20.71261235 12.03920592-20.71261236 12.03920592l-4.01306864-12.03920592c-0.12945383 0 26.66748839-5.30760691 24.725681 0z" fill="#999999" p-id="5948"></path><path d="M361.80701235 124.28578765c-48.80409283 0-88.41696395 36.76488691-88.41696396 82.97990321s39.48341728 82.9799032 88.41696396 82.97990322 88.41696395-36.76488691 88.41696395-82.97990322-39.61287111-82.9799032-88.41696395-82.97990321z m0 141.88139457c-11.3919368 0-23.43114272-3.3657995-32.75181827-10.09739852 11.3919368 0 20.71261235-9.32067555 20.71261234-20.71261234s-9.32067555-20.71261235-20.71261234-20.71261234c-10.74466765 0-19.41807408 8.02613728-20.71261236 18.1235358-4.01306864-8.02613728-6.08432987-16.6995437-6.08432987-26.14967309 0-32.75181827 26.79694222-58.90149136 59.5487605-58.90149136h5.3076069c-11.3919368 6.08432987-19.41807408 18.12353581-19.41807407 32.10454913 0 20.0653432 16.6995437 36.76488691 36.76488691 36.76488692 16.05227457 0 30.16274173-10.09739852 34.82307951-24.72568099 1.29453827 4.66033778 2.07126124 10.09739852 2.07126123 14.7577363 0 33.52854124-26.79694222 59.5487605-59.54876048 59.54876049z m-22.13660445 204.14868543s27.44421136 18.12353581 75.60103506 0l-18.1235358-25.37295012c0.12945383 0-57.47749925 25.37295013-57.47749926 25.37295012z m115.21390618-62.91456c-14.11046717 14.11046717-49.58081581 31.45728-49.58081581 31.45728s51.5226232 29.51547259 63.56182914 21.35988149c12.03920592-7.24941431-9.96794469-50.74590025-13.98101333-52.81716149z m43.49648592-33.3990874c-12.03920592 11.3919368-37.54160987 29.51547259-37.54160987 29.51547258l47.50955456 35.47034865c10.09739852-12.16865975-1.94180741-64.98582124-9.96794469-64.98582123z m22.00715061-31.45728c-2.07126124 9.32067555-13.33374419 23.43114272-17.34681283 26.14967308 10.74466765 5.30760691 28.73874963 24.72568098 28.73874963 24.72568098 11.3919368-16.05227457-3.23634569-48.1568237-11.3919368-50.87535406z" fill="#FFFFFF" p-id="5949"></path><path d="M777.48325136 240.7942321c8.02613728-2.07126124 53.59388445 45.56774717 47.50955456 47.50955457 77.6722963-85.05116445 146.54173235-82.9799032 146.54173235-85.05116445-20.0653432-51.5226232-113.14264494-74.95376592-113.14264494-74.95376592-140.5868563-25.37295013-158.7103921 37.54160987-162.72346075 39.48341728-162.72346075-118.45025185-317.29133037-47.50955457-315.34952295-49.5808158 105.11650765 23.43114272 75.60103506 108.48230717 75.60103506 108.48230716s-14.11046717 85.05116445-111.07138371 73.01195853c-97.09037037-12.03920592-81.03809581-120.52151309-81.0380958-120.5215131-97.7376395 78.96683457-186.80187259 241.04302617-186.8018726 241.04302616 10.09739852 16.05227457 119.09752098 53.59388445 154.56786964 55.53569186 210.23301531-4.01306864 325.31746765-217.61188347 329.33053629-217.61188345 44.79102419 73.01195852 33.52854124 148.61299358-12.03920593 187.44914173-48.54518518 41.55467852-186.41351111 44.14375506-186.4135111 44.14375506 20.0653432 52.16989235 161.29946864 30.81001086 161.29946865 30.81001086C519.09341235 592.13191902 360.38302024 615.56306173 354.42814419 615.56306173 519.09341235 688.57502025 655.6672 539.96202667 657.60900741 537.89076543c-9.32067555 71.58796642-112.49537581 117.15571358-114.43718322 117.15571359 12.03920592 56.95968395-99.03217778 153.9206005-140.58685629 145.8944632-101.10343902-43.49648592-170.74959803 2.07126124-170.74959804 2.07126125l93.07730174 25.37295011s97.09037037 10.09739852 101.10343901 49.58081581 37.54160987 86.99297185 41.55467853 86.99297185c97.09037037-70.94069728 47.50955457-133.85525728 47.50955456-133.85525729s184.73061136-73.01195852 287.9053116-271.07631408-33.52854124-317.29133037-25.50240394-319.23313777zM730.62096592 181.89274075c-31.45728-8.02613728-7.37886815-24.07841185 18.1235358-37.54160989 86.99297185-28.73874963 129.84218864 6.73159902 127.90038124 6.73159901-100.45616987-41.55467852-146.02391703 30.81001086-146.02391704 30.81001088z" fill="#D8D8D8" p-id="5950"></path><path d="M331.64427061 613.62125431c98.38490864-27.44421136 117.80298272-50.22808494 117.80298272-50.22808492s-91.0060405-56.18296098-139.93958717-56.95968396c-48.80409283-0.64726914-111.84810667 68.22216691-92.43003258 105.76377679 61.62002173 132.56071902 178.77573531 147.96572445 178.7757353 147.96572445 89.06423309-8.02613728 107.05831506-86.99297185 109.1295763-91.0060405-107.70558419 2.07126124-169.97287506-49.45136197-173.33867457-55.53569186z m-80.26137283 35.47034866c10.09739852-26.79694222 70.94069728-79.6141037 70.94069728-79.61410372-10.74466765-10.09739852-70.94069728-29.51547259-70.94069728-29.51547258 14.11046717-6.08432987 81.03809581 20.71261235 81.0380958 20.71261235 60.19602963-32.75181827 66.2803595-16.6995437 66.2803595-16.69954371-40.90740939 9.45012939-147.31845531 105.11650765-147.3184553 105.11650766z" fill="#FFFFFF" p-id="5951"></path><path d="M331.64427061 613.62125431c98.38490864-27.44421136 117.80298272-50.22808494 117.80298272-50.22808492s-91.0060405-56.18296098-139.93958717-56.95968396c-48.80409283-0.64726914-93.72457086 66.2803595-90.35877135 91.65330963 9.32067555 19.41807408 19.41807408 36.76488691 30.16274172 51.52262321 12.03920592-27.44421136 70.29342815-77.6722963 70.29342816-77.6722963-10.74466765-10.09739852-70.94069728-29.51547259-70.94069728-29.51547258 14.11046717-6.08432987 81.03809581 20.71261235 81.03809579 20.71261234 60.19602963-32.75181827 66.2803595-16.6995437 66.28035952-16.6995437-38.83614815 9.32067555-133.85525728 93.07730173-146.54173236 104.4692385 62.91456 84.40389531 145.8944632 95.66637827 145.89446322 95.66637829 89.06423309-8.02613728 107.05831506-73.01195852 109.12957628-77.02502717-107.18776889 1.68289975-169.45505975-49.83972347-172.82085925-55.92405334z" fill="#FFFFFF" p-id="5952"></path><path d="M839.75054222 292.96412445c63.56182914-61.62002173 163.37072987-74.95376592 163.37072987-74.95376593s-6.08432987-74.95376592-101.10343901-107.05831505c-137.2210568-43.49648592-212.82209185 20.0653432-212.82209185 20.0653432S517.79887408 0.39847506 346.40200691 89.46270815 54.48362666 421.51177482 54.48362666 421.51177482c65.63309037 81.03809581 234.31142717 82.9799032 234.31142717 82.33263407-20.0653432 4.66033778-51.5226232 28.73874963-49.58081581 28.73874963-71.58796642-21.35988148-236.25323457 74.95376592-210.88028444 141.88139457 26.14967309 66.92762864 258.38983902 49.58081581 258.389839 49.5808158s47.50955457 35.47034864 37.54160989 35.47034864c-124.53458173-9.32067555-144.59992494 55.53569185-144.59992495 57.60695308 32.10454914 0 222.91949037 51.5226232 222.91949038 51.52262322s32.10454914 136.57378765 61.62002173 138.51559506c30.16274173 2.07126124 55.53569185-49.58081581 55.53569185-51.5226232 37.54160987-37.54160987 28.0914805-116.50844445 24.07841185-120.5215131 18.12353581-10.09739852 101.10343902-35.47034864 246.35063309-188.09641086 144.59992494-151.84933925 55.66514569-350.04314864 49.5808158-354.05621728zM31.82920691 665.14387753c0-81.03809581 186.15460347-141.23412543 186.80187259-124.53458172-24.07841185 57.60695309 0 97.09037037 0 97.09037036l-37.54160987 33.52854124 51.5226232 2.07126123s30.16274173 41.55467852 32.10454914 43.49648593c-132.56071902 11.9097521-228.87436642-14.7577363-232.88743506-51.65207704z m191.46221037-13.98101334v8.67340642h-8.02613728l8.02613728-8.67340642z m204.79595457 121.81605136c-2.07126124 6.08432987-20.71261235 12.03920592-20.71261235 12.03920593l-4.01306864-12.03920593s26.66748839-6.08432987 24.72568099 0z" p-id="5953"></path><path d="M361.80701235 120.91998815c-48.80409283 0-88.41696395 37.54160987-88.41696396 82.97990321s39.48341728 82.9799032 88.41696396 82.97990321 88.41696395-37.54160987 88.41696395-82.97990321-39.61287111-82.9799032-88.41696395-82.97990321z m0 142.65811754c-12.03920592 0-23.43114272-3.3657995-32.75181827-10.09739852 11.3919368 0 20.71261235-9.32067555 20.71261234-20.71261235s-9.32067555-20.71261235-20.71261234-20.71261235c-10.74466765 0-19.41807408 8.02613728-20.71261236 18.1235358-4.01306864-8.02613728-6.08432987-16.6995437-6.08432987-26.14967309 0-32.75181827 26.79694222-59.5487605 59.5487605-59.54876049h6.08432987c-11.3919368 6.08432987-19.41807408 18.12353581-19.41807407 32.10454914 0 20.0653432 16.6995437 36.76488691 36.76488691 36.76488692 16.05227457 0 30.16274173-10.74466765 34.82307951-24.725681 1.29453827 4.66033778 2.07126124 10.09739852 2.07126123 14.7577363-0.77672297 33.39908741-27.57366518 60.19602963-60.32548345 60.19602964z m-22.13660445 204.79595456s28.0914805 18.12353581 75.60103506 0l-18.1235358-25.37295012c0.12945383-0.12945383-57.47749925 25.37295013-57.47749926 25.37295012z m115.8611753-63.56182914c-14.11046717 14.11046717-50.22808494 31.45728-50.22808493 31.45728s52.16989235 29.51547259 63.56182914 22.13660444c12.03920592-8.15559111-9.32067555-51.65207703-13.33374421-53.59388444z m43.49648594-33.52854124c-12.03920592 11.3919368-37.54160987 29.51547259-37.54160989 29.5154726l47.50955458 35.47034864c10.09739852-11.3919368-1.94180741-64.98582124-9.96794469-64.98582124z m22.13660444-31.45728c-2.07126124 9.32067555-13.33374419 23.43114272-17.34681284 26.1496731 10.74466765 5.30760691 28.73874963 24.72568098 28.73874962 24.72568098 11.26248297-16.05227457-3.3657995-48.1568237-11.39193678-50.87535408z" fill="#FFFFFF" p-id="5954"></path><path d="M778.1305205 238.07570173c8.02613728-2.07126124 53.59388445 45.56774717 47.50955456 47.50955457 77.6722963-85.05116445 147.31845531-82.9799032 147.3184553-85.05116445-20.0653432-51.5226232-113.14264494-74.95376592-113.14264493-74.95376593-141.23412543-25.37295013-159.35766124 37.54160987-163.37072988 39.48341728-162.72346075-119.09752098-317.9385995-48.1568237-315.99679209-50.22808493 105.11650765 23.43114272 75.60103506 109.1295763 75.60103505 109.1295763s-14.11046717 85.05116445-111.0713837 73.01195852c-97.09037037-12.03920592-81.68536494-120.52151309-81.68536495-120.52151309C165.68446419 255.55196839 76.62023111 417.49870617 76.62023111 417.49870617c10.09739852 16.05227457 119.09752098 53.59388445 155.34459259 55.53569186 210.23301531-4.01306864 325.9647368-217.61188347 329.3305363-217.61188346 44.79102419 73.01195852 33.52854124 149.26026272-12.03920592 188.09641086-48.93354667 41.55467852-186.80187259 44.27320889-186.8018726 44.27320888 20.0653432 52.16989235 161.94673778 30.81001086 161.94673777 30.81001087-4.66033778 70.94069728-164.01799902 95.01910914-169.32560592 95.01910913 165.31253728 73.01195852 301.88632494-75.60103506 303.95758617-77.67229628-10.09739852 72.23523555-113.14264494 117.80298272-115.08445234 117.80298272 12.03920592 57.60695309-99.03217778 153.9206005-141.23412544 146.54173234-101.10343902-43.49648592-170.74959803 2.07126124-170.74959802 2.07126122l93.72457087 25.37295014s97.7376395 10.09739852 101.10343901 49.5808158c4.01306864 39.48341728 37.54160987 86.99297185 41.55467851 86.99297185 97.7376395-70.94069728 47.50955457-134.50252642 47.50955457-134.50252641s184.73061136-73.01195852 288.55258075-271.72358322-34.30526419-318.58586864-26.27912691-320.00986074z m-46.86228544-59.54876049c-32.10454914-8.02613728-7.37886815-24.07841185 18.1235358-37.54160988 87.64024098-28.73874963 130.48945778 6.73159902 128.54765037 6.73159901-100.45616987-41.55467852-146.67118617 30.81001086-146.67118617 30.81001087z" fill="#D8D8D8" p-id="5955"></path><path d="M331.64427061 611.67944691c98.38490864-27.44421136 118.45025185-50.22808494 118.45025186-50.22808494s-91.65330963-56.18296098-139.93958717-57.60695308c-48.80409283-0.64726914-112.49537581 68.22216691-92.43003258 105.7637768 61.62002173 132.56071902 178.77573531 148.61299358 178.7757353 148.61299356 89.71150222-8.02613728 107.05831506-86.99297185 109.12957629-91.00604049-108.35285333 1.94180741-170.62014419-49.58081581-173.9859437-55.53569185z m-80.26137283 35.47034864c10.09739852-26.79694222 70.94069728-80.39082667 70.94069728-80.39082666-10.74466765-10.09739852-70.94069728-29.51547259-70.94069728-29.51547259 14.11046717-6.08432987 81.68536494 20.71261235 81.68536494 20.71261234 60.97275259-32.75181827 66.2803595-16.6995437 66.2803595-16.6995437-41.55467852 10.09739852-147.96572445 105.89323061-147.96572444 105.89323061z" fill="#9A6E38" p-id="5956"></path><path d="M331.64427061 611.67944691c98.38490864-27.44421136 118.45025185-50.22808494 118.45025186-50.22808494s-91.65330963-56.18296098-139.93958717-57.60695308c-48.80409283-0.64726914-94.37184 66.2803595-91.00604049 91.65330963 9.32067555 19.41807408 19.41807408 36.76488691 30.16274172 51.52262321 12.03920592-27.44421136 70.29342815-78.31956543 70.29342816-78.31956543-10.74466765-10.09739852-70.94069728-29.51547259-70.94069728-29.5154726 14.11046717-6.08432987 81.68536494 20.71261235 81.68536494 20.71261235 60.97275259-32.75181827 66.2803595-16.6995437 66.2803595-16.6995437-38.83614815 9.32067555-133.85525728 93.07730173-146.54173235 104.46923851 62.91456 85.05116445 146.54173235 96.44310124 146.54173235 96.44310124 89.71150222-8.02613728 107.05831506-73.01195852 109.1295763-77.02502716-108.48230717 2.07126124-170.74959803-49.45136197-174.11539754-55.40623803z" fill="#FCB316" p-id="5957"></path></svg>`;
  426. } else if (is_huya) {
  427. logo = `<svg t="1694231489964" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4471" width="40" height="40"><path d="M516.032 156.352a425.408 425.408 0 0 1 162.624 22.4 388.096 388.096 0 0 1 124.224 69.632 300.16 300.16 0 0 1 78.336 99.904c12.032 25.28 20.096 52.544 23.424 80.384 2.496 21.184 2.496 43.136-4.352 63.552a104.128 104.128 0 0 1-36.928 50.816c-22.4 16.896-49.28 26.496-76.16 33.408-45.568 11.328-92.416 15.552-139.072 19.392-49.664 3.776-99.392 6.976-148.992 11.52-33.472 2.752-66.944 5.888-100.544 7.296a554.24 554.24 0 0 1-90.432-2.112c-26.304-3.328-52.928-9.728-75.584-24.064a102.592 102.592 0 0 1-39.168-45.056c-11.136-24.704-13.504-52.352-12.416-79.168 1.728-58.496 22.848-115.84 57.728-162.624 42.048-56.896 102.336-99.008 168.576-122.944a394.816 394.816 0 0 1 108.736-22.336z m-32.576 101.312a24.32 24.32 0 0 0-13.888 6.272 51.072 51.072 0 0 0-10.624 18.56 217.344 217.344 0 0 0-10.24 53.12c-2.432 30.592-1.664 61.44 2.496 91.84 2.752 18.816 6.592 37.76 14.592 55.168 3.968 8.064 9.088 16.512 17.6 20.288 8.768 3.328 18.368 1.92 27.264 0.064 19.072-4.352 37.056-12.48 54.4-21.44a447.36 447.36 0 0 0 65.92-42.304c16.448-12.992 32.576-26.88 45.056-43.904 5.632-8.192 11.648-18.304 8.384-28.608-4.16-11.584-13.312-20.544-22.144-28.8a336.704 336.704 0 0 0-55.232-38.912 399.808 399.808 0 0 0-73.152-33.536c-16.192-5.056-33.216-9.92-50.432-7.808m212.544 473.28c19.2-7.424 37.952-16.64 54.016-29.632 0.768 26.112-5.568 52.224-16.384 75.904l-1.024-1.024c-7.936-8.384-16.896-15.872-23.68-25.344a189.312 189.312 0 0 1-12.928-19.904m-285.248 46.912c-1.216-10.624-3.584-21.568-0.96-32.128 20.032 6.144 40.768 9.728 61.632 11.712-12.544 21.952-32.192 38.976-53.632 51.968a208.96 208.96 0 0 0-1.664-2.176c-0.576-9.984-4.224-19.456-5.376-29.376" fill="#F6F8F9" p-id="4472"></path><path d="M553.664 65.984c22.784-23.488 51.072-42.752 83.136-50.56 5.76-1.6 11.328 1.6 16.832 2.944 42.176 14.272 79.68 39.744 112.256 69.632a486.848 486.848 0 0 1 85.824 107.52c1.536 2.496 3.136 5.056 4.288 7.808-31.616-34.688-62.4-70.4-98.496-100.608a399.36 399.36 0 0 0-99.008-60.16c-4.288-1.6-8.192-4.544-12.864-4.8-32.192 2.88-62.976 14.272-91.968 28.224M194.176 22.72c59.648 7.168 118.912 22.656 171.904 51.456 3.84 2.24 8 4.096 11.584 6.848-8.384-1.92-16.384-5.376-24.64-7.68C308.928 60.16 262.976 50.944 216.768 52.416c-3.584 0.256-7.872-0.32-10.432 2.88-14.08 14.208-24.256 31.616-33.728 49.088a802.56 802.56 0 0 0-49.664 119.488c-3.712 10.752-6.464 21.76-9.984 32.576 6.144-74.432 31.36-146.496 67.712-211.392 4.288-7.616 8.64-15.104 13.504-22.336M406.464 151.68c99.456-33.792 210.944-27.776 307.584 12.672 39.936 16.768 77.44 39.488 110.144 67.968a323.328 323.328 0 0 1 81.408 106.944c10.944 23.552 18.88 48.576 23.104 74.176 5.696 33.408 5.056 69.12-9.344 100.416-2.24 4.736-4.352 9.6-7.872 13.568-2.368 6.08-7.04 10.88-11.008 15.936-24.128 28.288-59.136 44.544-94.208 54.72-50.56 14.4-103.232 18.944-155.456 23.36-36.48 2.816-73.024 5.184-109.44 8.128-63.168 4.928-126.272 12.352-189.696 11.52a384.896 384.896 0 0 1-77.056-8.384 177.28 177.28 0 0 1-56.192-22.528 127.552 127.552 0 0 1-45.44-49.984c-13.76-26.752-18.304-57.28-18.048-87.104 0.192-63.616 20.992-126.72 57.408-178.816 46.72-67.136 116.864-116.608 194.112-142.592z m109.568 4.672a394.816 394.816 0 0 0-108.736 22.336c-66.24 23.936-126.592 66.048-168.576 122.944a288.896 288.896 0 0 0-57.728 162.624c-1.088 26.816 1.28 54.464 12.48 79.232 8.192 18.432 21.952 34.304 39.104 44.992 22.656 14.336 49.28 20.672 75.584 24 30.016 3.52 60.352 3.584 90.432 2.112 33.6-1.344 67.072-4.48 100.544-7.232 49.6-4.608 99.264-7.744 148.928-11.52 46.656-3.84 93.568-8.064 139.072-19.392 26.88-6.912 53.76-16.512 76.16-33.408 17.024-12.736 30.4-30.528 36.928-50.816 6.912-20.416 6.912-42.368 4.352-63.552a261.504 261.504 0 0 0-23.424-80.384 300.992 300.992 0 0 0-78.336-99.904 388.096 388.096 0 0 0-124.224-69.632 426.176 426.176 0 0 0-162.56-22.4" fill="#954607" p-id="4473"></path><path d="M483.456 257.664c17.152-2.048 34.176 2.752 50.432 7.808 25.536 8.448 49.856 20.16 73.152 33.536 19.52 11.328 38.4 23.936 55.232 38.976 8.832 8.256 17.92 17.152 22.144 28.8 3.264 10.304-2.752 20.416-8.384 28.608-12.416 17.024-28.544 30.912-45.056 43.904a447.36 447.36 0 0 1-65.92 42.304 238.272 238.272 0 0 1-54.4 21.44c-8.896 1.792-18.496 3.2-27.2-0.192-8.512-3.776-13.632-12.224-17.6-20.288-8-17.344-11.84-36.352-14.592-55.104a428.608 428.608 0 0 1-2.496-91.904c1.6-17.984 4.096-36.032 10.24-53.12a49.536 49.536 0 0 1 10.624-18.496 24.128 24.128 0 0 1 13.824-6.272m430.016 270.272c1.344-0.96 2.56-2.624 4.416-2.56a404.8 404.8 0 0 1 104.256 9.472c0.768 5.376 0.96 10.88 1.344 16.32a374.4 374.4 0 0 1-5.056 79.36A549.888 549.888 0 0 0 945.92 553.6c-10.56-8.896-20.8-18.304-32.448-25.664M40.576 611.2a415.36 415.36 0 0 1 138.752-37.76 185.792 185.792 0 0 1-9.152 9.664 527.04 527.04 0 0 0-109.824 168.448 327.232 327.232 0 0 1-52.544-121.92c10.496-6.912 21.504-12.992 32.768-18.432m794.944 40.32c25.408 1.472 50.56 7.424 73.984 17.28 27.136 11.264 51.776 27.84 73.984 46.912 1.984 1.856 4.608 3.584 5.12 6.528a328 328 0 0 1-82.432 102.912c-4.928-25.6-10.24-51.264-18.432-76.096-11.584-35.136-26.944-70.016-52.224-97.536m-87.936 10.112a12.992 12.992 0 0 1 19.712 5.376c3.008 8.576-1.664 17.408-6.72 24.128 3.968 34.112-5.76 68.096-19.584 98.944a158.144 158.144 0 0 1-65.408-31.232c-6.272-4.608-11.456-10.496-17.152-15.68a575.552 575.552 0 0 1-174.4 15.488c-15.168 28.544-40.832 50.048-68.8 65.408a206.08 206.08 0 0 1-45.504-96.576c-6.08-4.864-12.416-10.24-15.232-17.728-1.024-5.312 3.52-10.112 8.32-11.712 4.864-2.048 11.776-3.072 15.36 1.792 6.464 8.192 16.32 12.48 25.728 16.384 29.568 11.456 61.44 15.488 92.928 17.152A549.184 549.184 0 0 0 640 720.768c27.712-6.464 55.296-15.104 79.872-29.696 8-4.928 16.192-10.176 21.696-17.92 1.536-3.968 1.984-8.96 6.016-11.52z m-51.584 69.312c-8.32 3.2-16.896 5.696-25.28 8.64 17.28 16.896 38.464 30.336 61.952 36.608l1.024 1.024c10.816-23.68 17.152-49.792 16.384-75.904a200.512 200.512 0 0 1-54.08 29.632z m-313.472 4.032c6.336 25.984 17.024 51.264 33.664 72.32l1.664 2.176c21.44-12.992 41.152-30.016 53.632-51.968a314.688 314.688 0 0 1-61.632-11.712 186.688 186.688 0 0 1-27.328-10.816m-202.176 4.544a240.384 240.384 0 0 1 109.248-55.36 222.72 222.72 0 0 0-24.128 50.24c-17.088 50.688-21.632 104.64-21.632 157.824a449.728 449.728 0 0 1-125.888-76.864 288 288 0 0 1 62.4-75.84" fill="#954607" p-id="4474"></path><path d="M553.664 65.984c28.928-13.952 59.776-25.344 92.032-28.096 4.608 0.32 8.576 3.264 12.864 4.8a396.288 396.288 0 0 1 99.008 60.16c36.096 30.208 66.88 65.92 98.496 100.608 10.048 10.56 20.864 20.352 30.528 31.232 68.416 74.304 117.248 168.064 132.416 268.416 2.176 15.936 4.224 32 4.48 48.064-0.384-5.44-0.64-10.88-1.344-16.32a405.056 405.056 0 0 0-104.256-9.472c-1.856-0.064-3.072 1.6-4.416 2.56 11.648 7.36 21.888 16.768 32.448 25.6 26.752 23.104 50.688 49.216 72.512 76.928a324.672 324.672 0 0 1-29.824 91.776c-0.512-2.944-3.136-4.608-5.12-6.528a277.184 277.184 0 0 0-73.984-46.912 225.28 225.28 0 0 0-73.984-17.28c25.28 27.52 40.64 62.4 52.224 97.536 8.192 24.832 13.568 50.432 18.432 76.096l0.064 0.192c-49.408 41.472-108.736 69.824-170.304 88.128-80.704 23.936-165.504 31.616-249.408 28.928-82.88-3.072-165.952-18.112-242.752-49.856v-0.256c0-53.184 4.608-107.136 21.632-157.824 5.888-17.664 14.08-34.56 24.128-50.24a240.384 240.384 0 0 0-109.248 55.36 288.832 288.832 0 0 0-62.464 75.904 358.912 358.912 0 0 1-57.536-63.872 524.928 524.928 0 0 1 109.824-168.448c3.2-3.136 6.336-6.272 9.152-9.728a413.888 413.888 0 0 0-138.688 37.76c-11.264 5.44-22.272 11.52-32.768 18.432a404.48 404.48 0 0 1 4.736-176.896 491.392 491.392 0 0 1 100.416-196.288c3.52-10.816 6.272-21.824 9.984-32.576 13.696-40.896 29.568-81.216 49.664-119.488 9.472-17.472 19.648-34.944 33.728-49.088 2.496-3.2 6.784-2.624 10.432-2.88 46.208-1.472 92.16 7.744 136.256 20.928 8.32 2.304 16.256 5.696 24.64 7.68 1.664 0.512 3.328 1.6 5.12 0.832a494.336 494.336 0 0 1 167.488-15.552l3.392-0.32z m-147.2 85.696c-77.248 25.984-147.392 75.456-194.112 142.592a316.288 316.288 0 0 0-57.408 178.816c-0.256 29.824 4.288 60.352 18.048 87.104a128 128 0 0 0 45.44 49.984c17.024 11.072 36.48 17.856 56.192 22.528 25.216 5.824 51.2 7.744 77.056 8.384 63.424 0.832 126.592-6.592 189.696-11.52 36.48-2.944 72.96-5.312 109.44-8.128 52.224-4.416 104.896-8.896 155.456-23.36 35.072-10.176 70.08-26.432 94.208-54.72 3.968-5.056 8.64-9.856 11.008-15.936 3.52-3.968 5.632-8.832 7.872-13.568 14.336-31.232 14.976-67.008 9.344-100.416a286.976 286.976 0 0 0-23.104-74.176 323.328 323.328 0 0 0-81.408-106.944 408.256 408.256 0 0 0-110.144-67.968c-96.64-40.448-208.128-46.528-307.584-12.672z m341.12 509.952c-4.032 2.56-4.48 7.552-6.144 11.584-5.504 7.744-13.76 12.992-21.696 17.92-24.576 14.592-52.16 23.232-79.872 29.696a543.488 543.488 0 0 1-143.168 12.608c-31.488-1.6-63.36-5.696-92.928-17.152-9.408-3.904-19.264-8.192-25.728-16.384-3.584-4.864-10.496-3.84-15.36-1.792-4.8 1.6-9.28 6.4-8.32 11.712 2.88 7.488 9.152 12.8 15.232 17.728 6.528 35.392 21.952 69.248 45.504 96.576 28.032-15.36 53.632-36.864 68.8-65.408a577.408 577.408 0 0 0 174.4-15.488c5.696 5.248 10.816 11.072 17.152 15.68 18.944 15.424 41.6 25.92 65.408 31.232 13.888-30.848 23.616-64.832 19.584-98.944 5.056-6.72 9.792-15.616 6.72-24.128-2.752-7.68-13.248-10.56-19.584-5.44" fill="#F49F17" p-id="4475"></path><path d="M670.72 739.648c8.384-2.944 16.96-5.44 25.28-8.64 4.032 6.784 8.064 13.632 12.992 19.904 6.72 9.472 15.68 16.96 23.68 25.344a143.232 143.232 0 0 1-61.952-36.608z m-288.192-4.672c8.768 4.352 17.984 7.872 27.328 10.752-2.688 10.56-0.256 21.504 0.96 32.128 1.088 9.984 4.8 19.456 5.44 29.44a186.56 186.56 0 0 1-33.728-72.32z" fill="#F3EBDE" p-id="4476"></path></svg>`;
  428. } else if (is_douyin) {
  429. logo = `<svg t="1694230416862" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4262" width="40" height="40"><path d="M230.4 51.2h563.2C892.416 51.2 972.8 131.584 972.8 230.4v563.2C972.8 892.416 892.416 972.8 793.6 972.8h-563.2C131.584 972.8 51.2 892.416 51.2 793.6v-563.2C51.2 131.584 131.584 51.2 230.4 51.2z" fill="#170B1A" p-id="4263"></path><path d="M511.488 323.072c0.512-57.856 0-115.712 0.512-173.568h118.272c-0.512 10.24 1.024 20.48 2.56 30.208h-87.04v470.016c0.512 19.968-4.608 39.936-14.336 57.344-15.36 26.624-44.032 45.056-74.752 47.616-19.456 1.536-39.424-2.048-56.832-11.776a97.570133 97.570133 0 0 1-33.28-29.696c30.208 16.896 69.632 15.36 98.816-3.584 28.16-17.408 46.592-50.176 46.592-83.968-0.512-100.864-0.512-201.728-0.512-302.592z m195.072-33.28c16.384 10.24 34.816 18.432 53.76 22.528 11.264 2.56 22.528 3.584 34.304 3.584v26.624c-33.792-7.68-65.024-26.624-88.064-52.736z" fill="#25F4EE" p-id="4264"></path><path d="M298.496 437.248c42.496-26.624 94.208-37.376 143.36-30.208v28.16c-13.312 0.512-26.112 2.048-39.424 4.608-31.744 6.656-61.952 19.968-88.064 39.424-28.16 20.992-49.664 49.664-64.512 81.408-14.336 30.208-21.504 63.488-20.992 97.28 0 36.864 10.24 72.704 27.648 104.96 8.192 14.848 17.408 29.184 29.696 40.96-25.088-17.408-46.08-40.96-61.44-67.584-20.992-35.328-31.232-76.8-30.208-118.272 1.536-37.888 12.288-75.264 32.256-108.032 17.408-29.184 42.496-54.784 71.68-72.704z" fill="#25F4EE" p-id="4265"></path><path d="M545.792 179.712h87.552c3.072 16.896 9.216 32.768 16.896 48.128 12.288 23.552 29.696 44.544 52.224 58.368a11.946667 11.946667 0 0 1 3.584 3.584 168.0384 168.0384 0 0 0 88.576 52.736c0.512 30.72 0 61.952 0 92.672a277.333333 277.333333 0 0 1-162.816-51.712c0 73.728 0 147.456 0.512 221.184 0 9.728 0.512 19.456 0 29.696-2.56 35.84-13.824 71.168-31.744 102.4-15.36 27.136-36.352 51.2-61.44 69.632-32.256 24.064-72.192 37.376-112.128 38.4-20.48 0.512-40.96-0.512-60.928-5.12-28.16-6.144-54.784-17.92-78.336-34.304l-1.536-1.536c-11.776-11.776-21.504-26.112-29.696-40.96-17.408-31.744-27.648-68.096-27.648-104.96-0.512-33.28 6.656-67.072 20.992-97.28 14.848-31.744 36.864-60.416 64.512-81.408 26.112-19.456 56.32-32.768 88.064-39.424 12.8-2.56 26.112-4.096 39.424-4.608 0.512 11.776 0 23.552 0.512 34.816v59.904c-14.848-5.12-31.232-5.12-46.592-1.536-18.432 4.096-35.84 12.288-50.176 24.576-8.704 7.68-16.384 16.896-21.504 27.136-9.216 17.408-12.288 37.888-10.24 57.344 2.048 18.944 10.24 37.376 22.528 51.712 8.192 10.24 18.944 17.92 29.696 25.088 8.704 12.288 19.968 22.528 33.28 29.696 17.408 9.216 37.376 13.312 56.832 11.776 30.72-2.048 59.392-20.992 74.752-47.616 9.728-17.408 14.848-37.376 14.336-57.344 1.024-157.696 0.512-314.368 0.512-471.04z" fill="#FFFFFF" p-id="4266"></path><path d="M633.344 179.712c10.24 0.512 20.48 0 31.232 0 0 34.304 10.752 68.608 30.72 96.768 2.56 3.584 5.12 6.656 7.68 9.728-22.528-13.824-40.448-34.816-52.224-58.368-7.68-14.848-13.824-31.232-17.408-48.128z m161.28 162.816c11.264 2.56 22.528 3.584 34.304 3.584v119.296c-58.368 0.512-116.736-18.944-164.352-53.248v236.544c0.512 17.92-1.024 35.84-5.12 53.248-11.264 53.248-43.008 101.376-87.04 132.608-23.552 16.896-50.176 28.672-77.824 34.816-33.792 7.68-69.12 7.168-102.4-1.536-39.424-10.24-76.288-32.256-103.936-62.464 23.552 16.896 50.176 28.16 78.336 34.304 19.968 4.608 40.448 5.632 60.928 5.12 39.936-1.024 79.872-14.336 112.128-38.4 25.088-18.432 45.568-42.496 61.44-69.632 17.92-31.232 29.184-66.56 31.744-102.4 0.512-9.728 0.512-19.456 0-29.696-0.512-73.728-0.512-147.456-0.512-221.184a277.333333 277.333333 0 0 0 162.816 51.712c-0.512-30.72 0-61.952-0.512-92.672z" fill="#FE2C55" p-id="4267"></path><path d="M442.368 434.688c11.264 0 23.04 0.512 34.304 2.048v122.368c-16.384-5.632-34.816-6.144-51.712-2.048-32.256 7.168-59.392 31.744-70.656 62.976-11.264 30.72-6.656 66.56 12.8 92.672-11.264-6.656-21.504-14.848-29.696-25.088-12.288-14.336-20.48-32.768-22.528-51.712-2.048-19.456 1.024-39.936 10.24-57.344 5.12-10.24 12.8-19.456 21.504-27.136 14.336-12.288 32.256-19.968 50.176-24.576 15.36-3.584 31.744-3.584 46.592 1.536v-59.904c-1.024-10.24-0.512-22.016-1.024-33.792z" fill="#FE2C55" p-id="4268"></path></svg>`;
  430. } else if (is_bilibili) {
  431. logo = `<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2753" width="24" height="24"><path d="M306.005333 117.632L444.330667 256h135.296l138.368-138.325333a42.666667 42.666667 0 0 1 60.373333 60.373333L700.330667 256H789.333333A149.333333 149.333333 0 0 1 938.666667 405.333333v341.333334a149.333333 149.333333 0 0 1-149.333334 149.333333h-554.666666A149.333333 149.333333 0 0 1 85.333333 746.666667v-341.333334A149.333333 149.333333 0 0 1 234.666667 256h88.96L245.632 177.962667a42.666667 42.666667 0 0 1 60.373333-60.373334zM789.333333 341.333333h-554.666666a64 64 0 0 0-63.701334 57.856L170.666667 405.333333v341.333334a64 64 0 0 0 57.856 63.701333L234.666667 810.666667h554.666666a64 64 0 0 0 63.701334-57.856L853.333333 746.666667v-341.333334A64 64 0 0 0 789.333333 341.333333zM341.333333 469.333333a42.666667 42.666667 0 0 1 42.666667 42.666667v85.333333a42.666667 42.666667 0 0 1-85.333333 0v-85.333333a42.666667 42.666667 0 0 1 42.666666-42.666667z m341.333334 0a42.666667 42.666667 0 0 1 42.666666 42.666667v85.333333a42.666667 42.666667 0 0 1-85.333333 0v-85.333333a42.666667 42.666667 0 0 1 42.666667-42.666667z" p-id="2754" fill="currentColor"></path></svg>`;
  432. }
  433. return logo;
  434. };
  435. const DARK_THEME_KEY = "wx_dark_theme_key";
  436. const THEME_IS_AUTO = "wx_dark_theme_is_auto";
  437. const THEME_TYPE_KEY = "wx_dark_theme_type_key";
  438. const DARK_COLOR_VARIABLE = "--w-bg-darker";
  439. const theme = {
  440. dark: "dark",
  441. light: "light"
  442. };
  443. const DARK_THEME_TYPE = {
  444. "DEFAULT": "DEFAULT",
  445. "ORDINARY": "ORDINARY",
  446. "BLACK0": "BLACK0",
  447. "BLACK1": "BLACK1",
  448. "BLACK2": "BLACK2",
  449. "BLACK3": "BLACK3"
  450. };
  451. const DARK_TYPE = {
  452. [DARK_THEME_TYPE.DEFAULT]: {
  453. "name": "默认",
  454. "color": "#343b44"
  455. },
  456. [DARK_THEME_TYPE.ORDINARY]: {
  457. "name": "普通",
  458. "color": "#37404c"
  459. },
  460. [DARK_THEME_TYPE.BLACK0]: {
  461. "name": "深黑1",
  462. "color": "#22272e"
  463. },
  464. [DARK_THEME_TYPE.BLACK1]: {
  465. "name": "深黑2",
  466. "color": "#232222"
  467. },
  468. [DARK_THEME_TYPE.BLACK2]: {
  469. "name": "深黑3",
  470. "color": "#171514"
  471. },
  472. [DARK_THEME_TYPE.BLACK3]: {
  473. "name": "深黑4",
  474. "color": "#121212"
  475. }
  476. };
  477. const isDark = () => wls.getItem(DARK_THEME_KEY) === theme.dark || wls.getItem(DARK_THEME_KEY) === null;
  478. const isAutoDark = () => getLocalStore(THEME_IS_AUTO, Boolean.name, false) || wls.getItem(THEME_IS_AUTO) === null;
  479. const LOCAL_THEME_TYPE = wls.getItem(THEME_TYPE_KEY) === null ? DARK_THEME_TYPE.DEFAULT : wls.getItem(THEME_TYPE_KEY);
  480. const darkColor = () => {
  481. let type = wls.getItem(THEME_TYPE_KEY) === null ? DARK_THEME_TYPE.DEFAULT : wls.getItem(THEME_TYPE_KEY);
  482. let l1 = DARK_TYPE[type];
  483. return (l1 == null ? void 0 : l1.color) ?? "#121212";
  484. };
  485. const updateStyleColor = (key, value) => document.documentElement.style.setProperty(key, value);
  486. const updateDarkStyleType = (type) => {
  487. addLocalStore(THEME_TYPE_KEY, type, String.name, false);
  488. updateStyleColor(DARK_COLOR_VARIABLE, DARK_TYPE[type].color);
  489. log("主题切换成功!", "你选择主题是", DARK_TYPE[type].name, "颜色是", DARK_TYPE[type].color, "darkColor", darkColor());
  490. };
  491. const toggleColorMode = (event) => {
  492. if (!event) {
  493. warn("event is not allow null !");
  494. return;
  495. }
  496. try {
  497. const isAppearanceTransition = (document == null ? void 0 : document.startViewTransition) && !window.matchMedia("(prefers-reduced-motion: reduce)").matches;
  498. if (!isAppearanceTransition) {
  499. log("不支持快照切换...,将使用普通方式切换主题");
  500. themeUpdate();
  501. return;
  502. }
  503. } catch (error2) {
  504. themeUpdate();
  505. return;
  506. }
  507. const x = event.clientX;
  508. const y = event.clientY;
  509. const endRadius = Math.hypot(
  510. Math.max(x, innerWidth - x),
  511. Math.max(y, innerHeight - y)
  512. );
  513. const transition = document.startViewTransition(() => {
  514. log("支持快照切换...");
  515. themeUpdate();
  516. });
  517. transition.ready.then(() => {
  518. const clipPath = [
  519. `circle(0px at ${x}px ${y}px)`,
  520. `circle(${endRadius}px at ${x}px ${y}px)`
  521. ];
  522. document.documentElement.animate(
  523. {
  524. clipPath: isDark() ? [...clipPath].reverse() : clipPath
  525. },
  526. {
  527. duration: 400,
  528. easing: "ease-out",
  529. pseudoElement: isDark() ? "::view-transition-old(root)" : "::view-transition-new(root)"
  530. }
  531. );
  532. });
  533. };
  534. const autoDarkType = () => {
  535. let hour = (/* @__PURE__ */ new Date()).getHours();
  536. let type = DARK_THEME_TYPE.DEFAULT;
  537. if (isAutoDark()) {
  538. if (hour >= 0 && hour <= 7) {
  539. type = DARK_THEME_TYPE.BLACK3;
  540. } else if (hour > 7 && hour <= 17)
  541. ;
  542. else if (hour > 17 && hour < 18) {
  543. type = DARK_THEME_TYPE.ORDINARY;
  544. } else if (hour >= 18 && hour < 19) {
  545. type = DARK_THEME_TYPE.BLACK0;
  546. } else if (hour >= 19 && hour < 20) {
  547. type = DARK_THEME_TYPE.BLACK1;
  548. } else if (hour >= 21 && hour < 22) {
  549. type = DARK_THEME_TYPE.BLACK2;
  550. } else if (hour >= 22 && hour <= 23) {
  551. type = DARK_THEME_TYPE.BLACK3;
  552. }
  553. }
  554. return type;
  555. };
  556. const autoDarkColor = () => {
  557. let color = "";
  558. if (isAutoDark()) {
  559. let type = autoDarkType();
  560. color = DARK_TYPE[type].color;
  561. } else {
  562. color = darkColor();
  563. }
  564. return color;
  565. };
  566. const isNeedDark = () => ((/* @__PURE__ */ new Date()).getHours() < 7 || (/* @__PURE__ */ new Date()).getHours() >= 17) && isAutoDark() || isDark();
  567. const updateDarkClass = () => {
  568. if (!support.supportTheme()) {
  569. return;
  570. }
  571. if (isNeedDark()) {
  572. updateStyleColor(DARK_COLOR_VARIABLE, autoDarkColor());
  573. }
  574. const classList = document.documentElement.classList;
  575. if (!classList.contains("dark") && isNeedDark()) {
  576. document.documentElement.classList.add("dark");
  577. } else if (classList.contains("dark") && !isNeedDark()) {
  578. document.documentElement.classList.remove("dark");
  579. }
  580. };
  581. const themeUpdate = () => {
  582. log(isNeedDark() ? "切换到白天" : "切换到黑夜");
  583. wls.setItem(DARK_THEME_KEY, isNeedDark() ? theme.light : theme.dark);
  584. updateDarkClass();
  585. };
  586. const themeOptions = () => {
  587. let str = "";
  588. let local_theme = LOCAL_THEME_TYPE;
  589. for (let [k, v] of Object.entries(DARK_TYPE)) {
  590. str += `<option value="${k}" ${local_theme == k ? "selected " : ""}>${v.name}</option>`;
  591. }
  592. return str;
  593. };
  594. const htmlTemplate = (isShowBg, isShowMenu, isShowFullScreen, isShowGift, isShowLogo, isMaxPro = true) => {
  595. return `<div class="m-container">
  596. <div class="m-container-box" id="m-container-box2">
  597. <div class="operation">
  598. ${support.supportSearch() ? `<input type="text" placeholder="房间号或者名称...">` : ``}
  599. ${support.supportAdd() ? `<button class="btn btn-primary add-room" title="复制地址栏房间号,手动添加房间,也可以通过点击房间名称添加">添加</button>` : ``}
  600. ${support.supportReset() ? `<button class="btn btn-success clear-room" title="重置表格数据">重置</button>` : ``}
  601. ${support.supportTheme() ? `<button class="btn btn-info room-theme" title="${isDark() ? "切换到白天模式" : "切换到黑夜模式"}">${isDark() ? "白天" : "黑夜"}</button>` : ``}
  602. ${support.supportBg() ? `<button class="btn btn-warning bg-btn" title="上传背景图">背景</button>` : ``}
  603. ${support.supportBg() ? `<input type="file" id="file">` : ``}
  604. ${support.supportBg() ? `<input type="checkbox" id="checkbox1" ${isShowBg ? "checked" : ""} class="checkbox" title="是否显示背景" />背景` : ``}
  605. ${support.supportMenu() ? `<input type="checkbox" id="checkbox2" ${isShowMenu ? "checked" : ""} class="checkbox" title="是否显示左侧菜单"/>菜单 ` : ``}
  606. ${` <input type="checkbox" id="checkbox3" ${isShowFullScreen ? "checked" : ""} class="checkbox" title="自动全屏"/>全屏`}
  607. ${support.supportGift() ? `<input type="checkbox" id="checkbox4" ${isShowGift ? "checked" : ""} class="checkbox" title="显示礼物栏"/>礼物` : ``}
  608. <input type="checkbox" id="checkbox5" ${isShowLogo ? "checked" : ""} class="checkbox" title="关闭或者显示插件Logo"/>logo
  609. ${`<input type="checkbox" id="checkbox6" ${isMaxPro ? "checked" : ""} class="checkbox" title="自动最高画质"/>画质`}
  610. ${support.supportTheme() ? `<input type="checkbox" id="m-dark-is-auto" ${isAutoDark() ? "checked" : ""} class="checkbox" title="自动调整主题,根据时间段改变"/>自动` : ``}
  611. ${support.supportTheme() ? `<select class="m-dark-type-select" id="m-dark-select">
  612. ${themeOptions()}
  613. </select>` : ``}
  614. <a class="m-link" href="https://greatest.deepsurf.us/zh-CN/scripts/449261-%E8%99%8E%E7%89%99%E7%9B%B4%E6%92%AD" target="_blank" title="更新、反馈">更新</a>
  615. <button class="btn btn-info btn-close-container" title="关闭" >关闭</button>
  616. </div>
  617. <table ${support.supportTable() ? "" : 'style="display:none !important;"'}>
  618. <thead>
  619. <th>序号</th>
  620. <th>名称</th>
  621. <th>房间号</th>
  622. <th>操作</th>
  623. </thead>
  624. <tbody>
  625. </tbody>
  626. </table>
  627. </div>
  628. </div>`;
  629. };
  630. class LivePlugin {
  631. constructor() {
  632. this.baseUrl = "/";
  633. this.key = "key";
  634. this.bg_key = "bg_key";
  635. this.bg_show_key = "bg_show_key";
  636. this.bg_is_first_key = "bg_is_first_key";
  637. this.full_screen_key = "full_screen_key";
  638. this.full_screen_class_or_id = "full_screen_button_class_or_id";
  639. this.full_button_tag_name = "div";
  640. this.full_screen_button = getLocalStore(this.full_screen_class_or_id, String.name, false) || this.full_screen_class_or_id;
  641. this.full_screen_text = "全屏";
  642. this.full_cancel_text = "退出全屏";
  643. this.full_screen_is_first_key = "full_screen_is_first_key";
  644. this.default_background_image = "https://cdn.staticaly.com/gh/wuxin0011/blog-resource@main/picgo/bg5.jpg";
  645. this.users = [];
  646. this.menu = null;
  647. this.menu_show_key = "menu_show_key";
  648. this.menu_is_first_key = "menu_is_first_key";
  649. this.tbody = null;
  650. this.m_container = null;
  651. this.gift_key = `${this.key}_gift`;
  652. this.gift_tool = null;
  653. this.gift_is_first_key = "gift_is_first_key";
  654. this.logo_btn = null;
  655. this.btn_logo_svg = iconLogo();
  656. this.logo_show_key = `${this.key}_logo_show`;
  657. this.header_logo = "none";
  658. this.button_name = "";
  659. this.is_new = false;
  660. this.btn_is_first_key = "btn_is_first_key";
  661. this.video_player_container = ".room-player-wrap";
  662. this.auto_max_pro_key = "auto_max_pro_key";
  663. this.is_first_auto_max_pro_key = "is_first_auto_max_pro_key";
  664. this.auto_max_pro_class_or_id_list = "auto_max_pro_class_or_id_list";
  665. this.auto_max_pro_keywords = ["登录", "会员", "大会员"];
  666. if (is_localhost) {
  667. this.init();
  668. }
  669. }
  670. // 初始化操作方法,子类可以继承该类,实现该类中空方法,参考此操作,初始化构造器实调用该方法就可以了。。。
  671. init() {
  672. if (!this.removeRoom()) {
  673. this.common();
  674. this.detail();
  675. this.index();
  676. this.category();
  677. this.create_container();
  678. this.isShowLeftMenu();
  679. this.isShowGift();
  680. this.clickLogoShowContainer();
  681. }
  682. this.settingBackgroundImage();
  683. }
  684. /*********************************建议下面操作方法必须重写的,并且参考此步骤*****************************/
  685. /**
  686. * 公共
  687. */
  688. common() {
  689. }
  690. /**
  691. * 首页
  692. */
  693. index() {
  694. }
  695. /**
  696. * 分类
  697. */
  698. category() {
  699. }
  700. /**
  701. * 详情
  702. */
  703. detail() {
  704. }
  705. /**
  706. * 点击房间名称操作
  707. */
  708. removeRoomByClickRoomName() {
  709. }
  710. /**
  711. * 通过房间号获取名称
  712. * @param roomId 房间号
  713. * @returns {null} name
  714. */
  715. getNameByRoomId(roomId) {
  716. warn("请自定义实现通过名称获取房间号方法");
  717. return null;
  718. }
  719. /**
  720. * 通过一个地址获取房间号
  721. * @param url 地址
  722. * @returns {null} 房间号
  723. */
  724. getRoomIdByUrl(url) {
  725. warn("请自定义实现通过名称获取房间号方法");
  726. return null;
  727. }
  728. /**
  729. * 自动最高画质!
  730. */
  731. isAutoMaxVideoPro() {
  732. let that = this;
  733. if (!(wls.getItem(that.is_first_auto_max_pro_key) === null ? true : getLocalStore(that.auto_max_pro_key, Boolean.name))) {
  734. return;
  735. }
  736. log("查找播放视频画质列表", that.auto_max_pro_class_or_id_list);
  737. loopDo((timer) => {
  738. let items = querySelectorAll(that.auto_max_pro_class_or_id_list);
  739. if (isArray(items)) {
  740. for (let item of items) {
  741. let result = that.auto_max_pro_keywords.findIndex((key) => item.innerText.indexOf(key) !== -1);
  742. if (result === -1) {
  743. log("当前最高画质", item.innerText);
  744. if (is_huya) {
  745. item = querySelector(item, "span");
  746. }
  747. item.click();
  748. clearInterval(timer);
  749. return;
  750. }
  751. }
  752. }
  753. }, 100, 500);
  754. }
  755. /*********************************子类继承无需修改的方法******************************/
  756. /**
  757. * 容器,所有操作容器均在此容器中,
  758. */
  759. create_container() {
  760. let that = this;
  761. let body = querySelector("body") ?? createElement("body");
  762. that.users = getLocalStore(that.key, Array.name) || [];
  763. let isShowBg = wls.getItem(this.bg_is_first_key) === null ? true : getLocalStore(that.bg_show_key, Boolean.name);
  764. let isShowMenu = wls.getItem(this.menu_is_first_key) === null ? false : getLocalStore(that.menu_show_key, Boolean.name);
  765. let isShowFullScreen = wls.getItem(this.full_screen_is_first_key) === null ? false : getLocalStore(that.full_screen_key, Boolean.name);
  766. let isShowGift = wls.getItem(this.gift_is_first_key) === null ? false : getLocalStore(that.gift_key, Boolean.name);
  767. let isShowLogo = wls.getItem(this.btn_is_first_key) === null ? true : getLocalStore(that.logo_show_key, Boolean.name);
  768. let isAutoMaxPro = wls.getItem(this.is_first_auto_max_pro_key) === null ? true : getLocalStore(that.auto_max_pro_key, Boolean.name);
  769. that.m_container = s2d(htmlTemplate(isShowBg, isShowMenu, isShowFullScreen, isShowGift, isShowLogo, isAutoMaxPro));
  770. appendChild(body, that.m_container);
  771. if (querySelector(that.m_container, "#m-container-box2 table tbody")) {
  772. that.tbody = querySelector(that.m_container, "#m-container-box2 table tbody");
  773. this.is_new = true;
  774. } else {
  775. that.tbody = querySelector(that.m_container, ".m-container table tbody");
  776. this.is_new = false;
  777. }
  778. that.operationDOMButton();
  779. that.createRoomItem(that.users);
  780. that.createButton();
  781. log("操作面板初始化完毕!");
  782. }
  783. /**
  784. * 通过用户列表构建列表
  785. * @param {Object} arr 用户列表
  786. */
  787. createRoomItem(arr) {
  788. if (!isArray(arr)) {
  789. return;
  790. }
  791. let that = this;
  792. arr.forEach((item, index) => {
  793. let tr = createElement("tr");
  794. tr.innerHTML = `
  795. <td>${index + 1}</td>
  796. <td>${item.name}</td>
  797. <td>${item.roomId}</td>
  798. <td><button class="btn btn-danger" room-id="${item.roomId}">删除</button></td>
  799. `;
  800. appendChild(that.tbody, tr);
  801. addEventListener(querySelector(tr, "button"), "click", function(e) {
  802. let roomId = e.target.getAttribute("room-id");
  803. that.userDelete(roomId);
  804. handlerPromise(that.getRoomIdByUrl(local_url), (result) => {
  805. if (result === roomId) {
  806. window.location.reload();
  807. }
  808. });
  809. removeDOM(tr, true);
  810. });
  811. });
  812. }
  813. /**
  814. * 绘制表格
  815. * @param {Object} arr 表格数据
  816. */
  817. resetTbody(arr) {
  818. if (!this.tbody) {
  819. error("tbody 为 null !");
  820. return;
  821. }
  822. querySelectorAll(this.tbody, "tr").forEach((item) => removeDOM(item, true));
  823. this.createRoomItem(arr);
  824. }
  825. /**
  826. * 操作框容器
  827. */
  828. operationDOMButton() {
  829. let that = this;
  830. if (!that.m_container) {
  831. return;
  832. }
  833. const container = that.m_container;
  834. const inputValue = querySelector(container, ".operation input");
  835. addEventListener(inputValue, "input", () => {
  836. let arr = that.users.filter((item) => item && item.roomId && item.roomId.indexOf(inputValue.value) !== -1 || item.name && item.name.indexOf(inputValue.value) !== -1);
  837. that.resetTbody(arr);
  838. });
  839. const addRoomBtn = querySelector(container, ".operation button.add-room");
  840. addEventListener(addRoomBtn, "click", function() {
  841. const keywords = inputValue.value.trim();
  842. if (!keywords) {
  843. return alert("请输入房间号!");
  844. }
  845. if (!that.userIsExist(keywords)) {
  846. handlerPromise(that.getNameByRoomId(keywords), (res) => {
  847. that.searchUserByRoomId(res, keywords, inputValue);
  848. });
  849. } else {
  850. alert("该主播已添加!");
  851. }
  852. });
  853. const clearRoomBtn = querySelector(container, ".operation button.clear-room");
  854. addEventListener(clearRoomBtn, "click", function() {
  855. if (confirm("确认重置?")) {
  856. that.users = [];
  857. let deleteKeyList = [
  858. that.key,
  859. that.bg_key,
  860. that.menu_show_key,
  861. that.gift_key,
  862. that.logo_show_key,
  863. that.full_screen_key,
  864. that.bg_is_first_key,
  865. that.btn_is_first_key,
  866. that.full_screen_is_first_key,
  867. that.menu_is_first_key,
  868. that.gift_is_first_key,
  869. that.is_first_auto_max_pro_key
  870. ];
  871. for (let item of deleteKeyList) {
  872. wls.removeItem(item);
  873. }
  874. that.resetTbody(that.users);
  875. window.location.reload();
  876. }
  877. });
  878. const uploadButton = querySelector(container, ".operation #file");
  879. addEventListener(uploadButton, "change", function(e) {
  880. const file = uploadButton.files[0] || null;
  881. uploadImage(file, (base64) => {
  882. addLocalStore(that.bg_key, base64, String.name, false);
  883. that.settingBackgroundImage(e.target.result);
  884. });
  885. addLocalStore(that.bg_is_first_key, false, Boolean.name);
  886. });
  887. const upload = querySelector(container, ".operation .bg-btn");
  888. addEventListener(upload, "click", function(e) {
  889. uploadButton.click();
  890. addLocalStore(that.bg_is_first_key, false, Boolean.name);
  891. });
  892. const close_container = querySelector(container, ".operation .btn-close-container");
  893. addEventListener(close_container, "click", function(e) {
  894. that.isShowContainer();
  895. });
  896. const close_container2 = querySelector(container, ".operation #m-close-button1");
  897. addEventListener(close_container2, "click", function(e) {
  898. that.isShowContainer();
  899. });
  900. const checkbox = querySelector(container, ".operation #checkbox1");
  901. addEventListener(checkbox, "change", function(e) {
  902. log("背景是否开启", e.target.checked ? "开启" : "关闭");
  903. addLocalStore(that.bg_show_key, e.target.checked, Boolean.name);
  904. addLocalStore(that.bg_is_first_key, false, Boolean.name);
  905. that.settingBackgroundImage();
  906. });
  907. const menu = querySelector(container, ".operation #checkbox2");
  908. addEventListener(menu, "change", function(e) {
  909. that.getLeftMenu(e.target.checked);
  910. addLocalStore(that.menu_is_first_key, false, Boolean.name);
  911. });
  912. const full_screen_btn = querySelector(container, ".operation #checkbox3");
  913. addEventListener(full_screen_btn, "change", function(e) {
  914. addLocalStore(that.full_screen_key, e.target.checked, Boolean.name);
  915. that.isFullScreen(true);
  916. addLocalStore(that.full_screen_is_first_key, false, Boolean.name);
  917. });
  918. const show_gift = querySelector(container, ".operation #checkbox4");
  919. addEventListener(show_gift, "change", function(e) {
  920. addLocalStore(that.gift_key, e.target.checked, Boolean.name);
  921. that.isShowGift();
  922. addLocalStore(that.gift_is_first_key, false, Boolean.name);
  923. });
  924. const show_logo_btn = querySelector(container, ".operation #checkbox5");
  925. addEventListener(show_logo_btn, "change", function(e) {
  926. e.preventDefault();
  927. if (!that.logo_btn) {
  928. warn("获取不到Logo哦!");
  929. return alert("获取不到logo");
  930. }
  931. if (that.logo_btn.style.display === "block") {
  932. if (confirm("确认隐藏Logo?隐藏之后不再显示哦!如需显示logo,点击直播头部Logo即可显示")) {
  933. that.logo_btn.style.display = "none";
  934. addLocalStore(that.logo_show_key, false, Boolean.name);
  935. }
  936. } else {
  937. that.logo_btn.style.display = "block";
  938. addLocalStore(that.logo_show_key, true, Boolean.name);
  939. }
  940. addLocalStore(that.btn_is_first_key, false, Boolean.name);
  941. });
  942. const auto_max_pro = querySelector(container, ".operation #checkbox6");
  943. addEventListener(auto_max_pro, "change", function(e) {
  944. addLocalStore(that.auto_max_pro_key, e.target.checked, Boolean.name);
  945. addLocalStore(that.is_first_auto_max_pro_key, false, Boolean.name);
  946. that.isAutoMaxVideoPro();
  947. });
  948. const theme_btn = querySelector(container, ".operation .room-theme");
  949. addEventListener(theme_btn, "click", function(e) {
  950. log("主题切换中");
  951. toggleColorMode(e);
  952. theme_btn.innerText = isNeedDark() ? "黑夜" : "白天";
  953. theme_btn.title = isNeedDark() ? "点击切换到黑夜" : "点击切换到白天";
  954. });
  955. const theme_change = querySelector(container, ".operation #m-dark-is-auto");
  956. addEventListener(theme_change, "change", function(e) {
  957. log("主题自适应切换中。。。", e.target.checked);
  958. addLocalStore(THEME_IS_AUTO, e.target.checked, Boolean.name, false);
  959. if (theme_btn) {
  960. theme_btn.innerText = isNeedDark() ? "黑夜" : "白天";
  961. theme_btn.title = isNeedDark() ? "点击切换到黑夜" : "点击切换到白天";
  962. }
  963. themeUpdate();
  964. });
  965. const theme_select = querySelector(container, ".operation #m-dark-select");
  966. addEventListener(theme_select, "change", function(e) {
  967. log("主题选择中...", e.target.value);
  968. theme_change.checked = false;
  969. addLocalStore(THEME_IS_AUTO, false, Boolean.name, false);
  970. if (theme_btn) {
  971. theme_btn.innerText = isNeedDark() ? "黑夜" : "白天";
  972. theme_btn.title = isNeedDark() ? "点击切换到黑夜" : "点击切换到白天";
  973. }
  974. updateDarkStyleType(e.target.value);
  975. });
  976. this.initAnimation(container);
  977. log("操作按钮添加成功!");
  978. }
  979. initAnimation(container) {
  980. let box1 = querySelector(container, "#m-container-box1");
  981. let box2 = querySelector(container, "#m-container-box2");
  982. let change1 = querySelector(container, "#m-change-box1");
  983. let change2 = querySelector(container, "#m-change-box2");
  984. let select1 = querySelector(container, ".m-type-item-left .m-select-option-container #m-select-input-address");
  985. let select2 = querySelector(".m-type-item-left .m-select-input-container #m-select-input-select");
  986. let select1_box1 = querySelector(container, ".m-type-item-left #m-select-option");
  987. let select2_box2 = querySelector(container, ".m-type-item-left #m-select-input");
  988. addEventListener(change1, "click", () => {
  989. if (box1 && box2) {
  990. box1.classList.add("m-ani-left-is-close");
  991. box1.classList.remove("m-ani-left-is-active");
  992. box2.classList.add("m-ani-right-is-active");
  993. box2.classList.remove("m-ani-right-is-close");
  994. }
  995. });
  996. addEventListener(change2, "click", () => {
  997. if (box1 && box2) {
  998. box1.classList.add("m-ani-left-is-active");
  999. box1.classList.remove("m-ani-left-is-close");
  1000. box2.classList.add("m-ani-right-is-close");
  1001. box2.classList.remove("m-ani-right-is-active");
  1002. }
  1003. });
  1004. addEventListener(select1, "click", () => {
  1005. if (select1_box1 && select2_box2) {
  1006. select1_box1.classList.remove("m-ani-left-is-active");
  1007. select1_box1.classList.add("m-ani-left-is-close");
  1008. select2_box2.classList.remove("m-ani-right-is-close");
  1009. select2_box2.classList.add("m-ani-right-is-active");
  1010. }
  1011. });
  1012. addEventListener(select2, "click", () => {
  1013. if (select1_box1 && select2_box2) {
  1014. select1_box1.classList.add("m-ani-left-is-active");
  1015. select1_box1.classList.remove("m-ani-left-is-close");
  1016. select2_box2.classList.add("m-ani-right-is-close");
  1017. select2_box2.classList.remove("m-ani-right-is-active");
  1018. }
  1019. });
  1020. log("动画初始化完毕!");
  1021. }
  1022. searchUserByRoomId(name, roomId, inputValue) {
  1023. let that = this;
  1024. if (name) {
  1025. that.addUser(roomId, name);
  1026. inputValue.value = "";
  1027. } else {
  1028. if (confirm(`房间号为${roomId}的主播不存在!确定添加?`)) {
  1029. that.addUser(roomId, roomId);
  1030. inputValue.value = "";
  1031. }
  1032. }
  1033. }
  1034. /**
  1035. * 右侧操作按钮
  1036. * @param text 指定按钮文本,默认是小虎牙或者是小鱼丸
  1037. */
  1038. createButton() {
  1039. let that = this;
  1040. let body = querySelector("body");
  1041. if (!body) {
  1042. error("获取不到 body ");
  1043. return;
  1044. }
  1045. if (!!that.logo_btn) {
  1046. warn("button已经添加了!不能重复添加!");
  1047. return;
  1048. }
  1049. let text = this.button_name;
  1050. const btn = createElement("button");
  1051. btn.style.cursor = "pointer";
  1052. btn.style.position = "fixed";
  1053. btn.style.top = "300px";
  1054. btn.style.right = "0px";
  1055. btn.style.zIndex = 999999999999;
  1056. let backgroundColor = "";
  1057. if (that.btn_logo_svg !== "none") {
  1058. btn.innerHTML = that.btn_logo_svg;
  1059. btn.style.backgroundColor = "transparent";
  1060. } else {
  1061. backgroundColor = is_bilibili ? "255,102,102" : "255, 93, 35";
  1062. btn.style.padding = "5px 10px";
  1063. btn.style.backgroundColor = `rgb(${backgroundColor})`;
  1064. btn.style.borderRadius = "20px";
  1065. btn.style.fontSize = "12px";
  1066. btn.style.color = "#fff";
  1067. btn.textContent = text ? text : is_huya ? "小虎牙" : is_douyu ? "小鱼丸" : is_bilibili ? "小B" : "默认";
  1068. }
  1069. btn.style.border = "none";
  1070. btn.style.outline = "none";
  1071. addEventListener(btn, "click", function() {
  1072. that.isShowContainer();
  1073. });
  1074. addEventListener(btn, "mouseenter", function() {
  1075. btn.style.backgroundColor = `rgba(${backgroundColor},0.6)`;
  1076. });
  1077. let flag = false;
  1078. let x, y;
  1079. const mouse_key = that.key + "_mouse_key";
  1080. let { mouse_left, mouse_top } = getLocalStore(mouse_key, Object.name);
  1081. log(`获到Logo位置信息 ${mouse_left}px, ${mouse_top}px`);
  1082. if (!isNaN(Number(mouse_left)) && !isNaN(Number(mouse_top))) {
  1083. btn.style.left = mouse_left + "px";
  1084. btn.style.top = mouse_top + "px";
  1085. btn.style.right = "auto";
  1086. }
  1087. addEventListener(btn, "mousedown", (event) => {
  1088. x = event.offsetX;
  1089. y = event.offsetY;
  1090. log("mouseDown", x, y);
  1091. flag = true;
  1092. addEventListener(wd, "mousemove", move);
  1093. });
  1094. addEventListener(btn, "mouseup", () => {
  1095. flag = false;
  1096. wd.removeEventListener("mousemove", move);
  1097. wd.onmousemove = null;
  1098. });
  1099. addEventListener(btn, "mouseleave", () => {
  1100. flag = false;
  1101. btn.style.backgroundColor = `rgba(${backgroundColor},1)`;
  1102. wd.removeEventListener("mousemove", move);
  1103. wd.onmousemove = null;
  1104. });
  1105. function move(e) {
  1106. e.preventDefault();
  1107. if (!flag) {
  1108. return;
  1109. }
  1110. let btn_top = Math.min(Math.max(0, e.clientY - y), window.innerHeight - btn.offsetHeight);
  1111. let btn_left = Math.min(Math.max(0, e.clientX - x), window.innerWidth - btn.offsetWidth);
  1112. btn.style.left = `${btn_left}px`;
  1113. btn.style.top = `${btn_top}px`;
  1114. btn.style.right = "auto";
  1115. addLocalStore(mouse_key, { "mouse_left": btn_left, "mouse_top": btn_top }, Object.name);
  1116. }
  1117. btn.style.display = wls.getItem(that.btn_is_first_key) == null || getLocalStore(that.logo_show_key, Boolean.name) ? "block" : "none";
  1118. that.logo_btn = btn;
  1119. appendChild(body, that.logo_btn);
  1120. log("button 添加完毕!");
  1121. }
  1122. /**
  1123. * 该房间是否已改被删除
  1124. * @param url 房间链接地址 默认 window.location.href
  1125. */
  1126. removeRoom(url = local_url) {
  1127. try {
  1128. if (!this.isRemove(url)) {
  1129. return false;
  1130. }
  1131. this.roomIsNeedRemove();
  1132. return true;
  1133. } catch (error2) {
  1134. return false;
  1135. }
  1136. }
  1137. /**
  1138. * 房间已被删除之后操作
  1139. * @param url 房间链接地址 默认 window.location.href
  1140. */
  1141. roomAlreadyRemove() {
  1142. let that = this;
  1143. removeDOM(querySelector("body"), true);
  1144. const h2 = createElement("h3");
  1145. let html = querySelector("html");
  1146. let body = querySelector("body") ?? createElement("body");
  1147. body.style.display = "flex";
  1148. body.style.flexDirection = "column";
  1149. body.style.justifyContent = "center";
  1150. body.style.alignItems = "center";
  1151. handlerPromise(this.getRoomIdByUrl(local_url), (roomId) => {
  1152. let name = this.getUser(roomId) ? this.getUser(roomId).name : "";
  1153. const a = createElement("a");
  1154. a.textContent = "点击解锁";
  1155. a.style.display = "block";
  1156. a.style.cursor = "pointer";
  1157. a.style.fontSize = "20px";
  1158. a.onclick = (e) => {
  1159. e.preventDefault();
  1160. that.userDelete(roomId);
  1161. window.location.reload();
  1162. };
  1163. h2.style.fontSize = "36px";
  1164. h2.textContent = `主播【${name}】已被你屏蔽`;
  1165. let title = querySelector("title");
  1166. if (!title) {
  1167. title = createElement("title");
  1168. }
  1169. title.textContent = `主播【${name}】已被你屏蔽`;
  1170. html.appendChild(body);
  1171. body.appendChild(h2);
  1172. body.appendChild(a);
  1173. let logo_show = getLocalStore(that.logo_show_key, Boolean.name);
  1174. if (logo_show) {
  1175. let logo = createElement("a");
  1176. logo.textContent = "显示logo";
  1177. logo.style.display = "block";
  1178. logo.style.cursor = "pointer";
  1179. logo.style.fontSize = "20px";
  1180. logo.onclick = (e) => {
  1181. e.preventDefault();
  1182. logo.style.display = "none";
  1183. addLocalStore(that.logo_show_key, false, Boolean.name);
  1184. that.createButton();
  1185. };
  1186. body.appendChild(logo);
  1187. }
  1188. removeDOM(this.m_container, true);
  1189. this.m_container = null;
  1190. this.create_container();
  1191. });
  1192. }
  1193. /**
  1194. * 判断链接是否应该被删除
  1195. * @param href 房间链接地址 默认 window.location.href
  1196. */
  1197. isRemove(href) {
  1198. try {
  1199. let res = this.getRoomIdByUrl(href);
  1200. if (res instanceof Promise) {
  1201. return false;
  1202. }
  1203. return this.userIsExist(res);
  1204. } catch (error2) {
  1205. return false;
  1206. }
  1207. }
  1208. /**
  1209. * 设置背景图
  1210. * @param url 背景图地址 默认 是默认地址
  1211. * @param container 修改背景容器 默认是body
  1212. */
  1213. settingBackgroundImage(url, container) {
  1214. if (!support.supportBg()) {
  1215. log("当前平台不支持背景");
  1216. return;
  1217. }
  1218. container = querySelector("body");
  1219. if (!container || !(container instanceof HTMLElement)) {
  1220. warn("壁纸设置失败 获取不到 container !");
  1221. return;
  1222. }
  1223. let isShowBg = wls.getItem(this.bg_is_first_key) === null ? true : getLocalStore(this.bg_show_key, Boolean.name);
  1224. log("是否添加背景=>", isShowBg ? "显示" : "关闭", wls.getItem(this.bg_is_first_key) === null ? "null" : wls.getItem(this.bg_is_first_key));
  1225. if (isShowBg) {
  1226. url = !!url ? url : wls.getItem(this.bg_key) && isShowBg ? wls.getItem(this.bg_key) : this.default_background_image;
  1227. container.style.backgroundSize = "cover";
  1228. container.style.backgroundRepeat = "no-repeat ";
  1229. container.style.backgroundAttachment = "fixed";
  1230. container.style.backgroundImage = `url(${url})`;
  1231. log("背景图添加完毕!");
  1232. } else {
  1233. container.style.backgroundImage = "none";
  1234. log("背景图已关闭!");
  1235. }
  1236. }
  1237. /**
  1238. * 通过房间名称或者id判断房间是否已经保存到本地
  1239. * @param keywords 房间名或者id
  1240. * @param list 本地缓存数据,默认是本地缓存用户数据
  1241. */
  1242. userIsExist(keywords, list = this.users) {
  1243. return !!this.getUser(keywords, list);
  1244. }
  1245. /**
  1246. * 通过房间名称或者id判断房间是否已经保存到本地
  1247. * @param keywords 房间名或者id
  1248. * @param list 本地缓存数据,默认是本地缓存用户数据
  1249. */
  1250. getUser(keywords, list = this.users) {
  1251. if (!keywords) {
  1252. return null;
  1253. }
  1254. for (let i = 0; i < list.length; i++) {
  1255. if (list[i].name && list[i].name === keywords || list[i].roomId && list[i].roomId === keywords) {
  1256. return list[i];
  1257. }
  1258. }
  1259. return null;
  1260. }
  1261. /**
  1262. * 通过房间id或者房间名删除本地缓存的数据
  1263. * @param keywords 房间名或者id
  1264. */
  1265. userDelete(keywords) {
  1266. let that = this;
  1267. if (!isArray(that.users)) {
  1268. return;
  1269. }
  1270. that.users.forEach((item, index) => {
  1271. if (keywords === item.name || keywords === item.roomId) {
  1272. that.users.splice(index, 1);
  1273. }
  1274. });
  1275. addLocalStore(this.key, this.users);
  1276. }
  1277. /**
  1278. * 添加并保存直播间
  1279. * @param id, 房间id
  1280. * @param name 房间名
  1281. */
  1282. addUser(id, name) {
  1283. if (this.userIsExist(id) || this.userIsExist(name)) {
  1284. alert("该房间已存在!");
  1285. return;
  1286. }
  1287. if (!isArray(this.users)) {
  1288. this.users = [];
  1289. }
  1290. const newUser = new HostUser(id, name);
  1291. this.users.unshift(newUser);
  1292. addLocalStore(this.key, this.users);
  1293. this.resetTbody(this.users);
  1294. handlerPromise(this.getRoomIdByUrl(local_url), (res) => {
  1295. if (id === res) {
  1296. this.roomIsNeedRemove(local_url);
  1297. }
  1298. });
  1299. }
  1300. /**
  1301. * @param selector video
  1302. */
  1303. roomIsNeedRemove(selector = querySelector("video")) {
  1304. this.roomAlreadyRemove();
  1305. removeVideo(selector);
  1306. this.settingBackgroundImage();
  1307. }
  1308. /*
  1309. * 操作左侧导航栏,需要传入选择器,和修改值 建议放到公共方法下执行!
  1310. * @param {selector} = [选择器]
  1311. * @param {value} = [要修改的值]
  1312. */
  1313. getLeftMenu(value = false) {
  1314. let menu = querySelector(this.menu);
  1315. if (!menu) {
  1316. return alert("获取不到导航菜单,操作失败!");
  1317. }
  1318. handlerDisplay(menu, value);
  1319. addLocalStore(this.menu_show_key, value, Boolean.name, false);
  1320. }
  1321. /*
  1322. * 操作左侧导航栏,需要传入选择器,和修改值 建议放到公共方法下执行!
  1323. */
  1324. isShowLeftMenu() {
  1325. let menu = this.menu ? querySelector(this.menu) : "";
  1326. handlerDisplay(menu, wls.getItem(this.menu_is_first_key) != null && getLocalStore(this.menu_show_key, Boolean.name));
  1327. }
  1328. /**
  1329. * 检查是否能找到全屏按钮
  1330. * @returns
  1331. */
  1332. checkFullScreenButton() {
  1333. this.full_screen_button = findButton(this.video_player_container, this.full_screen_class_or_id, this.full_screen_text, this.full_button_tag_name);
  1334. }
  1335. /**
  1336. * 自动全屏
  1337. * @param isClickFull 是否是通过点击方式触发
  1338. */
  1339. isFullScreen(isClickFull = false) {
  1340. let full_screen_text = this.full_screen_text;
  1341. let full_cancel_text = this.full_cancel_text;
  1342. let is_should_full_screen = getLocalStore(this.full_screen_key, Boolean.name);
  1343. let button = null;
  1344. if (isClickFull) {
  1345. button = querySelector(this.full_screen_button);
  1346. if (button && button instanceof HTMLElement) {
  1347. button.click();
  1348. this.isShowContainer();
  1349. } else {
  1350. this.checkFullScreenButton(button);
  1351. }
  1352. } else {
  1353. loopDo((timer) => {
  1354. button = querySelector(this.full_screen_button);
  1355. log("fullScreen button", !!button ? "找到button了" : "未找到全屏button");
  1356. if (button && button instanceof HTMLElement) {
  1357. let isClick = button == null ? void 0 : button.isClick;
  1358. if (isClick) {
  1359. clearInterval(timer);
  1360. return;
  1361. }
  1362. if (!isClick && is_should_full_screen && ((button == null ? void 0 : button.title) === full_screen_text || button.textContent === full_screen_text)) {
  1363. log("全屏按钮自动触发了!");
  1364. button.isClick = true;
  1365. button.click();
  1366. } else if ((button == null ? void 0 : button.title) === full_cancel_text || (button == null ? void 0 : button.textContent) === full_cancel_text) {
  1367. button.click();
  1368. }
  1369. } else {
  1370. this.checkFullScreenButton(button);
  1371. }
  1372. }, 3, 500);
  1373. }
  1374. }
  1375. /**
  1376. * 是否显示礼物
  1377. */
  1378. isShowGift() {
  1379. let gift = this.gift_tool ? querySelector(this.gift_tool) : "";
  1380. handlerDisplay(gift, wls.getItem(this.gift_is_first_key) != null && getLocalStore(this.gift_key, Boolean.name));
  1381. }
  1382. /**
  1383. * 是否显示容器
  1384. */
  1385. isShowContainer() {
  1386. if (this.m_container && this.m_container instanceof HTMLElement) {
  1387. log("container change ....");
  1388. if (this.is_new) {
  1389. if (this.m_container.classList.contains("m-container-is-active")) {
  1390. this.m_container.classList.remove("m-container-is-active");
  1391. } else {
  1392. this.m_container.classList.add("m-container-is-active");
  1393. }
  1394. } else {
  1395. this.m_container.style.display = this.m_container.style.display === "block" ? "none" : "block";
  1396. }
  1397. }
  1398. }
  1399. /**
  1400. * 点击 直播平台 Logo
  1401. */
  1402. clickLogoShowContainer() {
  1403. if (this.header_logo === "none" || !this.header_logo) {
  1404. warn("Logo选择器不能为 none !");
  1405. return;
  1406. }
  1407. let that = this;
  1408. findMark(that.header_logo, (a) => {
  1409. if (!(a instanceof HTMLAnchorElement)) {
  1410. return;
  1411. }
  1412. a.href = "javascript:;void(0)";
  1413. a.title = "点击Logo,显示插件配置";
  1414. addEventListener(a, "click", (e) => {
  1415. e.preventDefault();
  1416. log("click header logo !");
  1417. that.isShowContainer();
  1418. });
  1419. loopDo(() => {
  1420. a = querySelector(that.header_logo);
  1421. a.href = "javascript:;void(0)";
  1422. }, 5, 1e3);
  1423. log("logo点击按钮装置完毕!");
  1424. }, 5, 500);
  1425. }
  1426. createSpan(container, place, id, name = id, message = "确认屏蔽up主 ", remove = true) {
  1427. if (!container || !place || !id || !name) {
  1428. error("createSpan 参数不全!");
  1429. return;
  1430. }
  1431. const span = createElement("span");
  1432. span.classList = "m-span-text";
  1433. appendChild(place, span);
  1434. addEventListener(span, "click", () => {
  1435. if (confirm(`${message}${name} ?`)) {
  1436. if (remove) {
  1437. removeDOM(container, true);
  1438. }
  1439. this.addUser(id, name);
  1440. this.removeRoom(local_url);
  1441. }
  1442. });
  1443. }
  1444. }
  1445. class TriggerLive extends LivePlugin {
  1446. constructor() {
  1447. super();
  1448. this.video_player_container = ".room-player-wrap";
  1449. this.full_screen_button = ".room-player-wrap .player-fullscreen-btn";
  1450. this.full_button_tag_name = "span";
  1451. this.default_background_image = "https://livewebbs2.msstatic.com/huya_1682329462_content.jpg";
  1452. this.baseUrl = "https://www.huya.com/";
  1453. this.menu = ".mod-sidebar";
  1454. this.header_logo = "#duya-header #duya-header-logo a";
  1455. this.gift_tool = ".room-core #player-gift-wrap";
  1456. this.auto_max_pro_class_or_id_list = ".player-videoline-videotype .player-videotype-list li";
  1457. this.init();
  1458. }
  1459. // 首页操作
  1460. index() {
  1461. if (local_url === this.baseUrl || /https:\/\/.*\.huya\.*\/\?/.test(local_url)) {
  1462. removeVideo(".mod-index-main video");
  1463. const banner_close = querySelector(".mod-index-wrap #banner i");
  1464. if (banner_close) {
  1465. banner_close.click();
  1466. }
  1467. loopDo((timer) => {
  1468. let pauseBtn = querySelector(".player-pause-btn");
  1469. if (pauseBtn) {
  1470. pauseBtn.click();
  1471. clearInterval(timer);
  1472. }
  1473. }, 10, 300);
  1474. }
  1475. }
  1476. // 分类页操作
  1477. category() {
  1478. let that = this;
  1479. if (new RegExp(/^https:\/\/.*\.huya\.((com)|(cn))\/g(\/.*)$/).test(local_url)) {
  1480. timeoutSelectorAllOne(".live-list-nav dd", (node) => {
  1481. addEventListener(node, "click", () => {
  1482. setTimeout(() => {
  1483. that.removeRoomByClickRoomName();
  1484. }, 2e3);
  1485. });
  1486. });
  1487. }
  1488. }
  1489. // 公共部分操作
  1490. common() {
  1491. this.removeRoomByClickRoomName();
  1492. }
  1493. // 详情操作
  1494. detail() {
  1495. let that = this;
  1496. if (new RegExp(/^https:\/\/www\.huya\.com(\/\w+)$/).test(local_url)) {
  1497. findMark(".host-name", (hostName) => {
  1498. hostName.title = `点击屏蔽主播【${hostName == null ? void 0 : hostName.textContent}】`;
  1499. addEventListener(hostName, "click", () => {
  1500. if (confirm(`确认屏蔽主播【${hostName == null ? void 0 : hostName.textContent}】?`)) {
  1501. that.addUser(that.getRoomIdByUrl(local_url), hostName.textContent);
  1502. }
  1503. });
  1504. });
  1505. let ads = [
  1506. ".main-wrap .room-mod-ggTop",
  1507. "#chatRoom .room-gg-chat",
  1508. "#huya-ab"
  1509. ];
  1510. intervalRemoveElement(ads, 500, 20);
  1511. this.isFullScreen();
  1512. this.isAutoMaxVideoPro();
  1513. }
  1514. }
  1515. // 通过地址获取房间号
  1516. getRoomIdByUrl(url = local_url) {
  1517. try {
  1518. return url && url.match(/https:\/\/www\.huya\.com\/(.*)/) ? url.match(/https:\/\/www\.huya\.com\/(.*)/)[1] : "";
  1519. } catch (error2) {
  1520. warn("url 匹配失败 请检查" + url);
  1521. return "";
  1522. }
  1523. }
  1524. // 通过房间号查找名称
  1525. getNameByRoomId(roomId) {
  1526. let that = this;
  1527. let hostName = querySelector(".host-name");
  1528. if (!hostName) {
  1529. warn(`获取不到hostname`);
  1530. return "";
  1531. }
  1532. const rooms = querySelectorAll(".game-live-item");
  1533. if (!isArray(rooms)) {
  1534. return "";
  1535. }
  1536. for (let room of rooms) {
  1537. const a = querySelector(room, "a");
  1538. if (a && a.href) {
  1539. const id = that.getRoomIdByUrl(a.href);
  1540. const user = querySelector(room, ".txt i");
  1541. if (id === roomId) {
  1542. hostName = user;
  1543. }
  1544. }
  1545. }
  1546. return (hostName == null ? void 0 : hostName.textContent) || "";
  1547. }
  1548. // 通过点击直播间名称删除直播间
  1549. removeRoomByClickRoomName() {
  1550. const that = this;
  1551. timeoutSelectorAllOne(".game-live-item", (li) => {
  1552. setTimeoutMark(li, () => {
  1553. const a = querySelector(li, "a");
  1554. const url = a.href;
  1555. const user = querySelector(li, ".txt i");
  1556. const name = user.textContent || "";
  1557. addEventListener(user, "click", () => {
  1558. if (confirm(`确认禁用 ${name}?`)) {
  1559. that.addUser(that.getRoomIdByUrl(url), name);
  1560. removeDOM(li);
  1561. }
  1562. });
  1563. if (that.isRemove(url)) {
  1564. removeDOM(li);
  1565. }
  1566. }, 0);
  1567. }, 500);
  1568. }
  1569. }
  1570. const getInfo = async (roomId = local_url) => {
  1571. if (douyu_address_pattern.test(roomId)) {
  1572. roomId = FishLive.prototype.getRoomIdByUrl(roomId);
  1573. }
  1574. return await fetch(`https://www.douyu.com/betard/${roomId}`, {
  1575. mode: "cors",
  1576. cache: "default",
  1577. method: "GET"
  1578. }).then((res) => res.json());
  1579. };
  1580. class FishLive extends LivePlugin {
  1581. constructor() {
  1582. super();
  1583. this.video_player_container = "#room-html5-player";
  1584. this.baseUrl = "https://www.douyu.com/";
  1585. this.default_background_image = "https://sta-op.douyucdn.cn/dylamr/2022/11/07/1e10382d9a430b4a04245e5427e892c8.jpg";
  1586. this.menu = "#js-aside";
  1587. this.gift_tool = ".layout-Player-main #js-player-toolbar";
  1588. this.header_logo = "#js-header .Header-left .Header-logo";
  1589. this.auto_max_pro_class_or_id_list = "#js-player-video .room-Player-Box .rate-5c068c ul>li";
  1590. this.init();
  1591. }
  1592. // 公共部分页面操作
  1593. common() {
  1594. }
  1595. //首页操作
  1596. index() {
  1597. let that = this;
  1598. if (window.location.href === that.baseUrl || new RegExp(/https:\/\/www\.douyu\.com\/\?.*/).test(local_url)) {
  1599. window.scroll(0, 0);
  1600. removeVideo(".layout-Slide-player video");
  1601. const vbox = querySelector("#room-html5-player");
  1602. if (vbox) {
  1603. const divs = querySelectorAll(vbox, "div");
  1604. if (isArray(divs)) {
  1605. for (let div of divs) {
  1606. if ((div == null ? void 0 : div.title) === "暂停") {
  1607. div.click();
  1608. }
  1609. }
  1610. }
  1611. }
  1612. that.removeRoomByClickRoomName();
  1613. window.onscroll = throttle(500, () => {
  1614. that.removeRoomByClickRoomName();
  1615. });
  1616. let topBtn = querySelector(".layout-Main .ToTopBtn");
  1617. if (topBtn) {
  1618. topBtn.style.display = "block";
  1619. }
  1620. }
  1621. }
  1622. // 分类页面操作
  1623. category() {
  1624. let that = this;
  1625. if (new RegExp(/https:\/\/www.douyu.com(\/((directory.*)|(g_.*)))$/).test(local_url)) {
  1626. that.removeRoomByClickRoomName();
  1627. querySelectorAll(".layout-Module-filter .layout-Module-label");
  1628. timeoutSelectorAllOne(".layout-Module-filter .layout-Module-label", (label) => {
  1629. addEventListener(label, "click", (e) => {
  1630. e.preventDefault();
  1631. let to_link = label && label.href ? label.href : null;
  1632. if (to_link) {
  1633. window.location.href = to_link;
  1634. } else {
  1635. window.location.href = "https://www.douyu.com/g_" + local_url.match(RegExp(
  1636. /subCate\/.*/g
  1637. ))[0].replace("subCate", "").match(new RegExp(
  1638. /\w+/g
  1639. ))[0];
  1640. }
  1641. });
  1642. });
  1643. }
  1644. }
  1645. // 详情页操作
  1646. detail() {
  1647. let that = this;
  1648. if (!new RegExp(/.*douyu.*(\/((.*rid=\d+)|(\d+)).*)$/).test(local_url)) {
  1649. return;
  1650. }
  1651. findMark(".Title-roomInfo h2.Title-anchorNameH2", (hostName) => {
  1652. hostName.title = `点击屏蔽主播【${hostName == null ? void 0 : hostName.textContent}】`;
  1653. addEventListener(hostName, "click", () => {
  1654. if (confirm(`确认屏蔽主播【${hostName == null ? void 0 : hostName.textContent}】?`)) {
  1655. that.addUser(that.getRoomIdByUrl(local_url), hostName.textContent);
  1656. }
  1657. });
  1658. });
  1659. if (new RegExp(/.*douyu.*\/topic(\/(.*rid=\d+).*)/).test(local_url)) {
  1660. let divs = querySelectorAll("#root>div");
  1661. let backgroundNones = [".wm-general-wrapper.bc-wrapper.bc-wrapper-player", ".wm-general-bgblur"];
  1662. if (isArray(divs)) {
  1663. for (let element of divs) {
  1664. if (!!querySelector(element, ".layout-Main")) {
  1665. backgroundNone(element, backgroundNones);
  1666. } else {
  1667. removeDOM(element, true);
  1668. }
  1669. }
  1670. }
  1671. }
  1672. if (new RegExp(/.*douyu.*(\/(\d+)).*/).test(local_url)) {
  1673. findMark(".roomSmallPlayerFloatLayout-closeBtn", (closeBtn) => {
  1674. closeBtn.click();
  1675. });
  1676. removeDOM(".layout-Main .ToTopBtn", true);
  1677. }
  1678. this.isFullScreen();
  1679. this.isAutoMaxVideoPro();
  1680. }
  1681. // 通过点击直播间名称删除直播间
  1682. removeRoomByClickRoomName() {
  1683. let that = this;
  1684. if (this.baseUrl === local_url || new RegExp(/https:\/\/www\.douyu\.com\/\?.*/).test(local_url)) {
  1685. timeoutSelectorAllOne(".layout-List-item", (li) => {
  1686. setTimeoutMark(li, () => {
  1687. const a = querySelector(li, ".DyCover");
  1688. const url = (a == null ? void 0 : a.href) || "";
  1689. const user = querySelector(li, ".DyCover-user");
  1690. const name = (user == null ? void 0 : user.textContent) || "";
  1691. a.setAttribute("href", "javascript:;void(0)");
  1692. addEventListener(a, "click", (e) => {
  1693. e.preventDefault();
  1694. });
  1695. addEventListener(user, "click", (e) => {
  1696. e.preventDefault();
  1697. if (confirm(`确认禁用 ${name}`)) {
  1698. that.addUser(that.getRoomIdByUrl(url), name);
  1699. removeDOM(li);
  1700. }
  1701. });
  1702. if (that.isRemove(url) || that.userIsExist(name)) {
  1703. removeDOM(li);
  1704. }
  1705. }, 100);
  1706. }, 100);
  1707. }
  1708. if (new RegExp(/https:\/\/www.douyu.com(\/((directory)|(g_)).*)/).test(local_url)) {
  1709. timeoutSelectorAllOne(".layout-Cover-item", (li) => {
  1710. setTimeoutMark(li, () => {
  1711. const link = querySelector(li, "a.DyListCover-wrap");
  1712. if (link) {
  1713. const url = (link == null ? void 0 : link.href) || "";
  1714. link.setAttribute("href", "javascript:;void(0)");
  1715. addEventListener(link, "click", (e) => {
  1716. e.preventDefault();
  1717. });
  1718. const user = querySelector(link, "div.DyListCover-userName");
  1719. const name = user.textContent || "";
  1720. if (that.isRemove(url) || that.userIsExist(name)) {
  1721. removeDOM(li, true);
  1722. } else {
  1723. addEventListener(user, "click", (e) => {
  1724. if (confirm(`确认禁用 ${name}?`)) {
  1725. const id = that.getRoomIdByUrl(url);
  1726. that.addUser(id, name);
  1727. removeDOM(li);
  1728. }
  1729. e.preventDefault();
  1730. });
  1731. addEventListener(li, "mouseenter", (e) => {
  1732. const a = querySelector(e.target, "a.DyListCover-wrap.is-hover");
  1733. const url2 = a == null ? void 0 : a.href;
  1734. a.setAttribute("href", "javascript:;void(0)");
  1735. addEventListener(a, "click", (e2) => {
  1736. e2.preventDefault();
  1737. });
  1738. const user2 = querySelector(a, ".DyListCover-userName");
  1739. const name2 = user2.textContent || "";
  1740. addEventListener(user2, "click", (e2) => {
  1741. e2.preventDefault();
  1742. if (confirm(`确认禁用 ${name2}?`)) {
  1743. const id = that.getRoomIdByUrl(url2);
  1744. that.addUser(id, name2);
  1745. removeDOM(li);
  1746. }
  1747. });
  1748. });
  1749. }
  1750. }
  1751. }, 100);
  1752. }, 0);
  1753. }
  1754. }
  1755. // 通过房间号获取直播间name
  1756. async getNameByRoomId(keywords) {
  1757. var _a;
  1758. let that = this;
  1759. let searchResult = await getInfo(keywords);
  1760. if ((searchResult == null ? void 0 : searchResult.room) && ((_a = searchResult == null ? void 0 : searchResult.room) == null ? void 0 : _a.nickname)) {
  1761. log(`搜索到主播 ${searchResult.room.nickname}`);
  1762. return searchResult.room.nickname;
  1763. }
  1764. let hostName = querySelector(".Title-blockInline .Title-anchorName h2");
  1765. let rooms = null;
  1766. if (!hostName) {
  1767. rooms = querySelectorAll(".layout-List-item");
  1768. if (isArray(rooms)) {
  1769. for (let room of rooms) {
  1770. const id = that.getRoomIdByUrl(querySelector(room, "a").href);
  1771. const user = querySelector(room, ".DyCover-user");
  1772. if (id === keywords) {
  1773. hostName = user;
  1774. }
  1775. }
  1776. }
  1777. if (!hostName) {
  1778. rooms = querySelectorAll(".layout-Cover-item");
  1779. if (isArray(rooms)) {
  1780. for (let room of rooms) {
  1781. const id = that.getRoomIdByUrl(querySelector(room, "a").href);
  1782. const user = querySelector(room, ".DyListCover-userName");
  1783. if (id === keywords) {
  1784. hostName = user;
  1785. }
  1786. }
  1787. }
  1788. }
  1789. }
  1790. return (hostName == null ? void 0 : hostName.textContent) || "";
  1791. }
  1792. // 通过房间地址获取房间号
  1793. getRoomIdByUrl(url = local_url) {
  1794. try {
  1795. if (new RegExp(/.*rid=(\d+).*/).test(url)) {
  1796. return url.match(new RegExp(/rid=(\d+)/))[1];
  1797. }
  1798. if (/https:\/\/www\.douyu\.com\/(\d+).*/.test(url)) {
  1799. return url.match(new RegExp(/https:\/\/www\.douyu\.com\/(\d+)/))[1];
  1800. }
  1801. return null;
  1802. } catch (e) {
  1803. return null;
  1804. }
  1805. }
  1806. // isAutoMaxVideoPro() {
  1807. // if (!(wls.getItem(this.is_first_auto_max_pro_key) === null ? true : getLocalStore(this.auto_max_pro_key, Boolean.name))) {
  1808. // return;
  1809. // }
  1810. // log('自动全屏查找中...')
  1811. // const parent_container = `#js-player-video .room-Player-Box`
  1812. // let default_class = '.rate-5c068c'
  1813. //
  1814. // const check = () => {
  1815. // return findButton(parent_container, default_class, "清晰度", "div")
  1816. // }
  1817. // loopDo((timer) => {
  1818. // const nodes = querySelectorAll(`${parent_container} ${default_class} ul li`)
  1819. // log('查找结果',nodes)
  1820. // if (isArray(nodes)) {
  1821. // nodes[0].click()
  1822. // clearInterval(timer)
  1823. // } else {
  1824. // default_class = check()
  1825. // }
  1826. //
  1827. // }, 20, 1000)
  1828. //
  1829. //
  1830. // }
  1831. }
  1832. const getBiliBiliInfoByVideoID = async (url = window.location.href) => {
  1833. if (!url) {
  1834. return;
  1835. }
  1836. let videoBVId = "BV";
  1837. if (/.*\/BV(.*)/.test(url)) {
  1838. videoBVId += /.*\/BV(.*)\/.*/.test(url) ? url.match(/.*\/BV(.*)/)[1].match(/(.*)\/{1}.*/)[1] : url.match(/.*\/BV(.*)/)[1];
  1839. } else {
  1840. videoBVId = url;
  1841. }
  1842. return await fetch(`https://api.bilibili.com/x/web-interface/wbi/view?bvid=${videoBVId}`, {
  1843. method: "get",
  1844. mode: "cors"
  1845. }).then((res) => res.json());
  1846. };
  1847. class BiliBili extends LivePlugin {
  1848. constructor() {
  1849. super();
  1850. this.header_logo = ".bili-header .bili-header__bar ul>li>a";
  1851. this.video_player_container = "#bilibili-player";
  1852. this.fullScreenText = "进入全屏 (f)";
  1853. this.auto_max_pro_class_or_id_list = ".bpx-player-ctrl-btn.bpx-player-ctrl-quality .bpx-player-ctrl-quality-menu>.bpx-player-ctrl-quality-menu-item";
  1854. this.init();
  1855. }
  1856. /**
  1857. * 重写 button
  1858. * @returns
  1859. */
  1860. createButton() {
  1861. let that = this;
  1862. if (!!that.logo_btn) {
  1863. return;
  1864. }
  1865. let buttonBoxs = querySelector(".palette-button-wrap .storage-box .storable-items");
  1866. let btn = createElement("button");
  1867. btn.className = "primary-btn";
  1868. btn.style.fontSize = "16px";
  1869. if (!buttonBoxs) {
  1870. buttonBoxs = querySelector("div.fixed-sidenav-storage");
  1871. if (!buttonBoxs) {
  1872. console.log("暂不支持...");
  1873. return;
  1874. }
  1875. btn = createElement("div");
  1876. btn.style.display = "none";
  1877. btn.className = "m-bilibili-btn";
  1878. window.onscroll = () => {
  1879. if (window.scrollY >= 500) {
  1880. btn.style.display = "block";
  1881. } else {
  1882. btn.style.display = "none";
  1883. }
  1884. };
  1885. }
  1886. btn.title = "点击显示";
  1887. btn.innerHTML = iconLogo();
  1888. that.logo_btn = btn;
  1889. addEventListener(btn, "click", function() {
  1890. that.isShowContainer();
  1891. });
  1892. insertChild(buttonBoxs, that.logo_btn);
  1893. }
  1894. async getRoomIdByUrl(href) {
  1895. var _a, _b;
  1896. try {
  1897. if (/https:\/\/www.bilibili.com\/video\/.*/.test(local_url)) {
  1898. let result = await getBiliBiliInfoByVideoID(local_url);
  1899. if (result.code === 0 && ((_a = result == null ? void 0 : result.owner) == null ? void 0 : _a.mid)) {
  1900. return (_b = result == null ? void 0 : result.owner) == null ? void 0 : _b.mid;
  1901. }
  1902. }
  1903. if (/https:\/\/space\.bilibili\.com\/(\d+).*/.test(href)) {
  1904. return href.match(/https:\/\/space\.bilibili\.com\/(\d+)/)[1];
  1905. }
  1906. } catch (error2) {
  1907. }
  1908. return this.getBilibiliRoomId(href);
  1909. }
  1910. getBilibiliRoomId(href) {
  1911. return !!href && href.replace(/https:\/\/.*\.bilibili.com\/(.*?)/, "$1").replace(/\//ig, "");
  1912. }
  1913. // 添加删除按钮
  1914. addDeleteRoomButton(time = 1e3) {
  1915. timeoutSelectorAll(".feed-card", (divs) => {
  1916. var _a, _b;
  1917. for (let feed of divs) {
  1918. const isMark = !!querySelector(feed, ".m-span-text");
  1919. if (!isMark) {
  1920. let item = querySelector(feed, "div.bili-video-card__info--bottom");
  1921. const name = (_a = querySelector(item, "span.bili-video-card__info--author")) == null ? void 0 : _a.textContent;
  1922. const href = (_b = querySelector(item, ".bili-video-card__info--owner")) == null ? void 0 : _b.href;
  1923. const id = this.getBilibiliRoomId(href);
  1924. if (this.userIsExist(id) || this.userIsExist(name)) {
  1925. removeDOM(feed, true);
  1926. } else if (id && name) {
  1927. this.createSpan(feed, item, id, name);
  1928. }
  1929. }
  1930. }
  1931. }, time);
  1932. window.onscroll = throttle(500, () => {
  1933. timeoutSelectorAll(".bili-video-card", (divs) => {
  1934. var _a, _b, _c, _d;
  1935. for (let feed of divs) {
  1936. const isMark = !!querySelector(feed, ".m-span-text");
  1937. if (!isMark) {
  1938. let item = querySelector(feed, "div.bili-video-card__info--bottom");
  1939. let isLive = false;
  1940. if (!item) {
  1941. isLive = true;
  1942. item = querySelector(feed, ".bili-live-card__info--text");
  1943. }
  1944. const name = !isLive ? (_a = querySelector(item, "span.bili-video-card__info--author")) == null ? void 0 : _a.textContent : (_b = querySelector(item, "a.bili-live-card__info--uname span")) == null ? void 0 : _b.textContent;
  1945. const href = !isLive ? (_c = querySelector(item, ".bili-video-card__info--owner")) == null ? void 0 : _c.href : (_d = querySelector(item, "a.bili-live-card__info--uname")) == null ? void 0 : _d.href;
  1946. const id = this.getBilibiliRoomId(href);
  1947. if (this.userIsExist(name) || this.userIsExist(id)) {
  1948. removeDOM(feed, true);
  1949. } else if (id && name) {
  1950. this.createSpan(feed, item, id, name);
  1951. }
  1952. }
  1953. }
  1954. }, time);
  1955. });
  1956. }
  1957. clickLogoShowContainer() {
  1958. let that = this;
  1959. super.clickLogoShowContainer();
  1960. window.onscroll = () => {
  1961. if (parseInt(window.scrollY) > 90) {
  1962. operationLogo();
  1963. } else {
  1964. super.clickLogoShowContainer();
  1965. }
  1966. };
  1967. const operationLogo = () => {
  1968. findMark(that == null ? void 0 : that.header_logo, (logo) => {
  1969. logo.setAttribute("href", "javascript:;void(0)");
  1970. logo.setAttribute("title", "点击Logo,显示插件配置");
  1971. addEventListener(logo, "click", (e) => {
  1972. e.preventDefault();
  1973. that.isShowContainer();
  1974. });
  1975. });
  1976. };
  1977. }
  1978. common() {
  1979. let that = this;
  1980. that.addDeleteRoomButton(1e3);
  1981. setTimeout(() => {
  1982. const refreshButton = querySelector(".feed-roll-btn .primary-btn");
  1983. addEventListener(refreshButton, "click", () => {
  1984. that.addDeleteRoomButton(200);
  1985. });
  1986. }, 3e3);
  1987. }
  1988. index() {
  1989. }
  1990. detailLeftVideoList(time = 1e3, sel = ".video-page-card-small") {
  1991. timeoutSelectorAll(sel, (videoList) => {
  1992. var _a;
  1993. for (let videoDom of videoList) {
  1994. const isMark = !!videoDom.getAttribute("mark");
  1995. videoDom.setAttribute("mark", true);
  1996. const playinfo = querySelector(videoDom, ".playinfo");
  1997. const link = querySelector(videoDom, ".upname a");
  1998. const id = !!link && (link == null ? void 0 : link.href) && this.getBilibiliRoomId(link.href);
  1999. const name = (_a = querySelector(videoDom, ".upname .name")) == null ? void 0 : _a.textContent;
  2000. if (this.userIsExist(id) || this.userIsExist(name)) {
  2001. removeDOM(videoDom, true);
  2002. } else if (!isMark && id && name) {
  2003. const span = createElement("span");
  2004. span.classList = "m-span-text";
  2005. addEventListener(span, "click", () => {
  2006. if (confirm("确认删除up主 " + name + " ?")) {
  2007. removeDOM(videoDom, true);
  2008. this.addUser(id, name);
  2009. this.detailLeftVideoList(0);
  2010. }
  2011. });
  2012. appendChild(playinfo, span);
  2013. }
  2014. }
  2015. }, time);
  2016. }
  2017. async detail() {
  2018. var _a, _b;
  2019. if (new RegExp(/https:\/\/www\.bilibili\.com\/video\/(.*)/).test(local_url)) {
  2020. this.detailLeftVideoList(100, ".video-page-operator-card-small");
  2021. this.detailLeftVideoList();
  2022. const nextBtn = querySelector(".rec-footer");
  2023. addEventListener(nextBtn, "click", () => {
  2024. this.detailLeftVideoList(0);
  2025. });
  2026. }
  2027. if (/https:\/\/www.bilibili.com\/video\/.*/.test(local_url)) {
  2028. this.isFullScreen();
  2029. this.isAutoMaxVideoPro();
  2030. let result = await getBiliBiliInfoByVideoID(local_url);
  2031. console.log("视频查询结果详情:", result);
  2032. if (result.code === 0 && this.userIsExist((_a = result == null ? void 0 : result.owner) == null ? void 0 : _a.mid) || this.userIsExist((_b = result == null ? void 0 : result.owner) == null ? void 0 : _b.name)) {
  2033. this.roomIsNeedRemove();
  2034. }
  2035. }
  2036. }
  2037. async getNameByRoomId(bvId) {
  2038. var _a, _b;
  2039. let result = await getBiliBiliInfoByVideoID(bvId);
  2040. if (result.code === 0) {
  2041. return (_b = (_a = result == null ? void 0 : result.data) == null ? void 0 : _a.owner) == null ? void 0 : _b.name;
  2042. }
  2043. }
  2044. }
  2045. class DouYin extends LivePlugin {
  2046. constructor() {
  2047. super();
  2048. this.header_logo = "#root .N_HNXA04 .HQwsRJFy a";
  2049. this.full_screen_class_or_id = ".xgplayer-page-full-screen .xgplayer-icon";
  2050. this.full_button_tag_name = "div";
  2051. this.full_screen_text = "进入全屏";
  2052. this.full_cancel_text = "退出全屏";
  2053. this.auto_max_pro_class_or_id_list = "#slidelist .gear .virtual>.item";
  2054. this.init();
  2055. }
  2056. removeRoomByClickRoomName() {
  2057. this.notSupport();
  2058. }
  2059. getNameByRoomId(roomId) {
  2060. return this.notSupport();
  2061. }
  2062. getRoomIdByUrl(url) {
  2063. return this.notSupport();
  2064. }
  2065. notSupport() {
  2066. log("抖音暂时不支持该操作!");
  2067. return null;
  2068. }
  2069. common() {
  2070. this.isFullScreen();
  2071. this.isAutoMaxVideoPro();
  2072. }
  2073. }
  2074. const css$5 = `
  2075. .dark .m-container {
  2076. --m-container-background-color: var(--w-bg-darker);
  2077. }
  2078. .dark .m-container {
  2079. background-color: var(--m-container-background-color) !important;
  2080. color:var(--w-text-light) !important;
  2081. }
  2082.  
  2083.  
  2084. .dark .m-container .m-link,
  2085. .dark .m-container .m-link:visited {
  2086. color: var(--w-text) !important;
  2087. }
  2088. .m-container .m-link:hover {
  2089. color: var(--w-text-light) !important;
  2090. text-decoration: underline !important;
  2091. }
  2092.  
  2093. .dark .m-container table tr,
  2094. .dark .m-container table tbody tr:nth-child(1)
  2095. {
  2096. border-color: var(--w-text-light) !important;
  2097. }
  2098.  
  2099.  
  2100.  
  2101. `;
  2102. const css$4 = `
  2103. html {
  2104. --w-brand: #3aa675;
  2105. --w-light: #e5e7eb;
  2106. --w-brand-light: #349469;
  2107. --w-bg: #22272e;
  2108. --w-bg-light: #2b313a;
  2109. --w-bg-lighter: #262c34;
  2110. --w-bg-dark: #343b44;
  2111. --w-bg-darker: #37404c;
  2112. --w-bg-darker: var(--w-bg-dark);
  2113. --w-text: #adbac7;
  2114. --w-text-light: #cbd4dc;
  2115. --w-text-lighter: #cdd6dd;
  2116. --w-text-lightest: #8094a8;
  2117. --w-border: #3e4c5a;
  2118. --w-border-dark: #34404c;
  2119. --w-blue-link-hover:#00aeec;
  2120. --w-skeleton:#494f57;
  2121. --w-white: #fff;
  2122. }
  2123.  
  2124. ::view-transition-old(root),
  2125. ::view-transition-new(root) {
  2126. animation: none;
  2127. mix-blend-mode: normal;
  2128. }
  2129. ::view-transition-old(root) {
  2130. z-index: 10;
  2131. }
  2132. ::view-transition-new(root) {
  2133. z-index: 10000;
  2134. }
  2135. .dark::view-transition-old(root) {
  2136. z-index: 10000;
  2137. }
  2138. .dark::view-transition-new(root) {
  2139. z-index: 10;
  2140. }
  2141.  
  2142. .m-container,
  2143. .m-container .btn,
  2144. .m-container table,
  2145. .m-container table tbody,
  2146. .m-container table thead,
  2147. .m-container table tr {
  2148. margin: 0 !important;
  2149. padding: 0 !important;
  2150. border: none;
  2151. outline: none;
  2152. }
  2153. .m-container {
  2154. --m-font-color: #fff;
  2155. --m-container-background-color: #fff;
  2156. --m-container-width: 800px;
  2157. --m-container-height: 400px;
  2158. --m-container-operation-right-width: 150px;
  2159. --m-container-input-width: 100px;
  2160. --m-container-box-transition: all 0.4s ease-in-out;
  2161. --m-container-select-width: var(--m-container-input-width);
  2162. --m-container-input-outline: 1px solid rgba(8, 125, 235, 0.6) !important;
  2163. }
  2164. .m-container {
  2165. box-sizing: border-box !important;
  2166. position: fixed !important;
  2167. flex-direction: column !important;
  2168. width: var(--m-container-width) !important;
  2169. height: var(--m-container-height) !important;
  2170. top: 100px !important;
  2171. left: 50% !important;
  2172. border-radius: 10px !important;
  2173. overflow: hidden !important;
  2174. background-color: var(--m-container-background-color) !important;
  2175. z-index: 100000000 !important;
  2176. padding: 15px !important;
  2177. transition: var(--m-container-box-transition) !important;
  2178. box-shadow: 20px 20px 10px rgba(0, 0, 0, 0.1),
  2179. -1px -2px 18px rgba(0, 0, 0, 0.1) !important;
  2180. opacity: 0;
  2181. transform: translate(-50%, -150%);
  2182. }
  2183. .m-container-is-active {
  2184. opacity: 1;
  2185. transform: translate(-50%, 0%);
  2186. z-index:100000000 !important;
  2187. }
  2188. .m-container-box {
  2189. display: flex !important;
  2190. flex-direction: column !important;
  2191. width: 100% !important;
  2192. height: 100% !important;
  2193. }
  2194. .m-container .operation {
  2195. box-sizing: border-box !important;
  2196. height: auto !important;
  2197. justify-content: start !important;
  2198. }
  2199. .m-container input[type="text"] {
  2200. width: var(--m-container-input-width) !important;
  2201. box-sizing: border-box !important;
  2202. border: 1px solid rgba(8, 125, 235, 0.6) !important;
  2203. outline: none !important;
  2204. padding: 5px 10px !important;
  2205. border-radius: 20px !important;
  2206. transition: var(--m-container-box-transition);
  2207. }
  2208. .m-container input:focus {
  2209. border: 1px solid rgba(8, 125, 235, 1) !important;
  2210. }
  2211. .m-container .operation input[type="checkbox"] {
  2212. display: inline !important;
  2213. }
  2214. .m-container .operation input[type="file"] {
  2215. display: none !important;
  2216. }
  2217. .m-container table {
  2218. position: relative !important;
  2219. box-sizing: border-box !important;
  2220. overflow: hidden !important;
  2221. text-align: left !important;
  2222. flex: 1 !important;
  2223. display: flex !important;
  2224. flex-direction: column !important;
  2225. }
  2226. .m-container table tr {
  2227. margin: 5px 0 !important;
  2228. display: flex !important;
  2229. border-bottom: 1px solid rgba(0, 0, 0, 0.4) !important;
  2230. justify-content: space-between;
  2231. }
  2232. .m-container table tr td:nth-child(1),
  2233. .m-container table thead th:nth-child(1) {
  2234. width: 50px;
  2235. text-align: center !important;
  2236. }
  2237. .m-container table tr td:nth-child(2),
  2238. .m-container table tr td:nth-child(3),
  2239. .m-container table tr td:nth-child(4),
  2240. .m-container table thead th:nth-child(2),
  2241. .m-container table thead th:nth-child(3),
  2242. .m-container table thead th:nth-child(4) {
  2243. flex: 1 !important;
  2244. text-align: center !important;
  2245. white-space: nowrap !important;
  2246. overflow: hidden !important;
  2247. text-overflow: ellipsis !important;
  2248. }
  2249. .m-container table tbody {
  2250. flex: 1 !important;
  2251. overflow: auto !important;
  2252. }
  2253. .m-container table th,
  2254. .m-container table td {
  2255. padding: 10px !important;
  2256. }
  2257. .m-container table tbody tr:nth-child(1) {
  2258. border-bottom: 1px solid rgba(0, 0, 0, 0.4) !important;
  2259. }
  2260. .m-container .m-link,
  2261. .m-container .m-link:visited {
  2262. color: teal !important;
  2263. }
  2264. .m-container .m-link:hover {
  2265. color: teal !important;
  2266. text-decoration: underline !important;
  2267. }
  2268. .m-container .btn {
  2269. cursor: pointer !important;
  2270. padding: 5px 8px !important;
  2271. border: none !important;
  2272. max-width:50px !important;
  2273. color: var(--m-font-color) !important;
  2274. font-size: 1rem !important;
  2275. border-radius: 20px !important;
  2276. margin: 0 !important;
  2277. background-color: rgba(166, 169, 173, 1) !important;
  2278. z-index: 1000 !important;
  2279. outline: none !important;
  2280. box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4), 0px 0px 1px rgba(0, 0, 0, 0.4) !important;
  2281. }
  2282. .m-container .btn:hover {
  2283. box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1) !important;
  2284. }
  2285. .m-container .btn:hover {
  2286. background-color: rgba(166, 169, 173, 0.6) !important;
  2287. }
  2288. .m-container .btn-primary {
  2289. background-color: rgba(64, 158, 255, 1) !important;
  2290. }
  2291. .m-container .btn-primary:hover {
  2292. background-color: rgba(64, 158, 255, 0.6) !important;
  2293. }
  2294. .m-container .btn-success {
  2295. background-color: rgba(103, 194, 58, 1) !important;
  2296. }
  2297. .m-container .btn-success:hover {
  2298. background-color: rgba(103, 194, 58, 0.6) !important;
  2299. }
  2300. .m-container .btn-info {
  2301. background-color: rgba(119, 119, 119, 1) !important;
  2302. }
  2303. .m-container .btn-info:hover {
  2304. background-color: rgba(119, 119, 119, 0.6) !important;
  2305. }
  2306. .m-container .btn-warning {
  2307. background-color: rgba(230, 162, 60, 1) !important;
  2308. }
  2309. .m-container .btn-warning:hover {
  2310. background-color: rgba(230, 162, 60, 0.6) !important;
  2311. }
  2312. .m-container .btn-danger {
  2313. background-color: rgba(245, 108, 108, 1) !important;
  2314. }
  2315. .m-container .btn-danger:hover {
  2316. background-color: rgba(245, 108, 108, 0.6) !important;
  2317. }
  2318. #m-container-box1 {
  2319. position: absolute !important;
  2320. z-index: 10000000 !important;
  2321. transition: var(--m-container-box-transition) !important;
  2322. width: 100% !important;
  2323. height: 100% !important;
  2324. }
  2325. #m-container-box2 {
  2326. position: absolute !important;
  2327. z-index: 9999 !important;
  2328. transition: var(--m-container-box-transition) !important;
  2329. ;
  2330. width: 100% !important;
  2331. height: 100% !important;
  2332. }
  2333. .m-ani-left-is-active {
  2334. transform: translateX(0) !important;
  2335. visibility: visible !important;
  2336. opacity: 1 !important;
  2337. }
  2338. .m-ani-left-is-close {
  2339. transform: translateX(-100%) !important;
  2340. visibility: hidden !important;
  2341. opacity: 0 !important;
  2342. }
  2343. .m-ani-right-is-active {
  2344. transform: translateX(0) !important;
  2345. visibility: visible !important;
  2346. opacity: 1 !important;
  2347. }
  2348. .m-ani-right-is-close {
  2349. transform: translateX(100%) !important;
  2350. visibility: hidden !important;
  2351. opacity: 0 !important;
  2352. }
  2353. .m-type-container .m-type-item {
  2354. display: flex !important;
  2355. height: 30px !important;
  2356. }
  2357. .m-type-container .m-type-item .m-type-item-left {
  2358. flex: 1 !important;
  2359. position: relative !important;
  2360. box-sizing: border-box !important;
  2361. overflow: hidden !important;
  2362. }
  2363. .m-type-container .m-type-item .m-type-item-right {
  2364. width: var(--m-container-operation-right-width);
  2365. text-align: center !important;
  2366. }
  2367. .m-type-container .m-type-item .m-type-item-left .m-select-option-container,
  2368. .m-type-container .m-type-item .m-type-item-left .m-select-input-container {
  2369. transition: var(--m-container-box-transition) !important;
  2370. position: absolute !important;
  2371. width: 100% !important;
  2372. }
  2373. .m-type-container .m-select {
  2374. display: flex !important;
  2375. }
  2376. .m-type-container .m-select .m-select-item {
  2377. margin-right: 10px !important;
  2378. }
  2379. .m-type-container .m-select .m-select-item:last-child {
  2380. margin-right: 0 !important;
  2381. }
  2382. .m-type-container .m-select select {
  2383. width: 100px !important;
  2384. color: rgba(119, 119, 119, 0.9) !important;
  2385. }
  2386. .m-type-container .m-select select::placeholder {
  2387. color: rgba(119, 119, 119, 0.9) !important;
  2388. }
  2389. .m-type-container .m-tag-select {
  2390. width: calc(var(--m-container-select-width)/2) !important;
  2391. outline: none !important;
  2392. border: 1px solid rgba(8, 125, 235, 0.6) !important;
  2393. padding: 5px 8px !important;
  2394. padding: 5px 10px !important;
  2395. }
  2396. .m-container select {
  2397. border: 1px solid rgba(8, 125, 235, 1) !important;
  2398. }
  2399. .m-type-container .m-select .m-option-default {
  2400. color: rgba(119, 119, 119, 0.6) !important;
  2401. }
  2402. .m-type-container input[type="text"] {
  2403. width: 350px !important;
  2404. }
  2405. .m-type-container .m-select input {
  2406. width: var(--m-container-input-width) !important;
  2407. }
  2408. .m-type-container .m-search-msg {
  2409. color: red !important;
  2410. }
  2411. .m-span-text {
  2412. transition: all 0.3s ease;
  2413. cursor: pointer !important;
  2414. opacity: 0;
  2415. float:right;
  2416. display:inline-block;
  2417. margin:0 10px;
  2418. transform: scale(0.5);
  2419. font-size:20px;
  2420. position:relative;
  2421. }
  2422.  
  2423. .m-span-text::before{
  2424. content:"🧹";
  2425. cursor: pointer !important;
  2426. }
  2427. .m-container-display-block{
  2428. display:block !important;
  2429. }
  2430. .m-container-display-none{
  2431. display:none !important;
  2432. }
  2433.  
  2434. ${css$5}
  2435.  
  2436. `;
  2437. const darkCss$1 = `
  2438.  
  2439. .dark .layout-Module-head.is-fixed
  2440. {
  2441. background: var(--w-bg) !important;
  2442. }
  2443.  
  2444.  
  2445.  
  2446.  
  2447. .dark .Horn4Category-popWrap
  2448. {
  2449. background: var(--w-bg) !important;
  2450. background-image:none !important;
  2451. border:1px solid var(--w-text-light) !important;
  2452. }
  2453.  
  2454. .dark body,
  2455. .dark .layout-List-item,.dark .layout-List-item .DyCover,
  2456. .dark .Header-wrap,.dark .layout-Module-container,.dark .AnchorRank-more,
  2457. .dark .Elevator,.dark .Elevator-item,.dark .Elevator-item.is-active>span::before,.dark .public-DropMenu-drop,
  2458. .dark .Category-item,.dark .DropMenuList-linkAll,
  2459. .dark .Header-menu-wrap,.dark .DyListCover-wrap,
  2460. .dark .layout-Module-label--hasList.is-active, .dark .layout-Module-label,
  2461. .dark .ListFooter .dy-Pagination-next, .dark .ListFooter .dy-Pagination-prev,
  2462. .dark .ListFooter .dy-Pagination .dy-Pagination-item,.dark .ListFooter .dy-Pagination .dy-Pagination-item-active,.dark .ListFooter .ListFooter-btn-wrap,
  2463. .dark .layout-Player-title,.dark .layout-Player-aside,
  2464. .dark .layout-Player-asideMain,.dark .layout-Player-barrage,.dark .layout-Player-toolbar,
  2465. .dark .Barrage-listItem,.dark .Barrage-EntranceIntroduce, .dark .Barrage-roomVip--super,
  2466. .dark .DiamondsFansBarrage, .dark #js-floatingbarrage-container li, .dark #js-fansflating-barrage,
  2467. .dark .Barrage-EntranceIntroduce-Anchor, .dark .Barrage-EntranceIntroduce-Goodgame, .dark .FollowGuide,
  2468. .dark .ChatSend-button,.dark .BarrageBuffer,
  2469. .dark .Barrage-FansHome-content,.dark .Barrage-FansHome,
  2470. .dark .ChatSend-txt,.dark .layout-Classify-card,.dark .cate2TagB-item,
  2471. .dark .PlayerToolbar-signCont,.dark .dy-Modal-content,.dark .CustomGroupCommon .dy-Modal-title,
  2472. .dark .CustomGroupManager-title,.dark .FilterKeywords,
  2473. .dark .Barrage-toolbarClear .Barrage-toolbarText,.dark .Barrage-toolbarLock:hover .Barrage-toolbarText,
  2474. .dark .dy-ModalRadius-content, .dark .categoryTab-item, .dark customizeModal-submit, .dark .customizeModal-cancel, .dark .search-ipt,
  2475. .dark .addedCategory-item, .dark .Search, .dark .Header-wrap.is-start .Search, .dark .Search-historyList>li, .dark .Search-text,
  2476. .dark .ListHeader-hero-header,.dark .layout-Module-label--hasList,.dark .ListHeader-pop,.dark .layout-Module-filter-more,
  2477. .dark .Barrage-toolbarClear, .dark .Barrage-toolbarLock,.dark .AssembleExpressHeader-head, .dark .Emotion, .dark .ShieldTool-list,.dark .BarrageTips,
  2478. .dark .BarrageTips .BarrageTips--active,.dark .FansMedalDialog-normal, .dark .ChatBarrageCollect .ChatBarrageCollect-tip,.dark .AssembleExpressHeader,
  2479. .dark .TagItem,.dark .ChatBarrageCollectPop , .dark .Horn4Category-popWrap,.dark .Horn4Category-inputor,.dark .ChatFansBarragePop,
  2480. .dark .PopularBarrage .PopularBarragePanel-foot, .dark .PopularBarrage .PopularBarragePanelStyle, .dark .BarrageWordPanel-card,
  2481. .dark .BarrageWordPanel-btn,.dark .BarrageWordPanel-header h2,.dark .BarrageWordPanel-header,.dark .CustomGroupManager-saveBtn,
  2482. .dark .DyRecCover-wrap,.dark .CustomGroupCommon .dy-Modal-header,.dark .CustomGroupCommon .dy-Modal-close-x,
  2483. .dark .CustomGroupCommon .dy-Modal-close,.dark .CustomGroupCommon,.dark .dy-Modal-close,.dark .dy-Modal-header,
  2484. .dark .dy-Modal-footer button,.dark .FilterSwitchStatus-switch,.dark .LevelFilKeyTab .tab.active,.dark .LevelFilterLimit,
  2485. .dark .BarrageFilter-fkbutton, .dark .FilterKeywords-edit-input, .dark .LevelFilterLimit-input,.dark .LevelFilKeyTab,
  2486. .dark .Search-recommend:hover,.dark .DropPaneList.HistoryList .DropPaneList-title,.dark .index-listWrap-jz2Rt,
  2487. .dark #js-footer
  2488. {
  2489. background: var(--w-bg-darker) !important;
  2490. color: var(--w-text-light) !important;
  2491. }
  2492.  
  2493.  
  2494.  
  2495.  
  2496. .dark .Elevator-item.is-active>span,
  2497. .dark .Elevator-item:nth-child(odd)
  2498. {
  2499. background-color: rgba(var(--w-bg-darker),0.7) !important;
  2500. }
  2501.  
  2502. .dark .dy-ModalRadius-header, .dark .addedCategory-count,
  2503. .dark .RoomList .layout-Module-title, .dark .RoomList .layout-Module-title a,.dark layout-Module-title span,
  2504. .dark .AnchorRank .layout-Module-title,.dark .AnchorRank .layout-Module-title a,
  2505. .dark .DyCover-intro,.dark .DyCover-user,.dark .DyCover-zone,.dark a, .dark .layout-Module-title a,
  2506. .dark .DyRecCover-zone,.dark .DyRecCover-intro,.dark .DyRecCover-userName,.dark .DyRecCover-tag,
  2507. .dark .Category-item,.dark .DropMenuList-name, .dark .DropMenuList-linkAll,.dark .ListHeader-title,
  2508. .dark .layout-Module-label--hasList.is-active, .dark .layout-Module-label.is-active,
  2509. .dark .DyListCover-intro,.dark .DyListCover-zone,.dark .DyListCover-hot,.dark .DyListCover-userName,
  2510. .dark .ListFooter .dy-Pagination .dy-Pagination-item-active a,
  2511. .dark .ListFooter .dy-Pagination .dy-Pagination-item,
  2512. .dark .ListFooter .dy-Pagination .dy-Pagination-item-active,
  2513. .dark .ListFooter .ListFooter-btn-input,.dark .ListFooter-btn,.dark .ListFooter-btn-label,
  2514. .dark .Title-header,.dark .Title-report,.dark .Title-anchorName,
  2515. .dark .Barrage-main .Barrage-content,.dark .Barrage-roomVip--super,
  2516. .dark .PlayerToolbar span,.dark .Title-followNum, .dark .PlayerToolbar-signCont,
  2517. .dark .Barrage-EntranceIntroduce-Anchor, .dark .Barrage-EntranceIntroduce-Goodgame ,.dark .Barrage-EntranceIntroduce-Content,
  2518. .dark .SwipeTabsContent .tabItem ,.dark .layout-Classify-card>strong ,.dark .secondCateCard-hot,
  2519. .dark .PlayerToolbar-signCont .RoomText-list .SignBaseComponent-text-link,.dark .customizeModal-title>h3,.dark .Search-label, .dark .Search-historyList>li,
  2520. .dakr .Search-hotList li,.dark .Search-linkIcon svg,.dark .categoryTab-tab,.dark .ListHeader-hero-content-tag,
  2521. .dark .Barrage-toolbarClear, .dark .Barrage-toolbarLock,.dark .Barrage-toolbarText,.dark .ShieldTool-listItem,.dark .BarrageTips,.dark .ChatBarrageCollectPop-title,
  2522. .dark .FansBarrageColor-item-txt,.dark .ChatFansBarragePop-txt,
  2523. .dark .PopularBarrage .PopularBarragePanel-descFansPrivilege,
  2524. .dark .PopularBarrage .PopularBarragePanel-descFansRenew,
  2525. .dark .PopularBarrage .PopularBarragePanel-descLock,.dark .dy-Modal-close,
  2526. .dark .ChatFansBarragePop-diamondsTxt,.dark .BarrageWordPanel-example,.dark .BarrageWordPanel-feedbackTips,
  2527. .dark .BarrageWordPanel-block h3,.dark .BarrageWordPanel-reward,.dark .BarrageWordPanel-tips,
  2528. .dark .CustomGroupManager-title strong,.dark .CustomGroupManager-groupItem,.dark .CustomGroupManager-checkItem>span,
  2529. .dark .CustomGroupManager,.dark .LevelFilKeyTab .tab, .dark .layout-Result,
  2530. .dark .FKNokeywords-title, .dark .Search-recommend-info p,.dark .layout-Module-title,
  2531. .dark .DropPaneList-live.is-live,.dark .Search-category h3,.dark .Search-category p,.dark .Search-category p span,
  2532. .dark .FilterKeywords-allText, .dark .FilterKeywords-intelligentText
  2533. {
  2534. color: var(--w-text-light) !important;
  2535. }
  2536.  
  2537.  
  2538. .dark .Search-recommend-info h3,.dark .Search-feedback-section,.dark .Search-feedback-section,
  2539. .dark .Header-menu-link.active a:hover,
  2540. .dark .RoomList .layout-Module-title:hover,
  2541. .dark .RoomList .layout-Module-title a:hover,
  2542. .dark .DyCover-intro:hover,
  2543. .dark .DyCover-user:hover,
  2544. .dark .DyCover-zone:hover,
  2545. .dark a:hover,.dark .FilterSwitchStatus h3,.dark .FilterSwitchStatus-status,
  2546. .dark .layout-Module-title a:hover,
  2547. .dark .DropMenuList-name:hover,
  2548. .dark .DropMenuList-linkAll:hover,
  2549. .dark .ListHeader-title,
  2550. .dark .layout-Module-label--hasList.is-active:hover,
  2551. .dark .layout-Module-label.is-active:hover,
  2552. .dark .ListFooter .dy-Pagination .dy-Pagination-item-active a:hover,
  2553. .dark .ListFooter .dy-Pagination .dy-Pagination-item:hover,
  2554. .dark .ListFooter .dy-Pagination .dy-Pagination-item-active:hover,
  2555. .dark .Title-anchorName:hover,.dark .Title-row-icon,.dark .Title-row-text,
  2556. .dark .SwipeTabsContent .tabItem:hover,.dark .SwipeTabsContent .tabItem.active,
  2557. .dark .layout-Classify-card>strong:hover,.dark .secondCateCard-hot:hover,
  2558. .dark .Barrage-toolbarClear:hover, .dark .Barrage-toolbarLock:hover,
  2559. .dark .ShieldTool-listItem.is-checked .ShieldTool-checkText,.dark .BarrageTips .BarrageTips--active,
  2560. .dark .ChatFansBarragePop-txt span,.dark .dark .ChatFansBarragePop-diamondsTxt span,.dark .ChatFansBarragePop-diamondsTxt span,
  2561. .dark .PopularBarrage .PopularBarragePanel-descFansPrivilege:hover,
  2562. .dark .PopularBarrage .PopularBarragePanel-descFansRenew:hover,.dark .DropPaneList-name,
  2563. .dark .PopularBarrage .PopularBarragePanel-descLock:hover,.dark .DropPaneList span,
  2564. .dark .Search-content-title, .dark .Search-default-title, .dark .Search-history-title, .dark .Search-hot-title,
  2565. .dark .FilKeyTab .tab.active
  2566. {
  2567. color: var(--w-text) !important;
  2568. }
  2569.  
  2570.  
  2571.  
  2572.  
  2573. .dark .dark .CustomGroupManager-saveBtn,.dark .CustomGroupCommon .dy-Modal-header,
  2574. .dark .Search-historyList>li,.dark .layout-List-item,.dark .DyListCover-wrap,.dark .layout-Module-container,
  2575. .dark .ListFooter .dy-Pagination-item,.dark .ListFooter .dy-Pagination-next,.dark .ListFooter .dy-Pagination-prev,
  2576. .dark .ListFooter .dy-Pagination .dy-Pagination-item,.dark .ListFooter .dy-Pagination .dy-Pagination-item-active,
  2577. .dark .layout-Player-aside,.dark .layout-Player-asideMain, .dark .layout-Player-barrage,
  2578. .dark .PopularBarrage .PopularBarragePanel-foot,.dark .BarrageWordPanel-card,.dark .BarrageWordPanel-btn,
  2579. .dark .dy-Modal-footer button,.dark .LevelFilterLimit-input,
  2580. .dark .layout-Classify-card, .dark customizeModal-submit,
  2581. .dark .customizeModal-cancel,.dark .ChatBarrageCollect .ChatBarrageCollect-tip
  2582. {
  2583. border: 1px solid var(--w-border) !important;
  2584. }
  2585.  
  2586.  
  2587.  
  2588.  
  2589. .dark .Header-wrap,.dark .layout-Player-title,
  2590. .dark .public-DropMenu-drop-main:before,
  2591. .dark .categoryTab-head,.dark .ListHeader-hero-header,.dark .ListHeader-hero-content-icon,
  2592. .dark .EmotionTab,.dark .ChatFansBarragePop-describe,.dark .FansMedalPanel-container,
  2593. .dark .LevelFilterLimit,.dark .FKNokeywords-title
  2594. {
  2595. border-color:var(--w-border) !important;
  2596. }
  2597.  
  2598.  
  2599.  
  2600. .dark .Category-item,
  2601. .dark .layout-Module-label--hasList.is-active,
  2602. .dark .layout-Module-label,
  2603. .dark .DropMenuList-linkAll,
  2604. .dark .ListFooter .ListFooter-btn-wrap,
  2605. .dark .cate2TagB-item,
  2606. .dark .ChatSend-button,.dark .ChatSend-txt,
  2607. .dark .PlayerToolbar-signCont .RoomText-list .SignBaseComponent-text-link,
  2608. .dark .categoryTab-item,.dark .Header-wrap.is-start .Search ,.dark .addedCategory-item .dark .search-ipt,
  2609. .dark .layout-Module-filter-more,.dark .Barrage-toolbarClear, .dark .Barrage-toolbarLock,
  2610. .dark .ShieldTool-list,.dark .BarrageTips,.dark .ChatBarrageCollect .ChatBarrageCollect-tip:hover,
  2611. .dark .AssembleExpressHeader,.dark .TagItem,
  2612. .dark .dy-Modal-footer button:hover,.dark .FilterSwitchStatus-switch,
  2613. .dark .BarrageWordPanel-btn,.dark .LevelFilterLimit-input:focus,
  2614. .dark .BarrageFilter-fkbutton, .dark .FilterKeywords-edit-input, .dark .LevelFilterLimit-input,
  2615. .dark .FilterKeywords-edit-input:focus, .dark .LevelFilterLimit-input:focus
  2616. {
  2617. border: 1px solid var(--w-text-light) !important;
  2618. }
  2619.  
  2620.  
  2621. .dark .Category-item:hover,
  2622. .dark .layout-Module-label--hasList.is-active:hover,
  2623. .dark .layout-Module-label:hover,
  2624. .dark .DropMenuList-linkAll:hover,
  2625. .dark .categoryTab-item:hover,
  2626. .dark .addedCategory-item:hover,
  2627. .dark .Barrage-toolbarClear:hover, .dark .Barrage-toolbarLock:hover,
  2628. .dark .ChatBarrageCollect .ChatBarrageCollect-tip:hover,.dark .TagItem:hover,
  2629. .dark .BarrageWordPanel-btn:hover
  2630. {
  2631. border: 1px solid var(--w-text) !important;
  2632. }
  2633.  
  2634.  
  2635. .dark .Barrage-roomVip--super,
  2636. .dark .Barrage {
  2637. border: none !important;
  2638. }
  2639.  
  2640.  
  2641. .dark .DyCover,.dark .Search-yuba,
  2642. .dark .layout-Card-history, .dark .layout-Card-rank,
  2643. .dark .layout-Cover-item,.dark .Search-input-pane,
  2644. .dark .ListRecommend-refresh,.dark .ListHeader-pop-label,
  2645. .dark layout-Module-label,.dark .Search-default-item,
  2646. .dark .Search-recommend .Search-direct,.dark Search-category,
  2647. .dark .layout-Search-input,.dark .layout-Search-btn,
  2648. .dark .Search-feedback-textarea,.dark .VideoCollectionMix .layout-videoCollection-item,
  2649. .dark .categoryBoxB-editB .edit,
  2650. .dakr .Search-direct {
  2651. background: var(--w-bg-darker) !important;
  2652. border:1px solid var(--w-text) !important;
  2653. color: var(--w-text-light) !important;
  2654. }
  2655.  
  2656.  
  2657. .dark .DyCover:hover,.dark .layout-Search-btn:hover,
  2658. .dark .dark Search-category:hover,.dark .categoryBoxB-editB .edit:hover,
  2659. .dark .Search-default-item:hover,.dark .Search-recommend .Search-direct:hover,
  2660. .dark .Category-item:hover,.dark .ListRecommend-refresh:hover,
  2661. .dakr .Search-direct:hover,.dark .ListHeader-pop-label:hover,
  2662. .dark .Search-topicRecommend:hover,.dark layout-Module-label:hover,
  2663. .dark .Search-recommend:hover {
  2664. background: var(--w-bg) !important;
  2665. border:1px solid var(--w-text-light) !important;
  2666. color: var(--w-text) !important;
  2667. }
  2668.  
  2669. .dark .layout-Tab-container.is-fixed,
  2670. .dark .dy-ModalRadius-footer button,
  2671. .dark .layout-Tab-item,.dark .dy-ModalRadius-close,
  2672. .dark .DropPaneList>a{
  2673. background: var(--w-bg-dark) !important;
  2674. border: none !important;
  2675. color: var(--w-text-light) !important;
  2676. }
  2677.  
  2678. .dark .dy-ModalRadius-close:hover,.dy-ModalRadius-footer button:hover,
  2679. .dark .layout-Tab-item.is-active,.dark .layout-Tab-item:hover,
  2680. .dark .Search-rank-wrapper:hover .Search-rank,
  2681. .dark .YubaMessage-link:hover,
  2682. .dark .layout-Tab-item:hover,
  2683. .dark .Search-hotList li:hover,
  2684. .dark .DropPaneList>a:hover {
  2685. background: var(--w-bg) !important;
  2686. color: var(--w-text) !important;
  2687. }
  2688.  
  2689. `;
  2690. const css$3 = is_douyu ? `
  2691.  
  2692. .layout-List-item .DyCover-content .DyCover-user,.layout-Cover-item .DyListCover-userName,.Title-blockInline .Title-anchorName h2{
  2693. cursor:pointer !important;
  2694. }
  2695. .layout-List-item .DyCover-content .DyCover-user:hover,.layout-Cover-item .DyListCover-userName:hover,.Title-blockInline .Title-anchorName h2:hover {
  2696. color:rgb(255, 135, 0) !important;
  2697. }
  2698.  
  2699. .layout-Section.layout-Slide .layout-Slide-player,
  2700. .layout-Slide-bannerInner,
  2701. #lazyModule3,
  2702. #lazyModule4,
  2703. #lazyModule5,
  2704. #lazyModule6,
  2705. #lazyModule7,
  2706. #lazyModule8,
  2707. #lazyModule23,
  2708. #lazyModule24,
  2709. #js-room-activity,
  2710. #js-right-nav,
  2711. #js-bottom,
  2712. #js-header .Header .HeaderNav,
  2713. #js-header .Header .HeaderGif-left,
  2714. #js-header .Header .HeaderGif-right,
  2715. .Header-download-wrap,
  2716. .AnchorInterToolsUser,
  2717. .RechangeJulyPopups,
  2718. li.Header-menu-link,
  2719. .layout-Main .layout-Customize,
  2720. .HeaderCell-label-wrap,
  2721. .Title-AnchorLevel,.RoomVipSysTitle,
  2722. .Aside-nav .Aside-nav-item,
  2723. .Title-roomInfo .Title-row,
  2724. #player-marvel-controller+div,
  2725. .layout-Player-main .GuessGameMiniPanelB-wrapper,
  2726. #js-player-asideMain #layout-Player-aside .FirePower,
  2727. .layout-Player-video .layout-Player-videoAbove .ChargeTask-closeBg,
  2728. #bc4-bgblur,.Search-ad,
  2729. .Baby-image.is-achievement,
  2730. .multiBitRate-da4b60{
  2731. display:none !important;
  2732. }
  2733.  
  2734.  
  2735. li.Header-menu-link:nth-child(1),
  2736. li.Header-menu-link:nth-child(2),
  2737. li.Header-menu-link:nth-child(3),
  2738. .Aside-nav .Aside-nav-item:nth-child(1)
  2739. {
  2740. display:inline-block !important;
  2741. }
  2742.  
  2743. .layout-Player-aside .layout-Player-chat,.layout-Player-aside .layout-Player-chat .ChatToolBar {
  2744. display:block !important;
  2745. }
  2746.  
  2747.  
  2748. .Barrage-main .UserLevel,
  2749. .Barrage-main .js-user-level,
  2750. .Barrage-main .Barrage-icon,
  2751. .Barrage-main .Motor,
  2752. .Barrage-main .Motor-flag,
  2753. .Barrage-main .Barrage-hiIcon,
  2754. .Barrage-main .UserGameDataMedal,
  2755. .Barrage-main .ChatAchievement,
  2756. .Barrage-main .Barrage-notice,
  2757. .layout-Player .layout-Player-announce,
  2758. .layout-Player .layout-Player-rank,
  2759. .MatchSystemTeamMedal,
  2760. #js-player-video .ScreenBannerAd,
  2761. .layout-Main #layout-Player-aside .BarrageSuspendedBallAd,
  2762. .layout-Main #layout-Player-aside .SignBarrage,
  2763. #js-player-video-case .VRTips~div,
  2764. .layout-Main .Title-roomInfo .Title-row,
  2765. .layout-Main .ToTopBtn,
  2766. .Header-right .public-DropMenu-drop .DropPane-ad,
  2767. .Header-right .CloudGameLink,
  2768. .Header-menu-wrap .DropMenuList-ad,
  2769. .public-DropMenu-drop-main div.Header-UserPane-top~div,
  2770. #js-player-dialog .LiveRoomLoopVideo,
  2771. .Header-search-wrap .Search label,
  2772. .RedEnvelopAd.RedEnvelopAdMouseDisable,
  2773. .Barrage .Barrage-userEnter{
  2774. display:none !important;
  2775. }
  2776.  
  2777. /* 一般禁用模式 */
  2778. .layout-Player-main #js-player-toolbar{
  2779. display:block;
  2780. }
  2781. #root div.layout-Main{
  2782. margin-top:70px !important;
  2783. display:block !important;
  2784. width:auto !important;
  2785. max-width:auto !important;
  2786. }
  2787. #root>div,
  2788. #root>div .wm-general-bgblur
  2789. {
  2790. background-image:none !important;
  2791. }
  2792.  
  2793. .Title-roomInfo .Title-row:nth-child(1),
  2794. .Title-roomInfo .Title-row:nth-child(2) {
  2795. display:block !important;
  2796. }
  2797.  
  2798. .layout-Player-main .Title-roomInfo .is-normal .Title-blockInline,
  2799. .layout-Player-main .Title-roomInfo .is-normal:nth-child(2)
  2800.  
  2801. {
  2802. display:none !important;
  2803. }
  2804.  
  2805. .layout-Player-main .Title-roomInfo .is-normal .Title-blockInline:nth-child(0),
  2806. .layout-Player-main .Title-roomInfo .is-normal .Title-blockInline:nth-child(1),
  2807. .layout-Player-main .Title-roomInfo .is-normal .Title-blockInline:nth-child(2)
  2808. {
  2809. display:inline-block !important;
  2810. }
  2811.  
  2812. .Barrage-main .Barrage-content {
  2813. color:#333 !important;
  2814. }
  2815. .Barrage-main .Barrage-nickName{
  2816. color:#2b94ff !important;
  2817. }
  2818. .Barrage-listItem{
  2819. color: #333 !important;
  2820. background-color: #f2f5f6 !important;
  2821. }
  2822.  
  2823. .Header-search-wrap input#header-search-input::placeholder {
  2824. color: transparent !important;
  2825. opacity:0 !important;
  2826. }
  2827.  
  2828. #js-aside,
  2829. .layout-Player-main #js-player-toolbar {
  2830. display:none;
  2831. }
  2832.  
  2833. .m-container {
  2834. --m-container-input-width: 120px;
  2835. }
  2836.  
  2837. ${darkCss$1}
  2838.  
  2839.  
  2840. ` : "";
  2841. const darkCss = `
  2842.  
  2843. /* 修改背景和字体颜色 */
  2844. .dark body,
  2845. .dark #main_col,.dark .room-core,
  2846. .dark input,.dark input:focus, .dark textarea,.dark textarea:focus,
  2847. .dark .hy-header-style-normal .duya-header-wrap,.dark .duya-header,.dark .duya-header .duya-header-bd,
  2848. .dark #J_liveListNav dl dd div.role-box--CmncxF51UUP9Y9q3Gf4Tt.role-box_3--2j_unpb869X0sxOjH9L165, .dark #J_liveListNav dl dd div.role-box--CmncxF51UUP9Y9q3Gf4Tt.role-box_3--2j_unpb869X0sxOjH9L165:hover,
  2849. .dark #J_liveListNav dl dd div li,.dark #J_liveListNav dl dd div li:hover,
  2850. .dark .js-responded-list,.dark .program-preview-box .preview-bd,
  2851. .dark .game-live-item,.dark .game-live-item .txt .num,
  2852. .dark .game-live-item .txt .game-type a,.dark .game-live-item .txt .game-type ,
  2853. .dark .live-box .box-hd .more-list li,.dark .Category--2-gctJ3idXKRr9fHBvo6NK .SecTitle--1gf_r_H6RSc--8znfHWnx4,
  2854. .dark .nav-expand-list,.dark .nav-expand-list-more ,
  2855. .dark #js-game-list li,.dark .mod-list .box-hd .filter dd .tag-layer,.dark #J_mainWrap,
  2856. .dark .room-hd,.dark .room-core-r,
  2857. .dark .room-sidebar,.dark .room-player-gift-placeholder,
  2858. .dark #chat-room__wrap #chat-room__list div,.dark #chat-room__wrap #chat-room__list div a,
  2859. .dark #js-preview-box,.dark #recom-banners,.dark #tipsOrchat,
  2860. .dark .banners-box,.dark .box-recom .recom-banners,.dark .box-recom .recom-moments,
  2861. .dark .hotMoment-box .moment-item .moment-comment .comment-item,.dark #J_RoomChatSpeaker textarea,
  2862. .dark .chat-room__input,.dark .chat-room__ft,
  2863. .dark .room-panel,.dark .Panel--8WJ1xUECB7O5tfnF11lg,
  2864. .dark .subscribe-live-item,.dark .list-hd .follow-ctrl,
  2865. .dark .btn-more,.dark #js-search-main .host-item,.dark #js-search-main .host-item .desc,
  2866. .dark .search-left .superStar-item,.dark .chat-room__input .btn-sendMsg ,
  2867. .dark .nav-expand-list.nav-expand-game span a,.dark .chat-room__ft .chat-emot div,
  2868. .dark #tipsOrchat ._PortalChatPanelRoot div, .dark .ddJUGO,
  2869. .dark .laypageskin_default a,.dark .laypage_main button,.dark .laypage_main input,
  2870. .dark .player-gift-wrap,.dark .checkbox--3UDS8fEzoJbhidQEBAym6M.checked--2qEbUox3t-pKVluoe87qMG i,
  2871. .dark .chat-room__bd .chat-room__scroll .clearBtn,
  2872. .dark .chat-room__bd .chat-room__scroll .lockBtn,
  2873. .dark .panel--17CN9xHGgPu8Nq3SPsiM8u .panel-hd-112tPbAPeziQOTXN_KaP20,
  2874. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-off,
  2875. .dark .listItem--2DQMeljGuIpJJbgUmLePE3,.dark .listItem--2DQMeljGuIpJJbgUmLePE3 span,
  2876. .dark .barrageBox--12mXUQ-jjQe4g8cXRIDZnw .title--3ejSSMCTSLSPah47f_19h-,
  2877. .dark .duya-header-search input,.dark .inpage-advice-list li:hover,
  2878. .dark #play2 .content .content-aside>div,.dark #play2 .content .content-aside>div h2,
  2879. .dark #play2 .content .content-aside>div .more,.dark .main-info,
  2880. .dark .comment-container textarea, .dark .main-vplayer .vplayer-wrap .video_embed .video_embed_flash,
  2881. .dark .loGrI3HWkrL4-I82d11qx,
  2882. .dark .loGrI3HWkrL4-I82d11qx ._5zt-PSmfE5nKpsIw9OQE,
  2883. .dark .loGrI3HWkrL4-I82d11qx ._5zt-PSmfE5nKpsIw9OQE .MuTvmvGkEFS9kogNu9hjs,
  2884. .dark .loGrI3HWkrL4-I82d11qx ._5zt-PSmfE5nKpsIw9OQE .MuTvmvGkEFS9kogNu9hjs:focus,
  2885. .dark #play2, .dark .duya-header-bd,.dark .aside-danmulist .danmulist-header,
  2886. .dark .search-suggest, .dark .search-suggest ,
  2887. .dark .search-suggest .search-item:hover,
  2888. .dark .search-suggest .search-item.current,
  2889. .dark #J_liveListNav dl dd span,
  2890. .dark .huya-footer{
  2891. background: var(--w-bg-darker) !important;
  2892. color: var(--w-text-light) !important;
  2893. }
  2894.  
  2895.  
  2896. /* 修改字体颜色 */
  2897. .dark .hy-nav-item-on .hy-nav-link,
  2898. .dark .hy-nav-link:hover {
  2899. background: none !important;
  2900. color: #fff !important;
  2901. }
  2902.  
  2903.  
  2904. /* 修改border */
  2905.  
  2906. .dark .loGrI3HWkrL4-I82d11qx ._5zt-PSmfE5nKpsIw9OQE,
  2907. .dark .search-suggest .search-item:hover,
  2908. .dark .search-suggest .search-item.current,
  2909. .dark .hy-nav-item-on .hy-nav-link {
  2910. border:1px solid var(--w-text-light) !important;
  2911. }
  2912.  
  2913. /* 修改字体颜色 */
  2914. .dark .duya-header a, .dark p,.dark span,
  2915. .dark h1,.dark h2, .dark h3,.dark h4,.dark h5,.dark h6
  2916. .dark .duya-header-nav .hy-nav-item a,
  2917. .dark .duya-header-right a,
  2918. .dark .liveList-title a,
  2919. .dark .game-live-item .title,
  2920. .dark .game-live-item .txt,
  2921. .dark .duya-header i,
  2922. .dark .video-funny .title span,
  2923. .dark .live-box .box-hd .title a,
  2924. .dark .hy-header-style-skr .hy-nav-link,
  2925. .dark .Category--2-gctJ3idXKRr9fHBvo6NK .Item--2Tc1DF80qnq4qFUM3vHPPM a,
  2926. .dark #js-game-list li a .g-gameCard-fullName,
  2927. .dark .box-hd .title,
  2928. .dark .mod-list .box-hd .filter dd .tag-layer,
  2929. .dark .room-hd .host-info .host-title,
  2930. .dark .room-hd .host-name,
  2931. .dark .recom-title,
  2932. .dark .page-ctrl,
  2933. .dark .page-ctrl .ctrl-left,
  2934. .dark .page-ctrl .ctrl-right,
  2935. .dark .page-ctrl .ctrl-page,
  2936. .dark #chat-room__wrap #chat-room__list div a,
  2937. .dark #chat-room__wrap #chat-room__list div a span,
  2938. .dark .program-preview-box .preview-list .preview-item .preview-link,
  2939. .dark .program-preview-box .preview-hd .title,
  2940. .dark .program-preview-box .preview-list .preview-item .preview-line,
  2941. .dark .chat-room__list .msg-bubble span.msg,
  2942. .dark .subscribe-live-item .txt .msg-row .nick,
  2943. .dark .subscribe-live-item .txt .msg-row .intro,
  2944. .dark .subscribe-live-item .txt .msg-row .num,
  2945. .dark .list-hd .title,
  2946. .dark .list-hd .follow-ctrl .icon,
  2947. .dark .search-left .superStar-item .nick,
  2948. .dark .search-left .superStar-item .recommend,
  2949. .dark .search-left .superStar-item .room,
  2950. .dark .chat-room__list .msg-bubble .colon,
  2951. .dark .chat-room__list .msg-bubble .msg,
  2952. .dark .chat-room__input .btn-sendMsg,
  2953. .dark #tipsOrchat .live-tips,
  2954. .dark #tipsOrchat ._PortalChatPanelRoot div p,
  2955. .dark #tipsOrchat ._PortalChatPanelRoot div span,
  2956. .dark #tipsOrchat ._PortalChatPanelRoot div i,.dark .checkbox--3UDS8fEzoJbhidQEBAym6M i,
  2957. .dark .checkbox--3UDS8fEzoJbhidQEBAym6M span,
  2958. .dark .listItem--2DQMeljGuIpJJbgUmLePE3, .dark barrageBox--12mXUQ-jjQe4g8cXRIDZnw .title--3ejssMCTSLSPah47f_19h-,
  2959. .dark .panel--17CN9xHGgPu8Nq3SPsiM8u .panel-hd-112tPbAPeZiQOtXN_KaP20,
  2960. .dark .chat-room__ft span,.dark .chat-room__ft p,
  2961. .dark .duya-header-right a i,
  2962. .dark .duya-header-right a span,
  2963. .dark .chat-room__bd .chat-room__scroll .clearBtn,
  2964. .dark .chat-room__bd .chat-room__scroll .lockBtn,
  2965. .dark .search-advice-list li a,.dark .search-header .find-result,
  2966. .dark #play2 .crumb,.dark #play2 .crumb a,.dark .live-box .box-hd .more-list li a,
  2967. .dark .aside-videolist .video-item .item-detail .detail-nick span, dark .aside-videolist .video-item .item-detail .detail-playcount span
  2968. .dark .live-box .box-hd .more-list li a{
  2969. color: var(--w-text-light) !important;
  2970. }
  2971.  
  2972.  
  2973. /* 修改字体颜色 hover */
  2974. .dark .liveList-title a:hover,
  2975. .dark .game-live-item .title:hover,
  2976. .dark .game-live-item .txt:hover,
  2977. .dark .live-box .box-hd .title a:hover,
  2978. .dark .live-box .box-hd .more-list li a:hover,
  2979. .dark #js-game-list li a .g-gameCard-fullName:hover,
  2980. .dark .box-hd .title:hover,
  2981. .dark .game-live-item .txt i:hover,
  2982. .dark .host-name:hover,
  2983. .dark .mod-list .box-hd .filter dd .tag-layer:hover,
  2984. .dark .subscribe-live-item .txt .msg-row .nick:hover,
  2985. .dark .subscribe-live-item .txt .msg-row .intro:hover,
  2986. .dark .list-hd .title:hover,
  2987. .dark #js-search-main .host-item .nick,
  2988. .dark .search-main .type-keyword,
  2989. .dark #tipsOrchat .live-tips i,
  2990. .dark .duya-header-right a:hover,
  2991. .dark .duya-header-right a i:hover,
  2992. .dark .duya-header-right a span:hover,
  2993. .dark .chat-room__bd .chat-room__scroll .clearBtn:hover,
  2994. .dark .chat-room__bd .chat-room__scroll .lockBtn:hover,
  2995. .dark .main-info .info-video .video-detail .video-title,
  2996. .dark .main-info .info-video .video-author h3,.dark .FavoritePresenter--MMD7zrcd7sYoYy4-nf4LW .subscribe-hd--24Dtf1lXtfSas6Og00JGh .subscribe-tit--27roiaLDJp7Mr5zcqn8qjy,
  2997. .dark .search-header .find-result em,.dark .aside-videolist .video-item:hover .item-detail h3,
  2998. .dark .Category--2-gctJ3idXKRr9fHBvo6NK .Item--2Tc1DF80qnq4qFUM3vHPPM a:hover{
  2999. color: var(--w-text) !important;
  3000. }
  3001.  
  3002.  
  3003.  
  3004. /* 修改border */
  3005. .dark .program-preview-box,
  3006. .dark .recom-banners,
  3007. .dark .recom-moments,
  3008. .dark .game-live-item,
  3009. .dark .nav-expand-list,
  3010. .dark #js-game-list li,
  3011. .dark .g-gameCard-item,
  3012. .dark .room-sidebar,
  3013. .dark .list-hd .follow-ctrl,
  3014. .dark .btn-more,
  3015. .dark #js-search-main .host-item,
  3016. .dark .subscribe-live-item,
  3017. .dark .chat-room__input .btn-sendMsg,
  3018. .dark .laypageskin_default a,
  3019. .dark .chat-room__bd .chat-room__scroll .clearBtn,
  3020. .dark .chat-room__bd .chat-room__scroll .lockBtn,
  3021. .dark .main-info .info-draw,.dark .main-info .info-comment,.dark .main-info .info-comment h2,
  3022. .dark #chat-room__wrap #chat-room__list .RoomMessageRichText--2Y0TYze1NxfsGAbfcA8jGV{
  3023. border:1px solid var(--w-border) !important;
  3024. }
  3025.  
  3026.  
  3027. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-off:hover,
  3028. .dark .nav-expand-list.nav-expand-game span:hover {
  3029. background: var(--w-bg-darker) !important;
  3030. color: var(--w-text-light) !important;
  3031. }
  3032.  
  3033.  
  3034. .dark .hy-header-style-normal .duya-header-wrap,
  3035. .dark .duya-header,
  3036. .dark .chat-room__input,
  3037. .dakr .inpage-advice-list li,.dark #play2 .content .content-aside>div .more
  3038. {
  3039. background: var(--w-bg-darker) !important;
  3040. border-color:var(--w-border) !important;
  3041. }
  3042.  
  3043.  
  3044. /* 只修改border-color */
  3045. .dark .chat-room__input,
  3046. .dark .chat-room__ft .chat-room__ft__chat,
  3047. .dark ._2uc0_gzwdW4cbL_UOgWDJd,
  3048. .dark #tipsOrchat{
  3049. border-color:var(--w-border) !important;
  3050. }
  3051.  
  3052. .dark #duya-header,
  3053. .dark #chat-room__wrap #chat-room__list div a,
  3054. .dark #chat-room__wrap #chat-room__list div a span {
  3055. border:none !important;
  3056. }
  3057.  
  3058. .dark .laypageskin_default a:hover,
  3059. .dark .comment-container textarea,
  3060. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-off .subscribe-count,
  3061. .dark .nav-expand-list.nav-expand-game span a:hover{
  3062. border-color:var(--w-text-light) !important;
  3063. }
  3064.  
  3065.  
  3066. /* 修改border color background */
  3067. .dark .laypage_main button:hover,
  3068. .dark .laypageskin_default .laypage_curr,
  3069. .dark #J_duyaHeaderRight ul li a,
  3070. .dark .laypageskin_default a:hover {
  3071. color: var(--w-text);
  3072. border-color:var(--w-text) !important;
  3073. background-color: var(--w-bg-darker) !important;
  3074. }
  3075.  
  3076. .dark .chat-room__bd .chat-room__scroll .clearBtn,
  3077. .dark .chat-room__bd .chat-room__scroll .lockBtn,
  3078. .dark .hy-header-style-normal .duya-header-search input,
  3079. .dark .comment-container textarea:focus,
  3080. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-off
  3081. {
  3082. border:1px solid var(--w-text-light) !important;
  3083. }
  3084.  
  3085. .dark .hy-header-style-normal .duya-header-search input:focus {
  3086. border:1px solid var(--w-text) !important;
  3087. }
  3088.  
  3089.  
  3090.  
  3091. .dark .MmdPopPanel--e_LkiARLtmY25hB1R9rdB,
  3092. .dark .SubConfirmPop--2VSR0gV-WvcfUtEzoh_Kjh .control--2EUGLFp0K_j4h_YJLiCtlj span,
  3093. .dark .SubConfirmPop--2VSR0gV-WvcfUtEzoh_Kjh span,
  3094. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-on,
  3095. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-off
  3096. {
  3097. background: var(--w-bg-darker) !important;
  3098. border:1px solid var(--w-text) !important;
  3099. color: var(--w-text-light) !important;
  3100. }
  3101.  
  3102.  
  3103. .dark .SubConfirmPop--2VSR0gV-WvcfUtEzoh_Kjh span:hover,
  3104.  
  3105. .dark #J_liveListNav dl dd ul li ul li:hover,
  3106. .dark .SubConfirmPop--2VSR0gV-WvcfUtEzoh_Kjh .control--2EUGLFp0K_j4h_YJLiCtlj span:hover,
  3107. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-on:hover,
  3108. .dark .room-hd .host-control .subscribe-entrance .subscribe-hd.sub-off:hover{
  3109. background: var(--w-bg) !important;
  3110. border:1px solid var(--w-text-light) !important;
  3111. color: var(--w-text) !important;
  3112. }
  3113.  
  3114.  
  3115.  
  3116.  
  3117. .dark #J_liveListNav dl dd span:hover,
  3118. .dark #J_duyaHeaderRight ul li a,
  3119. .dark #J_duyaHeaderRight ul li a:hover,
  3120. .dark .g-gameCard-link:hover{
  3121. background: var(--w-bg) !important;
  3122. color: var(--w-text) !important;
  3123. }
  3124.  
  3125.  
  3126.  
  3127. `;
  3128. const css$2 = is_huya ? `
  3129.  
  3130. .game-live-item i,.host-name {
  3131. cursor:pointer;
  3132. }
  3133. .game-live-item .txt i:hover,.host-name:hover {
  3134. color:rgb(255, 135, 0);
  3135. }
  3136. .helperbar-root--12hgWk_4zOxrdJ73vtf1YI,
  3137. .mod-index-wrap .mod-index-main .main-bd,
  3138. .mod-index-wrap .mod-index-main .main-hd,
  3139. .mod-index-wrap #js-main,
  3140. .mod-index-wrap #banner,
  3141. .mod-index-wrap .mod-game-type,
  3142. .mod-index-wrap .mod-actlist,
  3143. .mod-index-wrap .mod-news-section,
  3144. .mod-index-wrap .mod-index-list .live-box #J_adBnM,
  3145. .mod-index-wrap .mod-index-recommend,
  3146. .mod-index-wrap .mod-news-section,
  3147. .mod-index-wrap .recommend-wrap,
  3148. .RoomPublicMessage--n3v61Bk0DehYuR0xEQ9S1,
  3149. #huya-ab-fixed,
  3150. #huya-ab,
  3151. .liveList-header-r,
  3152. .room-footer,
  3153. .J_roomSideHd,
  3154. #J_roomSideHd,
  3155. #match-cms-content,
  3156. #matchComponent2,
  3157. .hy-nav-item,
  3158. .list-adx,
  3159. .layout-Banner,
  3160. #J_duyaHeaderRight>div>div>div,
  3161. .nav-expand-list .third-clickstat,
  3162. #main_col .special-bg,
  3163. .player-recommend.recommend-ab-mode .end-ab-wrap,
  3164. .chat-wrap-panel.wrap-income,
  3165. .match-room .match-nav,
  3166. .host-detail.J_roomHdDetail span,
  3167. .host-detail.J_roomHdDetail .host-video,
  3168. .room-hd-r .jump-to-phone,
  3169. .room-hd-r #share-entrance,
  3170. .room-hd-r #J_illegalReport,
  3171. .room-hd-r .gamePromote.J_gamePromote,
  3172. .main-wrap .room-mod-ggTop,
  3173. #chatRoom .room-gg-chat,
  3174. .room-core .room-business-game,
  3175. .room-backToTop.j_room-backToTop,
  3176. .end-ab-banner,
  3177. .player-app-qrcode,
  3178. .player-play-big, .chat-room__list .msg-nobleSpeak-decorationPrefix,
  3179. #main_col #matchComponent2,
  3180. .room-weeklyRankList{
  3181. display:none !important;
  3182. }
  3183.  
  3184. .ssr-wrapper .mod-sidebar, .room-core #player-gift-wrap, {
  3185. display:none;
  3186. }
  3187.  
  3188. .hy-nav-item:nth-child(1),
  3189. .hy-nav-item:nth-child(2),
  3190. .hy-nav-item:nth-child(3),
  3191. #J_duyaHeaderRight>div>div>div:nth-child(3),
  3192. #J_duyaHeaderRight>div>div>div:nth-child(4)
  3193. {
  3194. display:inline-block !important;
  3195. }
  3196. .mod-index-wrap .mod-index-list{
  3197. margin-top:80px !important;
  3198. }
  3199. .duya-header{
  3200. background: hsla(0,0%,100%,.95) !important;
  3201. border-bottom: 1px solid #e2e2e2 !important;
  3202. box-shadow: 0 0 6px rgb(0 0 0 / 6%) !important;
  3203. }
  3204. .duya-header a,.duya-header i{
  3205. color:#000 !important;
  3206. }
  3207. /*******直播间样式*****/
  3208. .chat-room__list .msg-normal,.chat-room__list .msg-bubble,#J_mainRoom{
  3209. background:none !important;
  3210. }
  3211. #wrap-ext,
  3212. .chat-room__list .msg-normal-decorationPrefix,
  3213. .chat-room__list .msg-normal-decorationSuffix,
  3214. .chat-room__list .msg-bubble-decorationPrefix,
  3215. .chat-room__list img,
  3216. .chat-room__list .msg-noble,
  3217. .chat-room__list .msg-sys,
  3218. .chat-room__list .msg-auditorSys,
  3219. .J_box_msgOfKing,
  3220. .chat-room__list .msg-onTVLottery{
  3221. display: none !important;
  3222. }
  3223. .chat-room__list .msg-bubble span.msg{
  3224. color: #333 !important;
  3225. background:none!important;
  3226. }
  3227. .chat-room__list .msg-bubble .colon,
  3228. .chat-room__list .msg-bubble .msg,
  3229. .chat-room__list .name{
  3230. color: #3c9cfe !important;
  3231. background:none!important;
  3232. }
  3233.  
  3234. #search-bar-input::placeholder{
  3235. color: transparent !important;
  3236. opacity:0 !important;
  3237. }
  3238. .mod-sidebar,
  3239. .room-core #player-gift-wrap{
  3240. display:none ;
  3241. }
  3242.  
  3243. #player-ctrl-wrap {
  3244. opacity: 0;
  3245. transition: all 500ms ease-in 0s !important;
  3246. bottom: 16px;
  3247. }
  3248. #J_playerMain:hover #player-ctrl-wrap{
  3249. opacity: 1;
  3250. }
  3251.  
  3252. ${darkCss}
  3253.  
  3254. ` : "";
  3255. const css$1 = is_douyin ? `
  3256. #related-video-card-login-guide,
  3257. #captcha_container,
  3258. .JsAsIOEV,
  3259. #login-full-panel{
  3260. display:none !important;
  3261. }
  3262. .m-container {
  3263. --m-container-height: 56px;
  3264. z-index: 10 !important;
  3265. }
  3266.  
  3267. .m-container table {
  3268. display: none !important;
  3269. }
  3270. ` : "";
  3271. const anime = /.*:\/\/www\.bilibili\.com\/anime\/.*/.test(local_url) ? `
  3272. .dark .home-cell-desc-title[data-v-350d21cc],.dark .home-cell-desc-title,
  3273. .dark .home-cell-desc-subtitle[data-v-350d21cc], .with-up-space,.dark .home-cell-desc-subtitle[data-v-350d21cc], .with-up-space[data-v-350d21cc]
  3274. {
  3275. color:var(--w-text-light) !important;
  3276. }
  3277.  
  3278.  
  3279. .dark .nav-tool-container .section,
  3280. .dark .nav-tool-container .section[data-v-3b26ecb6] {
  3281. border: 1px solid var(--w-border) !important;
  3282. color:var(--w-text-light) !important;
  3283. background:var(--w-bg-darker) !important;
  3284. }
  3285.  
  3286.  
  3287.  
  3288. .dark .nav-tool-container .section:hover,
  3289. .dark .nav-tool-container .section[data-v-3b26ecb6]:hover {
  3290. color:var(--w-blue-link-hover) !important;
  3291. border-color: var(--w-blue-link-hover) !important;
  3292. background:var(--w-bg-darker) !important;
  3293. }
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301. ` : ``;
  3302. const blackboard = `
  3303.  
  3304. .dark .q-textarea {
  3305. background-color : var(--w-bg-darker) !important;
  3306. color : var(--w-text-light) !important;
  3307. border :1px solid var(--w-text-light) !important;
  3308. }
  3309. .dark .activity-questions-list-wrap .activity-questions-item .activity-questions-item-title .title,
  3310. .dark .activity-questions-list-wrap .activity-questions-item .activity-questions-item-required,
  3311. .dark .activity-questions-item-index,
  3312. .dark .activity-questions-list-wrap .activity-questions-item {
  3313. color : var(--w-text-light) !important;
  3314. }
  3315.  
  3316.  
  3317. `;
  3318. const comment = `
  3319. .dark .bb-comment, .comment-bilibili-fold,
  3320. .dark .bb-comment .comment-send-lite .comment-emoji,
  3321. .dark .bb-comment .comment-send.comment-send-lite,
  3322. .dark .bb-comment .comment-send-lite.comment-send-lite,
  3323. .dark .comment-bilibili-fold .comment-send .comment-emoji,
  3324. .dark .comment-bilibili-fold .comment-send-lite .comment-emoji,
  3325. .dark .comment-bilibili-fold .comment-send.comment-send-lite,
  3326. .dark .comment-bilibili-fold .comment-send-lite.comment-send-lite,
  3327. .dark .bili-rich-textarea__inner,.dark .bili-emoji__footer,
  3328. .dark .bili-emoji__pkg,.dark .bili-emoji,.dark .emoji-box
  3329. {
  3330. background:var(--w-bg-darker) !important;
  3331. color:var(--w-text) !important;
  3332. }
  3333.  
  3334.  
  3335.  
  3336. .dark .bili-emoji,.dark .emoji-box .emoji-title,
  3337. .dark .bb-comment,
  3338. .dark .bb-comment .comment-header,
  3339. .dark .bb-comment .comment-header .tabs-order,
  3340. .dark .bb-comment .comment-header .tabs-order li,
  3341. .dark .bb-comment .comment-send .dynamic-repost,
  3342. .dark .bb-comment .comment-send-lite .dynamic-repost,
  3343. .dark .comment-bilibili-fold .comment-header .tabs-order li,
  3344. .dark .comment-bilibili-fold .comment-send .dynamic-repost,
  3345. .dark .comment-bilibili-fold .comment-send-lite .dynamic-repost {
  3346. color:var(--w-text-light) !important;
  3347. }
  3348.  
  3349.  
  3350.  
  3351.  
  3352. .dark .bb-comment .comment-send-lite .comment-emoji,
  3353. .dark .bb-comment .comment-header,
  3354. .dark .bb-comment .comment-list .list-item .con,
  3355. .dark .bb-comment .bottom-page.center,
  3356. .dark .comment-bilibili-fold .comment-header,
  3357. .dark .comment-bilibili-fold .comment-send .comment-emoji,
  3358. .dark .comment-bilibili-fold .comment-send-lite .comment-emoji,
  3359. .dark .comment-bilibili-fold .comment-list .list-item .con{
  3360. border-color: var(--w-border) !important;
  3361. }
  3362.  
  3363.  
  3364.  
  3365. .dark .emoji-box,.dark .emoji-box .emoji-tabs,.dark .bili-emoji__pkg.active,
  3366. .dark .bb-comment .operation .opera-list,
  3367. .dark .bb-comment .comment-send .comment-emoji,
  3368. .dark .bb-comment .comment-send .textarea-container .ipt-txt,
  3369. .dark .bb-comment .comment-send-lite .textarea-container .ipt-txt,
  3370. .dark .bb-comment .comment-list .list-item .info .reply-tags span,
  3371. .dark .comment-bilibili-fold .comment-send .textarea-container .ipt-txt,
  3372. .dark .comment-bilibili-fold .comment-list .list-item .info .reply-tags span,
  3373. .dark .comment-bilibili-fold .comment-send-lite .textarea-container .ipt-txt,
  3374. .dark .comment-bilibili-fold .operation .opera-list{
  3375. color:var(--w-text-light) !important;
  3376. background:var(--w-bg-darker) !important;
  3377. border-color: var(--w-text) !important;
  3378. }
  3379.  
  3380.  
  3381. .dark .bb-comment .comment-list .list-item .reply-box .view-more .btn-more:hover, .comment-bilibili-fold .comment-list .list-item .reply-box .view-more .btn-more:hover,
  3382. .dark .btn.idc-btn.primary:hover {
  3383. color:var(--w-blue-link-hover) !important;
  3384. border-color: var(--w-blue-link-hover) !important;
  3385. background:var(--w-bg-darker) !important;
  3386. }
  3387.  
  3388. .dark .btn.idc-btn.default:hover,.dark .bili-emoji__list__item:hover,
  3389. .dark .emoji-box .emoji-wrap .emoji-pic:hover,
  3390. .dark .emoji-list.emoji-text.emoji-pic:hover,
  3391. .dark .emoji-box .emoji-tabs .tab-link:hover,
  3392. .dark .emoji-box .emoji-tabs .tab-link.on {
  3393. color:var(--w-blue-link-hover) !important;
  3394. border:1px solid var(--w-blue-link-hover) !important;
  3395. background:var(--w-bg-darker) !important;
  3396. }
  3397.  
  3398. `;
  3399. const dialog = `
  3400. .dark .bili-dialog-bomb,.dark .bili-dialog-bomb .appeal-box,
  3401. .dark .bili-dialog-bomb .appeal-box .header,
  3402. .dark .bili-dialog-bomb .appeal-box .wrap .container .textarea .textarea-wrap textarea,
  3403. .dark .bili-dialog-bomb .appeal-box .submit
  3404. {
  3405. color:var(--w-text-light) !important;
  3406. background:var(--w-bg-darker) !important;
  3407. }
  3408.  
  3409. .dark .bili-dialog-bomb .appeal-box .wrap .container .question {
  3410. color:var(--w-text-light) !important;
  3411. }
  3412.  
  3413.  
  3414.  
  3415. `;
  3416. const footer = `
  3417. .bili-footer {
  3418. color:var(--w-text-light) !important;
  3419. background:var(--w-bg-darker) !important;
  3420. }
  3421.  
  3422. .dark .bili-footer p {
  3423. color:var(--w-text-light) !important;
  3424. }
  3425.  
  3426. `;
  3427. const header = `
  3428. .bb-comment, .comment-bilibili-fold {
  3429. }
  3430.  
  3431. `;
  3432. const login = `
  3433.  
  3434. .dark .tab__form,
  3435. .dark .tab__form .form__item input ,
  3436. .dark .tab__form .form__item input::placeholder,
  3437. .dark .tab__form .form__item input:focus,
  3438. .dark .bili-mini-content-wp {
  3439. background:var(--w-bg-darker) !important;
  3440. color:var(--w-text) !important;
  3441. }
  3442.  
  3443.  
  3444. .dark .tab__form {
  3445. border:1px solid var(--w-text) !important;
  3446. }
  3447.  
  3448.  
  3449. .dark .bili-mini-customer-title,
  3450. .dark .bili-mini-content-wp .login-scan-title,
  3451. .dark .bili-mini-content-wp .login-scan-desc p,
  3452. .dark .login-tab-item[data-v-35ff7abe],
  3453. .dark .login-tab-item, .dark .login-sns-name,
  3454. .dark .login-agreement-wp p,
  3455. .dark .tab__form .form__item .form_info {
  3456. color:var(--w-text) !important;
  3457. }
  3458.  
  3459. .dark .btn_primary.disabled[data-v-327e145a],
  3460. .dark .btn_primary.disabled,
  3461. .dark .btn_primary,
  3462. .dark .btn_primary[data-v-327e145a],
  3463. .dark .btn_other,
  3464. .dark .btn_other[data-v-327e145a] {
  3465. color:var(--w-text-light) !important;
  3466. background:var(--w-bg-darker) !important;
  3467. border:1px solid var(--w-text-light) !important;
  3468. }
  3469.  
  3470. .dark .btn_other:hover,
  3471. .dark .btn_primary:hover,
  3472. .dark .btn_primary[data-v-327e145a]:hover,
  3473. .dark .btn_other[data-v-327e145a]:hover {
  3474. color:var(--w-blue-link-hover) !important;
  3475. border-color: var(--w-blue-link-hover) !important;
  3476. background:var(--w-bg-darker) !important;
  3477. }
  3478.  
  3479.  
  3480. .dark .tab__form .form__item input ,
  3481. .dark .tab__form .form__item input::placeholder,
  3482. .dark .tab__form .form__item input:focus {
  3483. border:none !important;
  3484. }
  3485.  
  3486.  
  3487.  
  3488. `;
  3489. const page_num = `
  3490.  
  3491.  
  3492. .dark .be-pager-options-elevator {
  3493. color:var(--w-text-light) !important;
  3494. }
  3495.  
  3496. .dark .be-pager-item-active,
  3497. .dark .be-pager-options-elevator input {
  3498. background:var(--w-bg-darker) !important;
  3499. }
  3500.  
  3501. .dark .be-pager-next,
  3502. .dark .be-pager-prev,
  3503. .dark .be-pager-item {
  3504. color:var(--w-text-light) !important;
  3505. background:var(--w-bg-darker) !important;
  3506. border:1px solid var(--w-text-light) !important;
  3507. }
  3508.  
  3509.  
  3510. .dark .be-pager-next:hover,
  3511. .dark .be-pager-prev:hover,
  3512. .dark .be-pager-item:hover
  3513. {
  3514. color:var(--w-blue-link-hover) !important;
  3515. border-color: var(--w-blue-link-hover) !important;
  3516. background:var(--w-bg-darker) !important;
  3517. }
  3518.  
  3519. .dark .be-pager-item .be-pager-item-active,
  3520. .dark .be-pager-item-active {
  3521. color :var(--w-blue-link-hover) !important;
  3522. border-color :var(--w-blue-link-hover) !important;
  3523. }
  3524.  
  3525. `;
  3526. const root = `
  3527. :root {
  3528. --w-brand: #3aa675;
  3529. --w-light: #e5e7eb;
  3530. --w-white: #fff;
  3531. --w-brand-light: #349469;
  3532. --w-bg: #22272e;
  3533. --w-bg-light: #2b313a;
  3534. --w-bg-lighter: #262c34;
  3535. --w-bg-dark: #343b44;
  3536. --w-bg-darker: #37404c;
  3537. --w-bg-darker: var(--w-bg-dark);
  3538. --w-text: #adbac7;
  3539. --w-text-light: #cbd4dc;
  3540. --w-text-lighter: #cdd6dd;
  3541. --w-text-lightest: #8094a8;
  3542. --w-border: #3e4c5a;
  3543. --w-border-dark: #34404c;
  3544. --w-blue-link-hover:#00aeec;
  3545. --w-skeleton:#494f57;
  3546. }
  3547. .dark body,
  3548. .dark #app {
  3549. --v_bg1: var(--w-bg-darker);
  3550. --v_bg2: var(--w-bg-darker);
  3551. --v_bg3: var(--w-bg-darker);
  3552. --v_bg1_float: var(--w-bg-darker);
  3553. --v_bg2_float: var(--w-bg-darker);
  3554. --v_text_white: var(--w-white);
  3555. --v_text1: var(--w-text);
  3556. --v_text2: var(--w-text-light);
  3557. --v_text3: var(--w-text-lighter);
  3558. --v_text4: var(--w-text-lightest);
  3559. --v_line_light: var(--w-text-lighter);
  3560. --v_line_regular: var(--w-text-lighter);
  3561. --v_line_bold: var(--w-text-lightest);
  3562. --v_graph_white:var(--w-text);
  3563. --v_graph_bg_thin: var(--w-bg-darker);
  3564. --v_graph_bg_regular: var(--w-bg-darker);
  3565. --v_graph_bg_thick: var(--w-bg);
  3566. --v_graph_weak: var(--w-text);
  3567. --v_graph_medium: var(--w-text-light);
  3568. --v_graph_icon: var(--w-text-lightest);
  3569. --v_shadow: var(--w-text);
  3570. --v_text_hover: var(--w-blue-link-hover);
  3571. --v_text_active:var(--w-blue-link-hover);
  3572. --v_text_disabled: #C9CCD0 ;
  3573. --v_line_border: var(--w-text-lighter);
  3574. --v_line_bolder_hover: var(--w-text-lightest);
  3575. --v_line_bolder_active: var(--w-text-lightest);
  3576. --v_line_bolder_disabled: var(--w-text);
  3577.  
  3578. }
  3579.  
  3580. .dark body,
  3581. .dark #app {
  3582. --bg1: var(--v_bg1);
  3583. --bg2: var(--v_bg2);
  3584. --bg3: var(--v_bg3);
  3585. --bg1_float: var(--v_bg1_float);
  3586. --bg2_float: var(--v_bg2_float);
  3587. --text_white: var(--v_text_white);
  3588. --text1: var(--v_text1);
  3589. --text2: var(--v_text2);
  3590. --text3: var(--v_text3);
  3591. --text4: var(--v_text4);
  3592. --line_light: var(--v_line_light);
  3593. --line_regular: var(--v_line_regular);
  3594. --line_bold: var(--v_line_bold);
  3595. --graph_white: var(--v_graph_white);
  3596. --graph_bg_thin: var(--v_graph_bg_thin);
  3597. --graph_bg_regular: var(--v_graph_bg_regular);
  3598. --graph_bg_thick: var(--v_graph_bg_thick);
  3599. --graph_weak: var(--w-text);
  3600. --graph_medium: var(--w-text-light);
  3601. --graph_icon: var(--w-text-lightest);
  3602. --shadow: var(--w-text);
  3603. --text_hover: var(--v_text_hover);
  3604. --text_active: var(--v_text_active);
  3605. --text_disabled: var(--v_text_disabled);
  3606. --line_border: var(--v_line_border);
  3607. --line_bolder_hover: var(--v_line_bolder_hover);
  3608. --line_bolder_active: var(--v_line_bolder_active);
  3609. --line_bolder_disabled: var(--v_line_bolder_disabled);
  3610. --b_text1: var(--text1);
  3611. --b_text2: var(--text2);
  3612. --b_text3: var(--text3);
  3613. --b_text4: var(--text4);
  3614. }
  3615. `;
  3616. const common = `
  3617. ${root}
  3618. ${header}
  3619. ${footer}
  3620. ${login}
  3621. ${page_num}
  3622. ${comment}
  3623. ${dialog}
  3624. `;
  3625. const douga = /.*:\/\/www\.bilibili\.com\/v\/douga\/.*/.test(local_url) ? `
  3626.  
  3627.  
  3628. .dark .home-cell-desc-title[data-v-350d21cc],.dark .home-cell-desc-title,
  3629. .dark .home-cell-desc-subtitle[data-v-350d21cc], .with-up-space,.dark .home-cell-desc-subtitle[data-v-350d21cc], .with-up-space[data-v-350d21cc]
  3630. {
  3631. color:var(--w-text-light) !important;
  3632. }
  3633.  
  3634.  
  3635. .dark .channel-layout,
  3636. .dark channel-nav{
  3637. border: 1px solid var(--w-border) !important;
  3638. color:var(--w-text-light) !important;
  3639. background:var(--w-bg-darker) !important;
  3640. }
  3641.  
  3642.  
  3643.  
  3644. .dark .nav-tool-container .section:hover,
  3645. .dark .nav-tool-container .section[data-v-3b26ecb6]:hover {
  3646. color:var(--w-blue-link-hover) !important;
  3647. border-color: var(--w-blue-link-hover) !important;
  3648. background:var(--w-bg-darker) !important;
  3649. }
  3650.  
  3651. .dark .channel-layout,
  3652. .dark channel-nav,
  3653. .dark .bili-rank-list-video .bili-rank-list-video__item:nth-of-type(2n) {
  3654. background:var(--w-bg-darker) !important;
  3655. }
  3656.  
  3657.  
  3658. .dark .bili-rank-list-video .bili-rank-list-video__item:nth-of-type(2n + 1) {
  3659. background-color:var(--w-bg) !important;
  3660. }
  3661.  
  3662.  
  3663.  
  3664.  
  3665.  
  3666. ` : ``;
  3667. const guochuang = /.*:\/\/www\.bilibili\.com\/guochuang\/.*/.test(local_url) ? `
  3668. .dark .spread-module .t,.dark .spread-module,
  3669. .dark .pgc-rank-list .rank-item .ri-detail .ri-title,.dark .pgc-rank-list .rank-item .ri-detail .ri-point,
  3670. .dark .name, .dark .new-stat-module .zone-title .headline .name,.dark .headline .name,
  3671. .dark .index-entry-wrapper .filter-block-title span,
  3672. .dark .block-area,.dark .block-area .timeline-title .headline .name,
  3673. .dark .block-area .block-left .block-header .block-title,
  3674. .dark .video-item-biref .biref-info .biref-title,
  3675. .dark .handpick-right-module .block-header .block-title {
  3676. color:var(--w-text-light) !important;
  3677. }
  3678.  
  3679. .dark .video-item-biref .biref-info .biref-title:hover {
  3680. color:var(--w-blue-link-hover) !important;
  3681. }
  3682.  
  3683. .dark .spread-module .num {
  3684. background:var(--w-bg-darker) !important;
  3685. color:var(--w-text-light) !important;
  3686. }
  3687.  
  3688. .dakr .block-area .timeline-toggle-block .timeline-toggle-btn {
  3689. background: none !important;
  3690. }
  3691.  
  3692.  
  3693.  
  3694. .dark .timeline-box .timeline-item .item-right p.num a,
  3695. .dark .timeline-box .timeline-item .item-right p.num span,
  3696. .dark .new-stat-module .zone-title .headline .new-stat-more,
  3697. .dark .back-top-tools .tool-item,.dakr .block-area .timeline-toggle-block .timeline-toggle-btn,
  3698. .dark .sec-rank .more-link,.dark .pgc-rank-dropdown,.dark .pgc-rank-dropdown .dropdown-list,
  3699. .dark .random-change {
  3700. border: 1px solid var(--w-border) !important;
  3701. color:var(--w-text-light) !important;
  3702. background:var(--w-bg-darker) !important;
  3703. }
  3704.  
  3705. .dakr .block-area .timeline-toggle-block .timeline-toggle-btn:hover,
  3706. .dark .new-stat-module .zone-title .headline .new-stat-more:hover,
  3707. .dark .timeline-box .timeline-item .item-right p.num a:hover,
  3708. .dark .timeline-box .timeline-item .item-right p.num span:hover,
  3709. .dark .sec-rank .more-link:hover,.dark .back-top-tools .tool-item:hover,
  3710. .dark .random-change:hover {
  3711. color:var(--w-blue-link-hover) !important;
  3712. border-color: var(--w-blue-link-hover) !important;
  3713. background:var(--w-bg-darker) !important;
  3714. }
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722. ` : ``;
  3723. const home = `
  3724.  
  3725. /* 黑色主题模式下骨架屏 */
  3726. .dark .bili-video-card__skeleton--cover,
  3727. .dark .bili-video-card__skeleton,
  3728. .dark .bili-video-card__skeleton--right,
  3729. .dark .bili-video-card__skeleton hide,
  3730. .dark .bili-video-card__skeleton--text.short,
  3731. .dark .bili-video-card__skeleton--light,
  3732. .dark .bili-video-card__skeleton--text {
  3733. background:var(--w-skeleton) !important;
  3734. }
  3735.  
  3736.  
  3737. /* 黑色主题模式下不显示壁纸 */
  3738. .dark #bili-header-banner-img {
  3739. display:none !important;
  3740. }
  3741.  
  3742.  
  3743.  
  3744. .dark body,.dark #header-v3,.dark .app-v1,.dark .app-v2,.dark .app-v3,.dark .app-v4,.dark .app-v5,
  3745. .dark #app,.dark .v-img,
  3746. .dark .header-channel,.dark .header-channel-fixed-right-item,
  3747. .dark .bili-video-card__wrap,.dark .bili-header .game,
  3748. .dark .large-header,
  3749. .dark .bili-header .slide-down,
  3750. .dark .bili-header .bili-header__channel .channel-entry-more__link,
  3751. .dark .bili-header .bili-header__channel .channel-link,
  3752. .dark .bili-header .bili-header__channel .channel-items__left,
  3753. .dark .bili-header .bili-header__channel,
  3754. .dark .bili-header .manga,
  3755. .dark .bili-header .manga-right-title,
  3756. .dark .bili-header .header-fav-card__image,
  3757. .dark .bili-header .header-fav-card,
  3758. .dark .bili-header .search-panel,
  3759. .dark .bili-header .center-search-container .center-search__bar #nav-searchform.is-actived .nav-search-content,
  3760. .dark .bili-header .center-search-container .center-search__bar #nav-searchform.is-focus .nav-search-content,
  3761. .dark .history-panel-popover,.dark .bili-header .bili-header__banner,
  3762. .dark .bili-header .center-search-container .center-search__bar #nav-searchform,
  3763. .dark .bili-header .center-search-container .center-search__bar .nav-search-content .nav-search-input:focus,
  3764. .dark .bili-header .avatar-panel-popover .level-item .level-item__bar .level-progress__inner,
  3765. .dark .bili-header .avatar-panel-popover .level-item .level-item__lv0,
  3766. .dark .bili-header .avatar-panel-popover .split-line,
  3767. .dark .bili-header .avatar-panel-popover .logout-item,
  3768. .dark .video-container-v1 .danmaku-box .danmaku-wrap,
  3769. .dark #i_cecream {
  3770. background:var(--w-bg-darker) !important;
  3771. color:var(--w-text) !important;
  3772. }
  3773.  
  3774.  
  3775. .dark .bili-header .header-avatar-wrap .header-avatar-wrap--container .bili-avatar,
  3776. .dark .bili-header .game-left,.dark .bili-header .game-right,
  3777. .dark .bili-header .bili-header__channel .channel-items__left {
  3778. border-color:var(--w-border-dark) !important;
  3779. }
  3780.  
  3781.  
  3782. .dark .feed-roll-btn .primary-btn,
  3783. .dark .header-channel-fixed-right-item,
  3784. .dark .bili-header .bili-header__channel .channel-entry-more__link,
  3785. .dark .bili-header .bili-header__channel .channel-link {
  3786. border:1px solid var(--w-text-light) !important;
  3787. }
  3788.  
  3789.  
  3790. .dark .bili-header .search-panel {
  3791. border-color:1px solid var(--w-border) !important;
  3792. }
  3793.  
  3794.  
  3795.  
  3796. .dark .header-channel-fixed-right-item:hover,
  3797. .dark .bili-header,
  3798. .dark .bili-header .live-left-list,
  3799. .dark .bili-header .bili-header__channel .channel-entry-more__link,
  3800. .dark .history-panel-popover .header-tabs-panel__item,
  3801. .dark .bili-header .avatar-panel-popover .vip-item .senior,
  3802. .dark .bili-header .avatar-panel-popover .coins-item .coin-item__text ,
  3803. .dark .bili-header .avatar-panel-popover .coins-item .coin-item__num ,
  3804. .dark .bili-header .avatar-panel-popover .level-item .level-item__bar--tag>span,
  3805. .dark .bili-header .center-search-container .center-search__icon,
  3806. .dark .bili-header .bili-header__channel .channel-link {
  3807. border-color: var(--w-text) !important;
  3808. }
  3809.  
  3810.  
  3811. .dark a,.dark .roll-btn,
  3812. .dark .bili-header .left-entry .download-wrapper .download-top-title .main,
  3813. .dark .bili-header .left-entry .download-wrapper .download-top-title .sub,
  3814. .dark .bili-header .left-entry .download-wrapper .download-bottom,
  3815. .dark .bili-header .right-entry__outside .right-entry-icon ,
  3816. .dark .bili-header .slide-down .left-entry .mini-header__title,
  3817. .dark .bili-header .slide-down .left-entry .entry-title,
  3818. .dark .bili-header .slide-down .left-entry .default-entry,
  3819. .dark .bili-header .slide-down .left-entry .default-entry span,
  3820. .dark .bili-header .slide-down .left-entry .loc-mc-box__text,
  3821. .dark .bili-header .slide-down .left-entry .download-entry,
  3822. .dark .bili-header .slide-down .left-entry .loc-entry ,
  3823. .dark .bili-video-card .bili-video-card__info--date,
  3824. .dark .bili-video-card .bili-video-card__info--author,
  3825. .dark .bili-header .bili-header__channel .channel-link__right,
  3826. .dark .bili-header .bili-header__channel .channel-link__left,
  3827. .dark .right-entry-text,.dark .channel-entry-popover .name, .dark .more-channel-popover .name ,
  3828. .dark .icon-title,.dark .bili-header .slide-down .right-entry .right-entry__outside .right-entry-icon,
  3829. .dark .bili-header .live .title,.dark .bili-header .live-left-list-item,
  3830. .dark .bili-header .live-left-list-item-text,
  3831. .dark .bili-header .game-right-title,
  3832. .dark .bili-header .game-left-panel-item-title,
  3833. .bili-header .game-left-banner-title,
  3834. .dark .bili-header .manga-right-list-item-text,
  3835. .dark .bili-header .header-fav-card__info--name,
  3836. .dark .favorite-panel-popover__nav .tab-item,
  3837. .dark .favorite-panel-popover__nav .tab-item__num,
  3838. .dark .bili-header .header-fav-card__info--title,
  3839. .dark .dark .history-panel-popover .header-tabs-panel__content--date,
  3840. .dark .history-panel-popover .header-history-card__info--title,
  3841. .dark .header-tabs-panel,
  3842. .dark .header-tabs-panel__content--date,
  3843. .dark .bili-header .center-search-container .center-search__bar .nav-search-content .nav-search-input,
  3844. .dark .bili-header .avatar-panel-popover .links-item .single-link-item,
  3845. .dark .bili-header .avatar-panel-popover .vip-item__link,
  3846. .dark .bili-header .avatar-panel-popover .vip-item .senior,
  3847. .dark .bili-header .center-search-container .center-search__bar .nav-search-content .nav-search-clean svg,
  3848. .dark .bili-header .avatar-panel-popover .level-item .level-item__text,
  3849. .dark .bili-video-card .bili-video-card__info--tit>a {
  3850. color:var(--w-text) !important;
  3851. }
  3852.  
  3853.  
  3854.  
  3855. .dark .v-inline-window__close-icon,.dark .bili-header .center-search-container .center-search__bar .nav-search-btn,
  3856. .dark .vip-entry-desc-subtitle,.dark .vip-entry-desc-title,.dark .vip-entry-desc-subtitle,
  3857. .dark .bili-header .avatar-panel-popover .coins-item .coin-item__num,
  3858. .dark .bili-header .avatar-panel-popover .counts-item .single-count-item .count-num {
  3859. color:var(--w-text-light) !important;
  3860. }
  3861.  
  3862. .dark a:hover,.dark .roll-btn:hover,
  3863. .dark .vip-entry-desc-subtitle:hover,
  3864. .dark .bili-header .avatar-panel-popover .counts-item .single-count-item:hover .count-text,
  3865. .dark .bili-header .avatar-panel-popover .counts-item .single-count-item:hover .count-num ,
  3866. .dark .bili-header .avatar-panel-popover .vip-item__link:hover,
  3867. .dark .bili-header .manga-right-title:hover,
  3868. .dark .bili-header .game-right-list-item:hover,
  3869. .dark .bili-header .manga-right-list-item-text:hover,
  3870. .dark .bili-header .header-fav-card__info--name:hover,
  3871. .dark .bili-header .header-fav-card__info--title:hover,
  3872. .dark .bili-header .left-entry .download-wrapper .download-bottom:hover ,
  3873. .dark .bili-header .live-left-list-item-text:hover,
  3874. .dark .bili-header .game-right-title:hover,
  3875. .dark .bili-header .game-left-panel-item-title:hover,
  3876. .dark .bili-header .slide-down .left-entry .default-entry span:hover,
  3877. .dark .bili-video-card .bili-video-card__info--date:hover,
  3878. .dark .bili-header .bili-header__channel .channel-link__right:hover,
  3879. .dark .bili-header .bili-header__channel .channel-link__left:hover,
  3880. .dark .bili-video-card .bili-video-card__info--author:hover,.dark .right-entry-text:hover,
  3881. .dark .icon-title:hover,.dark .bili-header .slide-down .right-entry .right-entry__outside .right-entry-icon:hover,
  3882. .dark .history-panel-popover .header-history-card__info--title:hover
  3883. .dark .bili-video-card .bili-video-card__info--tit>a:hover {
  3884. color:var(--w-blue-link-hover) !important;
  3885. }
  3886.  
  3887.  
  3888. .dark .header-channel-fixed-right-item:hover,
  3889. .dark .channel-entry-popover .name:hover, .dark .more-channel-popover .name:hover,
  3890. .dark .bili-header .bili-header__channel .channel-entry-more__link:hover,
  3891. .dark .bili-header .bili-header__channel .channel-link:hover,
  3892. .dark .channel-panel__item:hover,
  3893. .dark .dynamic-video-item:hover,
  3894. .dark .bili-header .header-dynamic-list-item .header-dynamic__box--right:hover,
  3895. .dark .bili-video-card .bili-video-card__info--tit>a:hover {
  3896. color:var(--w-blue-link-hover) !important;
  3897. border-color: var(--w-blue-link-hover) !important;
  3898. background:var(--w-bg-darker) !important;
  3899. }
  3900.  
  3901.  
  3902.  
  3903. /* all */
  3904. /* background 和 白色 border 和 白色 link */
  3905. .dark .bili-header .live,
  3906. .dark .bili-header .avatar-panel-popover,
  3907. .dark .history-tip,
  3908. .dark .bili-video-card .bili-video-card__info--icon-text,
  3909. .dark .v-popover-content,.dark .wnd_bottom .r-l,
  3910. .dark .history-panel-popover .header-tabs-panel__content .view-all-history-btn,
  3911. .dark .bili-header .histories .history-item,
  3912. .dark .bili-header .left-entry .download-wrapper .download-top-content .button,
  3913. .dark .bili-header .avatar-panel-popover .links-item .link-red-tip,
  3914. .dark .bili-header .avatar-panel-popover .links-item .link-beta-tip,
  3915. .dark .vip-entry-containter,.dark vip-entry-btn,
  3916. .dark .vip-entry-btn[data-v-ae740c54],
  3917. .dark .bili-header .center-search-container .center-search__bar #nav-searchform,
  3918. .dark .feed-roll-btn .primary-btn{
  3919. color:var(--w-text-light) !important;
  3920. background:var(--w-bg-darker) !important;
  3921. border:1px solid var(--w-text-light) !important;
  3922. }
  3923.  
  3924.  
  3925.  
  3926. /* background 和 蓝色 border 和 蓝色 link */
  3927. .dark .wnd_bottom .r-l:hover,
  3928. .dark .vip-entry-containter:hover,.dark vip-entry-btn:hover,
  3929. .dark .vip-entry-btn[data-v-ae740c54]:hover,
  3930. .dark .bili-video-card .bili-video-card__info--icon-text:hover,
  3931. .dark .bili-header .game-right-list-item:hover,
  3932. .dark .history-panel-popover .header-tabs-panel__content .view-all-history-btn:hover,
  3933. .dark .bili-header .message-entry-popover .message-inner-list__item:hover,
  3934. .dark .bili-header .left-entry .download-wrapper .download-top-content .button:hover,
  3935. .dark .bili-header .histories .history-item:hover,
  3936. .dark .bili-header .center-search-container .center-search__bar .nav-search-btn:hover,
  3937. .dark .feed-roll-btn .primary-btn:hover{
  3938. color:var(--w-blue-link-hover) !important;
  3939. border-color: var(--w-blue-link-hover) !important;
  3940. background:var(--w-bg-darker) !important;
  3941. }
  3942. /******************************************************************/
  3943.  
  3944.  
  3945. /* background 和 蓝色 border */
  3946. .dark .trending-item:hover,
  3947. .dark .header-history-card:hover,
  3948. .dark .header-dynamic-list-item:hover,
  3949. .dark .header-history-card .header-history-video:hover,
  3950. .dark .bili-header .avatar-panel-popover .links-item .single-link-item:hover,
  3951. .dark .bili-header .header-fav-card:hover {
  3952. border:1px solid var(--w-text-light) !important;
  3953. background:var(--w-bg-darker) !important;
  3954. }
  3955.  
  3956.  
  3957.  
  3958. /* 蓝色border */
  3959. .dark .bili-header .center-search-container .center-search__bar #nav-searchform.is-focus,
  3960. .dark .suggest-item:hover {
  3961. border:1px solid var(--w-text) !important;
  3962. background:var(--w-bg-darker) !important;
  3963. }
  3964.  
  3965.  
  3966.  
  3967. /* border none */
  3968. .dark .bili-header .center-search-container .center-search__bar .nav-search-content,
  3969. .dark .bili-header .center-search-container .center-search__bar .nav-search-content .nav-search-input:focus,
  3970. .dark .bili-header .search-panel {
  3971. border: none !important;
  3972. }
  3973.  
  3974.  
  3975. /* fill */
  3976. .dark .bili-header .avatar-panel-popover .level-item .level-item__bar--next svg .level-bg {
  3977. fill: var(--w-text); !important;
  3978. }
  3979.  
  3980. `;
  3981. const is_account = local_url.indexOf("https://account.bilibili.com/") !== -1;
  3982. const account_css = is_account ? `
  3983.  
  3984.  
  3985. ` : ``;
  3986. const app_bilibili = /https:\/\/app\.bilibili\.com\/.*/.test(local_url) ? `
  3987. .dark span,.dark a,.dark p,.dark h1,.dark h2,.dark h3,.dark h4,.dark h5,
  3988. .dark .aside-wrap_2TTgM .anchor_wrapper_2leFH .anchor_item_3DKWq .text_H0qLc,
  3989. .dark .gameSns-content-account-text_2kf1l .title_3cbN0,.dark .gameSns-content-account-text_2kf1l .subtitle_3xtPu,
  3990. .dark .contactUs-content-info-item_3hznU .text_NvNTR,.dark .mine-header-userInfo_2PEyA .user-basic-nav_3ydDD .user-statistics-type_2qxNK,
  3991. .dark .mine-header-userInfo_2PEyA .user-basic-nav_3ydDD .user-statistics-num_13v1B,
  3992. .dark .gameSns-content-other-account_9YJ6O .wechat-text_2GmEa, .dark .gameSns-content-other-account_9YJ6O .weibo-text_35duF,
  3993. .dark .Card-header_1d4vx .card-title_2RmHu .title_SE4va,.dark .game-item-footer-score_2F75T .gameScoreNum_EuGJV,
  3994. .dark .Card-header_1BQ_x .card-title_HKAAg,.dark .collection-wrap_19zMo .collection-item_1UBgM .collection-item-game-name_c4Qj2,
  3995. .dark .collection-wrap_19zMo .collection-item_1UBgM .collection-item-game-count_SEbUq,
  3996. .dark .game-item-footer-name_2wzwp,.dark .game-item-footer-type_wMU_g,.dark .game-item-footer-no_269PI,
  3997. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameScore-no_UmJz1,
  3998. .dark .bili-game-footer .bili-game-footer-content .bili-game-footer-content-record,
  3999. .dark .bili-game-footer .bili-game-footer-content .bili-game-footer-content-record p,
  4000. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameScore_OHEKi .gameScoreNum_2smPo,
  4001. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameName_OGhFc,
  4002. .dark .Card-header_3tA8E .card-title_3s7_S, .dark .hotActivity-item-time_h-F8o,
  4003. .dark .list-item-title_IY-UG .date_cylZ8, .dark .list-item-title_IY-UG .games-num_2LlQZ,
  4004. .dark .list-item-cont_1zPV3 .hotGameItem_EJS60 .gameDes_2fvpP .gameName_2u5sS,
  4005. .dark .loadComplete-txt_2z5n_,.dark .Card-header_1d4vx .card-title_2RmHu .title_SE4va,
  4006. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-title_370f1>div,
  4007. .dark .feed-wrap_3BqTh .card-game-common_2b0P9 .card-content-info-text_1DwU6 .card-content-info-name_2y0cn,
  4008. .dark .feed-wrap_3BqTh .card-game-common_2b0P9 .card-content-info-text_1DwU6 .card-content-info-des_27h0g,
  4009. .dark .Bookswiper_3q1oK .gallery-thumbs_2oCbc .swiper-thumb-slide .gallery-thumbs-item_3mq8s .game-info_2X55m .game-info-tag_3lnOf,
  4010. .dark .Bookswiper_3q1oK .gallery-thumbs_2oCbc .swiper-thumb-slide .gallery-thumbs-item_3mq8s .game-info_2X55m .game-info-name_1X85G,
  4011. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-footer_2WHGE .score-degree_DnAAx,
  4012. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-footer_2WHGE .score-comment_3P3Er,
  4013. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-des_1sNxd{
  4014. color:var(--w-text-light) !important;
  4015. }
  4016.  
  4017.  
  4018. .dark .game-item-footer-name_2wzwp:hover,
  4019. .dark .game-item-footer-type_wMU_g:hover,
  4020. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameName_OGhFc:hover,
  4021. .dark .video-item-biref .biref-info .biref-title:hover {
  4022. color:var(--w-blue-link-hover) !important;
  4023. }
  4024.  
  4025.  
  4026. .dark .bili-game-footer,.dark .list_item_1gw1l,.dark .scroll-wrap_1vXo6 ,
  4027. .dark .Card-header_1d4vx .card-title_2RmHu .title_SE4va,
  4028. .dark .bili-game-header-nav .bili-game-header-nav-bar {
  4029. background:var(--w-bg-darker) !important;
  4030. color:var(--w-text-light) !important;
  4031. }
  4032.  
  4033.  
  4034. .dark .Home_1ebVE,
  4035. .dakr .block-area .timeline-toggle-block .timeline-toggle-btn {
  4036. background: none !important;
  4037. }
  4038.  
  4039.  
  4040. .dark .loadingTip-loadMore_1ydD3 .load_btn_2aV1A,.dark .body_RAI9S .aside_17bL3,
  4041. .dark .category-item_3tacB,.dark .collection-wrap_19zMo .collection-item_1UBgM,
  4042. .dark .tag_2uAvO{
  4043. border: 1px solid var(--w-border) !important;
  4044. color:var(--w-text-light) !important;
  4045. background:var(--w-bg-darker) !important;
  4046. }
  4047.  
  4048. .dark .category-item_3tacB:hover,.dark .Card-header_1BQ_x .btn-more_1RGB7 a:hover,
  4049. .dark .loadingTip-loadMore_1ydD3 .load_btn_2aV1A:hover,
  4050. .dark .tag_2uAvO:hover {
  4051. color:var(--w-blue-link-hover) !important;
  4052. border-color: var(--w-blue-link-hover) !important;
  4053. background:var(--w-bg-darker) !important;
  4054. }
  4055.  
  4056. ` : ``;
  4057. const game_bilibili = /https:\/\/game\.bilibili\.com\/.*/.test(local_url) ? `
  4058. .dark span,.dark a,.dark p,.dark h1,.dark h2,.dark h3,.dark h4,.dark h5,
  4059. .dark .aside-wrap_2TTgM .anchor_wrapper_2leFH .anchor_item_3DKWq .text_H0qLc,
  4060. .dark .gameSns-content-account-text_2kf1l .title_3cbN0,.dark .gameSns-content-account-text_2kf1l .subtitle_3xtPu,
  4061. .dark .contactUs-content-info-item_3hznU .text_NvNTR,.dark .mine-header-userInfo_2PEyA .user-basic-nav_3ydDD .user-statistics-type_2qxNK,
  4062. .dark .mine-header-userInfo_2PEyA .user-basic-nav_3ydDD .user-statistics-num_13v1B,
  4063. .dark .gameSns-content-other-account_9YJ6O .wechat-text_2GmEa, .dark .gameSns-content-other-account_9YJ6O .weibo-text_35duF,
  4064. .dark .Card-header_1d4vx .card-title_2RmHu .title_SE4va,.dark .game-item-footer-score_2F75T .gameScoreNum_EuGJV,
  4065. .dark .Card-header_1BQ_x .card-title_HKAAg,.dark .collection-wrap_19zMo .collection-item_1UBgM .collection-item-game-name_c4Qj2,
  4066. .dark .collection-wrap_19zMo .collection-item_1UBgM .collection-item-game-count_SEbUq,
  4067. .dark .game-item-footer-name_2wzwp,.dark .game-item-footer-type_wMU_g,.dark .game-item-footer-no_269PI,
  4068. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameScore-no_UmJz1,
  4069. .dark .bili-game-footer .bili-game-footer-content .bili-game-footer-content-record,
  4070. .dark .bili-game-footer .bili-game-footer-content .bili-game-footer-content-record p,
  4071. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameScore_OHEKi .gameScoreNum_2smPo,
  4072. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameName_OGhFc,
  4073. .dark .Card-header_3tA8E .card-title_3s7_S, .dark .hotActivity-item-time_h-F8o,
  4074. .dark .list-item-title_IY-UG .date_cylZ8, .dark .list-item-title_IY-UG .games-num_2LlQZ,
  4075. .dark .list-item-cont_1zPV3 .hotGameItem_EJS60 .gameDes_2fvpP .gameName_2u5sS,
  4076. .dark .loadComplete-txt_2z5n_,.dark .Card-header_1d4vx .card-title_2RmHu .title_SE4va,
  4077. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-title_370f1>div,
  4078. .dark .feed-wrap_3BqTh .card-game-common_2b0P9 .card-content-info-text_1DwU6 .card-content-info-name_2y0cn,
  4079. .dark .feed-wrap_3BqTh .card-game-common_2b0P9 .card-content-info-text_1DwU6 .card-content-info-des_27h0g,
  4080. .dark .Bookswiper_3q1oK .gallery-thumbs_2oCbc .swiper-thumb-slide .gallery-thumbs-item_3mq8s .game-info_2X55m .game-info-tag_3lnOf,
  4081. .dark .Bookswiper_3q1oK .gallery-thumbs_2oCbc .swiper-thumb-slide .gallery-thumbs-item_3mq8s .game-info_2X55m .game-info-name_1X85G,
  4082. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-footer_2WHGE .score-degree_DnAAx,
  4083. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-footer_2WHGE .score-comment_3P3Er,
  4084. .dark .Card-recomend-item_1FSJD .card-content_1oudE .card-content-des_1sNxd{
  4085. color:var(--w-text-light) !important;
  4086. }
  4087.  
  4088.  
  4089. .dark .game-item-footer-name_2wzwp:hover,
  4090. .dark .game-item-footer-type_wMU_g:hover,
  4091. .dark .list-item-cont_27du8 .testGameItem_1xvId .gameDes_1vyj7 .gameName_OGhFc:hover,
  4092. .dark .video-item-biref .biref-info .biref-title:hover {
  4093. color:var(--w-blue-link-hover) !important;
  4094. }
  4095.  
  4096.  
  4097. .dark .bili-game-footer,.dark .list_item_1gw1l,.dark .scroll-wrap_1vXo6 ,
  4098. .dark .Card-header_1d4vx .card-title_2RmHu .title_SE4va,
  4099. .dark .bili-game-header-nav .bili-game-header-nav-bar {
  4100. background:var(--w-bg-darker) !important;
  4101. color:var(--w-text-light) !important;
  4102. }
  4103.  
  4104.  
  4105. .dark .Home_1ebVE,
  4106. .dakr .block-area .timeline-toggle-block .timeline-toggle-btn {
  4107. background: none !important;
  4108. }
  4109.  
  4110.  
  4111. .dark .loadingTip-loadMore_1ydD3 .load_btn_2aV1A,.dark .body_RAI9S .aside_17bL3,
  4112. .dark .category-item_3tacB,.dark .collection-wrap_19zMo .collection-item_1UBgM,
  4113. .dark .tag_2uAvO{
  4114. border: 1px solid var(--w-border) !important;
  4115. color:var(--w-text-light) !important;
  4116. background:var(--w-bg-darker) !important;
  4117. }
  4118.  
  4119. .dark .category-item_3tacB:hover,.dark .Card-header_1BQ_x .btn-more_1RGB7 a:hover,
  4120. .dark .loadingTip-loadMore_1ydD3 .load_btn_2aV1A:hover,
  4121. .dark .tag_2uAvO:hover {
  4122. color:var(--w-blue-link-hover) !important;
  4123. border-color: var(--w-blue-link-hover) !important;
  4124. background:var(--w-bg-darker) !important;
  4125. }
  4126.  
  4127. ` : ``;
  4128. const is_link = local_url.indexOf("https://link.bilibili.com/") !== -1;
  4129. const link_css = is_link ? `
  4130.  
  4131.  
  4132. ` : ``;
  4133. const other = `
  4134. ${account_css}
  4135. ${app_bilibili}
  4136. ${game_bilibili}
  4137. ${link_css}
  4138. `;
  4139. const read = /.*:\/\/.*\.bilibili\.com\/read\/.*/.test(local_url) ? `
  4140. .dark p,.dark a,.dark span,
  4141. .dark h1,.dark h2,.dark h3,.dark h4,.dark h5,.dark h6,
  4142. .dark .iconfont,
  4143. .dark #article-content,.dark .interaction-info,.dark .interaction-info .toolbar .share-box,
  4144. .dark .normal-article-holder,
  4145. .dark .normal-article-holder h1,
  4146. .dark .normal-article-holder h2,
  4147. .dark .normal-article-holder h3,
  4148. .dark .normal-article-holder h4,
  4149. .dark .normal-article-holder h5,
  4150. .dark .normal-article-holder h6,
  4151. .dark .article-container .title-container .title,
  4152. .dark .article-breadcrumb .breadcrumb-title,
  4153. .dark .article-read-info>span[data-v-36aefa22],.dark .article-read-info>span,
  4154. .dark .right-side-bar .to-top .iconfont[data-v-38a9fd1d],.dark .right-side-bar .to-top .iconfont,
  4155. .dark .right-side-bar .side-toolbar .toolbar-item[data-v-38a9fd1d],.dark .right-side-bar .side-toolbar .toolbar-item,
  4156. .dark .coin-dialog-wrapper .coin-title,.dark .coin-dialog-wrapper .van-icon-guanbi,
  4157. .dark .right-side-bar .side-toolbar .toolbar-item .iconfont[data-v-38a9fd1d],.dark .right-side-bar .side-toolbar .toolbar-item .iconfont
  4158. {
  4159. color:var(--w-text-light) !important;
  4160. }
  4161.  
  4162. .dark .right-side-bar .to-top[data-v-38a9fd1d],.dark .right-side-bar .to-top,
  4163. .dark .right-side-bar .side-toolbar[data-v-38a9fd1d],.dark .right-side-bar .side-toolbar,
  4164. .dark .follow-btn[data-v-2847c980],.dark .follow-btn,
  4165. .dark .coin-dialog-wrapper .confirm-btn,
  4166. .dark .van-popover.van-followed,
  4167. .dark .coin-dialog-wrapper,
  4168. .dark .article-container {
  4169. border: 1px solid var(--w-border) !important;
  4170. color:var(--w-text-light) !important;
  4171. background:var(--w-bg-darker) !important;
  4172. }
  4173.  
  4174. .dark .article-container ,
  4175. .dark .comment-wrapper .comment-m,
  4176. .dark .followed[data-v-2847c980],.dark .followed,
  4177. .dark .article-up-info[data-v-904253a6],.dark .article-up-info,
  4178. .dark .fixed-top-header {
  4179. color:var(--w-text-light) !important;
  4180. background:var(--w-bg-darker) !important;
  4181. }
  4182.  
  4183. .dark .nav-tool-container .section:hover,
  4184. .dark .right-side-bar .to-top .iconfont[data-v-38a9fd1d]:hover,.dark .right-side-bar .to-top .iconfont:hover,
  4185. .dark .right-side-bar .to-top[data-v-38a9fd1d]:hover,.dark .right-side-bar .to-top:hover,
  4186. .dark .coin-dialog-wrapper .confirm-btn:hover,
  4187.  
  4188. .dark .nav-tool-container .section[data-v-3b26ecb6]:hover {
  4189. color:var(--w-blue-link-hover) !important;
  4190. border-color: var(--w-blue-link-hover) !important;
  4191. background:var(--w-bg-darker) !important;
  4192. }
  4193.  
  4194.  
  4195. .dark .coin-dialog-wrapper .van-icon-guanbi:hover {
  4196. color:var(--w-blue-link-hover) !important;
  4197. }
  4198.  
  4199.  
  4200. .dark .van-popover.van-followed .follow_dropdown li:hover {
  4201. background:var(--w-bg) !important;
  4202. color:var(--w-blue-link-hover) !important;
  4203. }
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209. ` : ``;
  4210. const space = /.*:\/\/space\.bilibili\.com\/\d+.*/.test(local_url) ? `
  4211. .dark .list-create {
  4212. background:var(--w-bg) !important;
  4213. }
  4214.  
  4215. .dark .elec .elec-status-bg-grey,
  4216. .dark #page-index #i-ann-content textarea,
  4217. .dark .bili-dyn-item,
  4218. .dark .bili-dyn-card-video__body,
  4219. .dark .bili-rich-text__content,
  4220. .dark .bili-dyn-card-video__desc,
  4221. .dark .bili-dyn-card-video__title,
  4222. .dark .series-item .item-title .qipapnum[data-v-40b5e135],
  4223. .dark .series-item .item-title .qipapnum,
  4224. .dark .contribution-sidenav .contribution-item,
  4225. .dark .album-list__tabs,
  4226. .dark #page-series-index .channel-option.no-channel[data-v-9e6dac30],
  4227. .dark #page-series-index .channel-option.no-channel,
  4228. .dark #page-series-index .channel-option,
  4229. .dark .bili-rich-textarea__inner.empty,
  4230. .dark .n .n-inner {
  4231. background:var(--w-bg-darker) !important;
  4232. color:var(--w-text) !important;
  4233. }
  4234.  
  4235. .dark .n .n-cursor {
  4236. background:var(--w-text-light) !important;
  4237. }
  4238.  
  4239.  
  4240. .dark #page-series-index .channel-option.no-channel p[data-v-9e6dac30],.dark #page-series-index .channel-option.no-channel p,
  4241. .dark .album-list__title,.dark .album-list__tab-name,
  4242. .dark .small-item .meta,.dark .n .n-data .n-data-v, .dark .n .n-data .n-data-k,
  4243. .dark #page-series-index .channel-item .channel-name,.dark #page-series-index .channel-item , .dark #page-series-index .channel-item .channel-name[data-v-9e6dac30],
  4244. .dark #page-index .channel.guest .channel-item .channel-title .channel-name, .dark #page-index .channel.guest .channel-name, .dark #page-index .channel-name,
  4245. .dark #page-index .col-2 .section-title,
  4246. .dark #page-index .col-2 .section .user-auth .auth-description,
  4247. .dark .user-info .user-info-title .info-title[data-v-31d5659a],
  4248. .dark .user-info .user-info-title .info-title,
  4249. .dark .user-info .info-content .info-command[data-v-31d5659a],
  4250. .dark .user-info .info-content .info-command,
  4251. .dark .user-info .info-content .info-value[data-v-31d5659a],
  4252. .dark .user-info .info-content .info-value,
  4253. .dark #id-card .idc-content .idc-username,.dark .m-level idc-m-level,
  4254. .dark .idc-meta-item,
  4255. .dark .elec .elec-count,.dark .elec,
  4256. .dark .elec .elec-setting, .elec .elec-total-c-num,
  4257. .dark .elec-total-c,
  4258. .dark .user-info .info-content .info-tags .info-tag .icon-tag[data-v-31d5659a],.dark .user-info .info-content .info-tags .info-tag .icon-tag,
  4259. .dark .user-info .info-content .info-tags .info-tag .tag-content[data-v-31d5659a],.dark .user-info .info-content .info-tags .info-tag .tag-content,
  4260. .dark #page-video #submit-video-type-filter a .count,
  4261. .dark #page-series-index .channel-index .breadcrumb[data-v-9e6dac30], .dark #page-series-index .channel-index .breadcrumb,
  4262. .dark #page-series-index .channel-index .breadcrumb .item.cur[data-v-9e6dac30],
  4263. .dark #page-series-index .channel-index .breadcrumb .item.cur,
  4264. .dark .breadcrumb, .dark .breadcrumb .item.cur, .dark .breadcrumb .item,
  4265. .dark #page-setting .setting-privacy-item .setting-privacy-name,
  4266. .dark #page-setting .setting-privacy-item,
  4267. .dark #page-fav .fav-sidenav .nav-title .text,.dark #page-fav .fav-main .filter-item .text,.dark #page-fav .fav-main .filter-item,.dark #page-fav .fav-main,
  4268. .dark #page-index .channel .empty-state p,.dark #page-index .channel,.dark #page-index p,.dark .private-hint,.dark .section-title,
  4269. .dark #page-fav .fav-main .filter-item,.dark .be-dropdown-item, .dark #page-fav .fav-main .filter-item .filter-type .be-dropdown-item i, .dark #page-fav .fav-main .filter-item .filter-type .be-dropdown-item span, .dark #page-fav .fav-main .filter-item .filter-type .be-dropdown-item p,.dark #page-fav .fav-main .filter-item .filter-type .be-dropdown-item a,
  4270. .dark .favInfo-box .favInfo-details .fav-options .meta,.dark .favInfo-box .favInfo-details .fav-options,
  4271. .dark span,.dark .sub-tabs span, .dark .sub-tabs .filter-content,.dark .sub-tabs,.dark .sub-tab,
  4272. .dark .bili-dyn-title__text,.dark .bili-rich-textarea__inner,
  4273. .dark .bili-dyn-forward-publishing__editor .bili-rich-textarea__inner,
  4274. .dark .bili-popover, .dark .bili-popover__arrow,
  4275. .dark .game-card__info-title[data-v-7c9854da],.dark .game-card__info-title,
  4276. .dark .section-title {
  4277. color:var(--w-text-light) !important;
  4278. }
  4279.  
  4280.  
  4281. .dark #page-setting .setting-tag-list a,
  4282. .dark #page-fav .fav-sidenav .nav-title .text:hover{
  4283. color:var(--w-text-light) !important;
  4284. }
  4285.  
  4286.  
  4287.  
  4288.  
  4289. .dark .bili-rich-textarea__inner,
  4290. .dark .bili-popover, .dark .bili-popover__arrow,
  4291. .dark .section {
  4292. border-color: var(--w-border) !important;
  4293. }
  4294.  
  4295.  
  4296.  
  4297.  
  4298. /* border-color color background */
  4299. .dark .section .count,
  4300. .dark .g-search input,
  4301. .dark #id-card,
  4302. .dark #page-index .col-1,
  4303. .dark #page-fav .fav-main .search-input input,
  4304. .dark .bili-topic-search__popover,
  4305. .dark #page-video #submit-video-type-filter,
  4306. .dark #page-dynamic .col-2 .section,
  4307.  
  4308. .dark #page-index .col-2 .section {
  4309. border-color: var(--w-border) !important;
  4310. color:var(--w-text-light) !important;
  4311. background:var(--w-bg-darker) !important;
  4312. }
  4313.  
  4314. .dark #page-index,.dark #page-index .col-1, .dark #page-index .col-2,
  4315. .dark #page-index .channel, .dark #page-index .channel .channel-item,
  4316. .dark #page-index .col-1 .section-title,.dark #page-index .col-2 .section-title,
  4317. .dark .series-item .split-line[data-v-40b5e135],.dark .series-item .split-line,
  4318. .dark .g-search input:focus {
  4319. border-color: var(--w-text) !important;
  4320. }
  4321.  
  4322. .dark .n .n-inner {
  4323. box-shadow:none !important;
  4324. }
  4325.  
  4326.  
  4327. .dark .col-full,
  4328.  
  4329.  
  4330. .dark .btn
  4331. .dark .new-elec-trigger,
  4332. .dark .btn.idc-btn.default,
  4333. .dark .elec-status,
  4334. .dark .bili-dyn-more__menu, .dark .be-dropdown-menu,
  4335. .dark #page-series-index .channel-option.no-channel .create-channel[data-v-9e6dac30],.dark #page-series-index .channel-option.no-channel .create-channel,
  4336. .dark .btn,.dark .btn.btn-large, .dark .btn.btn-large .btn-content[data-v-53027a10],
  4337. .dark .favInfo-box.favEmpty .favInfo-details .fav-options .fav-play,
  4338. .dark .favInfo-box.invalid .favInfo-details .fav-options .fav-play,
  4339. .reply-box .box-normal .reply-box-send[data-v-757acbb5]::after,.reply-box .box-normal .reply-box-send::after,
  4340. .reply-box .box-normal .reply-box-send,.reply-box .box-normal .reply-box-send,
  4341. .dark .be-dropdown-item:hover,
  4342. .dark .btn.idc-btn.primary {
  4343. color:var(--w-text-light) !important;
  4344. background:var(--w-bg-darker) !important;
  4345. border-color: var(--w-text) !important;
  4346. }
  4347.  
  4348.  
  4349.  
  4350. .dark #page-series-index .channel-option.no-channel .create-channel[data-v-9e6dac30]:hover,.dark #page-series-index .channel-option.no-channel .create-channel:hover,
  4351. .dark .favInfo-box.favEmpty .favInfo-details .fav-options .fav-play:hover,
  4352. .dark .favInfo-box.invalid .favInfo-details .fav-options .fav-play:hover,
  4353. .dark .btn.primary.btn-large:hover,
  4354. .dark .btn:hover,.dark .btn.btn-large .btn-content[data-v-53027a10]:hover,.dark .btn.btn-large:hover,
  4355. .dark .bili-dyn-more__menu:hover,
  4356. .dark .contribution-sidenav .contribution-item:hover,
  4357. .dark .btn:hover,
  4358. .reply-box .box-normal .reply-box-send[data-v-757acbb5]:hover::after,.reply-box .box-normal .reply-box-send:hover::after,
  4359. .reply-box .box-normal .reply-box-send,.reply-box .box-normal .reply-box-send:hover,
  4360. .dark .new-elec-trigger:hover,
  4361. .dark .elec-status:hover,
  4362. .dark .btn.idc-btn.primary:hover {
  4363. color:var(--w-blue-link-hover) !important;
  4364. border-color: var(--w-blue-link-hover) !important;
  4365. background:var(--w-bg-darker) !important;
  4366. }
  4367.  
  4368. .dark .btn.idc-btn.default:hover {
  4369. color:var(--w-blue-link-hover) !important;
  4370. border:1px solid var(--w-blue-link-hover) !important;
  4371. background:var(--w-bg-darker) !important;
  4372. }
  4373.  
  4374. .dark #page-setting #setting-new-tag-btn,
  4375. .dark #page-setting .setting-tag-list a,
  4376. .dark #page-setting #setting-new-tag {
  4377. background:var(--w-bg) !important;
  4378. border-color: var(--w-text) !important;
  4379. }
  4380.  
  4381. .dark #page-fav .fav-sidenav .fav-item.cur ,
  4382. .dark #page-fav .fav-sidenav .fav-item:hover {
  4383. background:var(--w-bg) !important;
  4384. }
  4385.  
  4386.  
  4387. .dark .h .h-v-host {
  4388. color: var(--w-white) !important;
  4389. background: var(--w-blue-link-hove) !important;
  4390. }
  4391.  
  4392.  
  4393. ` : ``;
  4394. const t = `
  4395. .dark #app {
  4396. --bg1: var(--w-bg-darker);
  4397. --text1: var(--w-text-light);
  4398. --text3: var(--w-text);
  4399. --v_bg1_float: var(--bg1);
  4400. --v_bg2_float: var(--bg1);
  4401. }
  4402.  
  4403.  
  4404.  
  4405. `;
  4406. const video = `
  4407.  
  4408. html {
  4409. --graph_bg_thick:var(--w-border-dark);
  4410. }
  4411.  
  4412.  
  4413.  
  4414. .dark .bili-header__bar,
  4415. .dark .bpx-player-sending-bar,
  4416. .dark .harmony-font,.dark #v_desc,
  4417. .dark .bili-comment.browser-pc,
  4418. .dark .comment-container, .dark .bpx-player-auxiliary .bpx-player-dm-function,
  4419. .dark .reply-header,.dark .arc_toolbar_report,.dark .video-toolbar-left,
  4420. .dark .bui-collapse .bui-collapse-header,
  4421. .dark .bpx-player-auxiliary .bpx-player-collapse .bui-collapse-body,
  4422. .dark .bpx-player-auxiliary .bpx-player-contextmenu.bpx-player-white,
  4423. .dark .bpx-player-auxiliary .bpx-player-dm-wrap,
  4424. .dark .bpx-player-dm-load-status,
  4425. .dark .base-video-sections-v1,
  4426. .dark .video-sections-v1[data-v-482ecf06],.dark .video-sections-v1,
  4427. .dark .video-sections-head_second-line,
  4428. .dark .bili-header .header-login-entry[data-v-fc330406], .dark .bili-header .header-login-entry,
  4429. .dark .vip-login-tip[data-v-fc330406], .dark .vip-login-tip,
  4430. .dark .reply-box.fixed-box[data-v-757acbb5],.dark .reply-box.fixed-box,
  4431. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item[data-v-78329793],
  4432. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item,
  4433. .dark .emoji-panel .emoji-content .emoji-info[data-v-c4965e38],.dark .emoji-panel, .dark .emoji-panel .emoji-content,
  4434. .dark .emoji-panel .emoji-tab[data-v-c4965e38],.dark .emoji-panel .emoji-tab,.dark .emoji-panel .emoji-title[data-v-c4965e38],.dark .emoji-panel .emoji-title,
  4435. .dark .note-list .list-note-operation[data-v-13587840],.dark .note-list .list-note-operation,.dark .note-list,
  4436. .dark .note-list .note-card-container .note-card[data-v-13587840],.dark .note-list .note-card-container .note-card,
  4437. .dark .user-card-m-exp .user-info-wrapper .face,
  4438. .dark #app .header[data-v-67c4001b],.dark #app .header,
  4439. .dark #app .container .textarea .textarea-warp textarea[data-v-67c4001b],.dark #app .container .textarea .textarea-warp textarea,
  4440. .dark #app .submit[data-v-67c4001b],.dark #app .submit,
  4441. .dark .coin-operated-m-exp,
  4442. .dark .mini-header {
  4443. background:var(--w-bg-darker) !important;
  4444. color:var(--w-text) !important;
  4445. }
  4446.  
  4447.  
  4448.  
  4449. .dark .reply-box.fixed-box[data-v-757acbb5],.dark .reply-box.fixed-box,
  4450. .dark .reply-box .box-expand .reply-box-emoji .emoji-btn[data-v-757acbb5], .dark .reply-box .box-expand .reply-box-emoji .emoji-btn,
  4451. .dark .emoji-panel[data-v-c4965e38], .dark .emoji-panel,
  4452. .dark .reply-box .box-expand .at-btn[data-v-757acbb5], .dark .reply-box .box-expand .at-btn,
  4453. .dark .arc_toolbar_report,
  4454. .dark .video-toolbar-container,
  4455.  
  4456. .dark #v_tag {
  4457. border-color:var(--w-border-dark) !important;
  4458. }
  4459.  
  4460. .dark .collection-m-exp .title,
  4461. .dark .reply-item .bottom-line[data-v-36229167], .dark .reply-item .bottom-line {
  4462. border-color:var(--w-text) !important;
  4463. }
  4464.  
  4465.  
  4466.  
  4467. .dark .collection-m-exp .content .group-list li label .count, .dark .collection-m-exp .content .group-list li label,.dark .collection-m-exp,
  4468. .dark .collection-m-exp .content .group-list li label .personal, .dark .collection-m-exp .content .group-list,.dark .collection-m-exp .content,
  4469. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item .user-info .user-fan[data-v-78329793] ,
  4470. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item .user-info .user-fan,
  4471. .dark .at-panel .at-list-container .at-list-ground .ground-name[data-v-78329793],
  4472. .dark .at-panel .at-list-container .at-list-ground .ground-name,
  4473. .dark .user-card-m-exp .user-info-wrapper .info p ,.dark .user-card-m-exp .user-info-wrapper .info .sign ,
  4474. .dark .user-card-m-exp .user-info-wrapper .info .social a ,
  4475. .dark #app .container .question[data-v-67c4001b],
  4476. .dark #app .container .question,
  4477. .dark #app .container .textarea .textarea-warp .limit[data-v-67c4001b],
  4478. .dark #app .container .textarea .textarea-warp .limit,
  4479. .dark .collection-m-exp .content .group-list li,
  4480. .dark .note-list .note-card-container .note-card .note-info[data-v-13587840],.dark .note-list .note-card-container .note-card .note-info
  4481. {
  4482.  
  4483. color:var(--w-text) !important;
  4484. }
  4485.  
  4486.  
  4487.  
  4488.  
  4489. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item .user-info .user-name[data-v-78329793],
  4490. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item .user-info .user-name,
  4491. .dark .at-panel .panel-title[data-v-78329793], .dark .at-panel .panel-title,
  4492. .dark .reply-box .box-expand .reply-box-emoji .emoji-btn[data-v-757acbb5],
  4493. .dark .reply-box .box-expand .reply-box-emoji .emoji-btn,
  4494. .dark .reply-box .box-expand .at-btn[data-v-757acbb5],
  4495. .dark .reply-box .box-expand .at-btn,
  4496. .dark .arc_toolbar_report,
  4497. .dark .bpx-player-video-info-online,.dark .bpx-player-video-info-divide,.dark .bpx-player-video-info-dm,
  4498. .dark .basic-desc-info,.dark .desc-info-text,
  4499. .dark .reply-content-container .reply-content,
  4500. .dark .root-reply,.dark .play-num, .dark .abstract,
  4501. .dark .reply-item .root-reply-container .content-warp .user-info .user-name,
  4502. .dark .mini-header__title,
  4503. .dark .toggle-btn-text,.dark .video-toolbar-left-item,
  4504. .dark .video-complaint-info video-toolbar-item-text,
  4505. .dark .video-note video-toolbar-right-item toolbar-right-note,
  4506. .dark .bpx-player-sending-bar .bpx-player-video-info,
  4507. .dark .mini-header .right-entry .right-entry__outside .right-entry-icon,
  4508. .dark .bpx-player-dm-btn-time,.dark .bpx-player-dm-btn-dm,.dark.bpx-player-dm-btn-date,
  4509. .dark .bpx-player-auxiliary .bpx-player-dm-container .dm-info-row,
  4510. .dark .bpx-player-auxiliary .bpx-player-dm-container .dm-info-row .dm-info-dm,
  4511. .dark .bpx-player-auxiliary .bpx-player-contextmenu.bpx-player-white>li,
  4512. .dark .dm-info-date,.dark .first-line-title, .dark .cur-page,
  4513. .dark .bili-header .header-login-entry>img[data-v-fc330406],
  4514. .dark .bili-header .header-login-entry>img,
  4515. .dark .bili-header .login-panel-popover .register-tip[data-v-fc330406] ,
  4516. .dark .bili-header .login-panel-popover .register-tip,
  4517. .dark .bili-header .login-panel-popover .login-btn[data-v-fc330406],
  4518. .dark .bili-header .login-panel-popover .login-btn,
  4519. .dark .bili-header .login-panel-popover .register-tip[data-v-fc330406]>a,
  4520. .dark .bili-header .login-panel-popover .register-tip>a,
  4521. .dark .vip-login-countdown-row .countdown-lable[data-v-fc330406],
  4522. .dark .vip-login-countdown-row .countdown-lable,
  4523. .dark .vip-login-countdown-row .counddown-wrap[data-v-fc330406],
  4524. .dark .vip-login-countdown-row .counddown-wrap,
  4525. .dark .vip-login-countdown-row .counddown-wrap span[data-v-fc330406],
  4526. .dark .vip-login-countdown-row .counddown-wrap span,
  4527. .dark .vip-login-title[data-v-fc330406],
  4528. .dark .vip-login-title,
  4529. .dark .vip-login-subtitle[data-v-fc330406],
  4530. .dark .vip-login-subtitle,
  4531. .dark .video-page-card-small .card-box .info .title,
  4532. .dark .bili-header .upload-panel-popover .upload-item .item-title[data-v-fc330406],
  4533. .dark .bili-header .upload-panel-popover .upload-item .item-title,
  4534. .dark .video-page-card-small .card-box .info .upname,
  4535. .dark .video-page-card-small .card-box .info .playinfo,
  4536. .dark .next-button .txt,.dark .video-episode-card__info-title, .dark .video-episode-card__info-duration,
  4537. .dark .membersinfo-normal .header .staff-amt[data-v-42892ec8],
  4538. .dark .membersinfo-normal .header .staff-amt,
  4539. .dark .reply-header .reply-navigation .nav-bar .nav-title .nav-title-text[data-v-a3384d8f],
  4540. .dark .reply-header .reply-navigation .nav-bar .nav-title .nav-title-text,
  4541. .dark .bili-header .login-panel-popover .register-exper[data-v-fc330406],
  4542. .dark .bili-header .login-panel-popover .register-exper,
  4543. .dark .reply-header .reply-navigation .nav-bar .nav-sort.hot .hot-sort[data-v-a3384d8f],
  4544. .dark .reply-header .reply-navigation .nav-bar .nav-sort.time .time-sort[data-v-a3384d8f],
  4545. .dark .reply-header .reply-navigation .nav-bar .nav-sort.hot .hot-sort,
  4546. .dark .reply-header .reply-navigation .nav-bar .nav-sort.time .time-sort,
  4547. .dark .sub-reply-item .sub-user-info .sub-user-name[data-v-26797283],.dark .sub-reply-item .sub-user-info .sub-user-name,
  4548. .dark .video-info-container .video-title[data-v-4f1c0915],.dark .video-info-container .video-title,
  4549. .dark .video-info-detail[data-v-3b903b56], .dark .video-info-detail,
  4550. .dark .reply-box.disabled .box-normal .reply-box-send .send-text[data-v-757acbb5], .dark .reply-box.disabled .box-normal .reply-box-send .send-text,
  4551. .dark .sub-reply-list .view-more .view-more-pagination[data-v-27ad2dff], .dark .sub-reply-list .view-more .view-more-paginatio,
  4552. .dark .note-content, .dark .note-list .note-card-container .note-card .note-content[data-v-13587840],.dark .note-list .note-card-container .note-card .note-content,
  4553. .dark .note-pc .note-container .note-header .note-title,
  4554. .dark .note-list .note-card-container .note-card .user-info .user-name,.dark .note-list .note-card-container .note-card .user-info .user-name[data-v-13587840],
  4555. .dark .recommend-list-v1 .rec-title,.dark .recommend-list-v1 .rec-title[data-v-39ee0c7c],
  4556. .dark .video-toolbar-right-item, .dark .video-note.video-toolbar-right-item[data-v-bb961c9e],.dark .video-note.video-toolbar-right-item,
  4557. .dark .user-card-m-exp .user-info-wrapper .info .social .tip_text,
  4558. .dark .user-card-m-exp .user-info-wrapper .info .official-wrapper,
  4559. .dark .user-card-m-exp .user-info-wrapper .info .user .name,
  4560. .dark .coin-operated-m-exp .coin-title,.dark .coin-operated-m-exp .like-checkbox,
  4561. .dark .coin-operated-m-exp .coin-bottom .tips,
  4562. .dark .collection-m-exp .title,
  4563. .dark .video-title {
  4564. color:var(--w-text-light) !important;
  4565. }
  4566.  
  4567.  
  4568. .dark .dark .user-card-m-exp .user-info-wrapper .info .user .name:hover,
  4569. .dark .video-page-card-small .card-box .info .title:hover,
  4570. .dark .bili-header .upload-panel-popover .upload-item .item-title[data-v-fc330406]:hover,
  4571. .dark .bili-header .upload-panel-popover .upload-item .item-title:hover,
  4572. .dark .video-page-card-small .card-box .info .upname:hover,
  4573. .dark .video-episode-card__info-title:hover, .dark .video-episode-card__info-duration:hover,
  4574. .dark .first-line-title:hover,
  4575. .dark .video-complaint-info video-toolbar-item-text:hover,
  4576. .dark .video-note video-toolbar-right-item toolbar-right-note:hover,
  4577. .dark .mini-header .right-entry .right-entry__outside .right-entry-icon:hover,
  4578. .dark .mini-header__title:hover,.dark .toggle-btn-text:hover,
  4579. .dark .bili-header .login-panel-popover .login-btn[data-v-fc330406]:before,
  4580. .dark .bili-header .login-panel-popover .login-btn:before,
  4581. .dark .bili-header .login-panel-popover .login-btn[data-v-fc330406]:hover:before,
  4582. .dark .bili-header .login-panel-popover .login-btn:hover:before,
  4583. .dark .bili-header .login-panel-popover .register-tip[data-v-fc330406]>a:hover,
  4584. .dark .bili-header .login-panel-popover .register-tip>a:hover,
  4585. .dark .reply-header .reply-navigation .nav-bar .nav-title .nav-title-text[data-v-a3384d8f]:hover,
  4586. .dark .reply-header .reply-navigation .nav-bar .nav-title .nav-title-text:hover,
  4587. .dark .user-card-m-exp .user-info-wrapper .info .social a:hover
  4588.  
  4589. {
  4590. color:var(--w-blue-link-hover) !important;
  4591. }
  4592.  
  4593.  
  4594. .dark .at-panel[data-v-78329793], .dark .at-panel,
  4595. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item[data-v-78329793]:hover,
  4596. .dark .at-panel .at-list-container .at-list-ground .at-user-list .at-user-item:hover,
  4597. .dark .bpx-player-auxiliary .bpx-player-dm-btn-footer,
  4598. .dark .bpx-player-auxiliary .bpx-player-dm-btn-history.bpx-player-disable,
  4599. .dark .bpx-player-auxiliary .bpx-player-dm-btn-history,
  4600. .dark .membersinfo-normal .header[data-v-42892ec8],.membersinfo-normal .header,
  4601. .dark .reply-box .box-normal .reply-box-warp .reply-box-textarea[data-v-757acbb5],
  4602. .dark .reply-box .box-normal .reply-box-warp .reply-box-textarea,
  4603. .dark .vip-login-countdown-row .counddown-wrap span[data-v-fc330406],.dark .vip-login-countdown-row .counddown-wrap span,
  4604. .dark .reply-tag-item,
  4605. .dark .vip-login-btn, .dark .vip-login-btn[data-v-fc330406],
  4606. .dark .bili-header .header-upload-entry[data-v-fc330406],
  4607. .dark .bili-header .header-upload-entry, .dark .bili-header .header-upload-entry[data-v-fc330406],
  4608. .dark .second-line_right,.dark .base-video-sections-v1 .video-section-list .video-episode-card__info-playing,
  4609. .dark .reply-box.disabled .box-normal .reply-box-warp .disable-mask[data-v-757acbb5],
  4610. .dark .reply-box.disabled .box-normal .reply-box-warp .disable-mask,
  4611. .dark .reply-box.disabled .box-normal .reply-box-warp .disable-mask .no-login-mask .login-btn[data-v-757acbb5],
  4612. .dark .reply-box.disabled .box-normal .reply-box-warp .disable-mask .no-login-mask .login-btn,
  4613. .dark .recommend-list-v1 .rec-footer[data-v-39ee0c7c], .dark .recommend-list-v1 .rec-footer,
  4614. .dark .reply-box .box-normal .reply-box-send[data-v-757acbb5],.dark .reply-box .box-normal .reply-box-send,
  4615. .dark .reply-box .reply-box-send[data-v-757acbb5],.dark .reply-box .reply-box-send,
  4616. .dark .video-tool-more-popover .video-tool-more-dropdown .dropdown-item,
  4617. .dark .video-tool-more-popover, .dark .note-header.drag-el,
  4618. .dark .user-card-m-exp .user-info-wrapper .info .user .user-label,
  4619. .dark .user-card-m-exp .user-info-wrapper .info .btn-box .like ,
  4620. .dark .user-card-m-exp .user-info-wrapper .info .btn-box .liked,
  4621. .dark .user-card-m-exp .user-info-wrapper .info .btn-box .message,
  4622. .dark #app .submit .cancel[data-v-67c4001b],
  4623. .dark #app .submit .cancel,
  4624. .dark #app .submit .confirm[data-v-67c4001b],
  4625. .dark #app .submit .confirm,
  4626. .dark .coin-operated-m,
  4627. .dark .coin-operated-m-exp .coin-bottom .bi-btn,
  4628. .dark .collection-m-exp,
  4629. .dark .primary-btn,.dark .palette-button-wrap .flexible-roll-btn-inner[data-v-46b9cf37],.dark .palette-button-wrap .flexible-roll-btn-inner,
  4630. .dark .collection-m-exp .content .group-list .add-group .add-btn,
  4631. .dark .collection-m-exp .bottom .btn.disable,
  4632. .dark .collection-m-exp .bottom .btn,
  4633. .dark .fixed-sidenav-storage .fixed-sidenav-storage-item[data-v-5d529e3e],.dark .fixed-sidenav-storage .fixed-sidenav-storage-item,
  4634. .dark .video-tag-container .tag-panel .tag .show-more-btn[data-v-934a50f8],.dark .video-tag-container .tag-panel .tag .show-more-btn,
  4635. .dark .video-tag-container .tag-panel .tag-link {
  4636. color:var(--w-text-light) !important;
  4637. background:var(--w-bg-darker) !important;
  4638. border:1px solid var(--w-text-light) !important;
  4639. }
  4640.  
  4641.  
  4642. .dark .collection-m-exp .bottom .btn.disable:hover,.dark .collection-m-exp .bottom .btn:hover,
  4643. .dark .collection-m-exp .content .group-list .add-group .add-btn:hover,
  4644. .dark .coin-operated-m-exp .coin-bottom .bi-btn:hover,
  4645. .dark #app .submit .cancel[data-v-67c4001b]:hover,.dark #app .submit .cancel:hover,
  4646. .dark #app .submit .confirm[data-v-67c4001b]:hover,.dark #app .submit .confirm:hover,
  4647. .dark .fixed-sidenav-storage .fixed-sidenav-storage-item[data-v-5d529e3e]:hover,.dark .fixed-sidenav-storage .fixed-sidenav-storage-item:hover,
  4648. .dark .primary-btn:hover,
  4649. .dark .palette-button-wrap .flexible-roll-btn-inner[data-v-46b9cf37]:hover,.dark .palette-button-wrap .flexible-roll-btn-inner:hover,
  4650.  
  4651. .dark .dark .user-card-m-exp .user-info-wrapper .info .btn-box .message:hover,
  4652. .dark .user-card-m-exp .user-info-wrapper .info .user .user-label:hover,
  4653. .dark .user-card-m-exp .user-info-wrapper .info .btn-box .liked:hover,
  4654. .dark .user-card-m-exp .user-info-wrapper .info .btn-box .like:hover ,
  4655. .dark .reply-box.disabled .box-normal .reply-box-warp .disable-mask .no-login-mask .login-btn[data-v-757acbb5]:hover,
  4656. .dark .reply-box.disabled .box-normal .reply-box-warp .disable-mask .no-login-mask .login-btn:hover,
  4657. .dark .bpx-player-auxiliary .bpx-player-dm-btn-footer:hover,
  4658. .dark .bpx-player-auxiliary .bpx-player-dm-btn-history.bpx-player-disable:hover,
  4659. .dark .bpx-player-auxiliary .bpx-player-dm-btn-history:hover,
  4660. .dark .second-line_right:hover,
  4661. .dark .vip-login-btn[data-v-fc330406]:hover,
  4662. .dark .vip-login-btn:hover,
  4663. .dark .bili-header .header-upload-entry[data-v-fc330406]:hover,
  4664. .dark .bili-header .header-upload-entry:hover,
  4665. .dark .recommend-list-v1 .rec-footer[data-v-39ee0c7c]:hover, .dark .recommend-list-v1 .rec-footer:hover,
  4666. .dark .reply-box .box-normal .reply-box-send[data-v-757acbb5]:hover,.dark .reply-box .box-normal .reply-box-send:hover,
  4667. .dark .reply-box .reply-box-send[data-v-757acbb5]:hover,.dark .reply-box .reply-box-send:hover,
  4668. .dark .video-tag-container .tag-panel .tag .show-more-btn[data-v-934a50f8]:hover,.dark .video-tag-container .tag-panel .tag .show-more-btn:hover,
  4669. .dark .video-tag-container .tag-panel .tag-link:hover {
  4670. color:var(--w-blue-link-hover) !important;
  4671. border-color: var(--w-blue-link-hover) !important;
  4672. background:var(--w-bg-darker) !important;
  4673. }
  4674.  
  4675. .dark .bpx-player-dm-setting-wrap,
  4676. .dark .bpx-player-dm-setting,
  4677. .dark .bui-dropdown-icon,
  4678. .dark .bui-collapse .bui-collapse-header .bui-collapse-arrow .bui-collapse-arrow-text .arrow-icon,
  4679. .dark .bui-danmaku-switch {
  4680. fill:var(--w-text-light) !important;
  4681. }
  4682.  
  4683.  
  4684. .dark #bilibili-player-placeholder {
  4685. box-shadow: none !important;
  4686. }
  4687. `;
  4688. const router = `
  4689. ${home}
  4690. ${video}
  4691. ${space}
  4692. ${blackboard}
  4693. ${t}
  4694. ${anime}
  4695. ${guochuang}
  4696. ${douga}
  4697. ${read}
  4698. `;
  4699. const dark = `
  4700. ${common}
  4701. ${router}
  4702. ${other}
  4703.  
  4704. `;
  4705. const css = is_bilibili ? `
  4706. div#i_cecream .floor-single-card,
  4707. div#i_cecream .bili-live-card.is-rcmd,
  4708. div#i_cecream .adblock-tips,
  4709. .activity-m-v1,
  4710. div.video-container-v1 div.pop-live-small-mode.part-undefined,
  4711. .recommended-swipe.grid-anchor,
  4712. .video-page-special-card-small
  4713. {
  4714. display:none !important;
  4715. }
  4716.  
  4717. /* 输入框*/
  4718. .nav-search-content>input::placeholder {
  4719. color: transparent;
  4720. opacity:0 !important;
  4721. }
  4722.  
  4723. .m-bilibili-btn {
  4724. cursor: pointer !important;
  4725. background: #FFFFFF !important;
  4726. background: var(--bg1_float) !important;
  4727. border: 1px solid #E3E5E7 !important;
  4728. border: 1px solid var(--line_regular) !important;
  4729. border-radius: 8px !important;
  4730. box-sizing: border-box !important;
  4731. padding: 6px !important;
  4732. margin-bottom: 6px !important;
  4733. color: #18191C !important;
  4734. color: var(--text1) !important;
  4735. line-height: 14px;
  4736. font-size: 12px;
  4737. display: flex;
  4738. flex-direction: column;
  4739. align-items: center;
  4740. width: 40px;
  4741. }
  4742.  
  4743. .bili-video-card__info--bottom:hover .m-span-text,
  4744. .video-page-card-small:hover .m-span-text,
  4745. .up-info-container:hover .m-span-text,
  4746. .video-page-operator-card-small:hover .m-span-text
  4747. {
  4748. opacity: 1;
  4749. transform: scale(1.1);
  4750. color:orange;
  4751. }
  4752.  
  4753.  
  4754. ${dark}
  4755. ` : "";
  4756. addStyle(
  4757. `
  4758. ${css$4}
  4759. ${css$3}
  4760. ${css$2}
  4761. ${css}
  4762. ${css$1}
  4763. `
  4764. );
  4765. (function() {
  4766. if (typeof window == "undefined") {
  4767. return;
  4768. }
  4769. if (is_exculues) {
  4770. console.warn("当前地址不支持!");
  4771. return;
  4772. }
  4773. try {
  4774. let text = "%c欢迎使用直播插件,下载地址%c";
  4775. if (!is_localhost) {
  4776. console.clear();
  4777. }
  4778. console.log(
  4779. text.concat(download_plugin_url, ""),
  4780. "background: rgb(255, 93, 35); padding: 1px; border-radius: 3px 0 0 3px; color: #fff",
  4781. "border-radius: 0 3px 3px 0; color: #fff"
  4782. );
  4783. console.log(
  4784. "%c地址:%c ".concat(source_code_url, ""),
  4785. "background: rgb(255, 93, 35); padding: 1px; border-radius: 3px 0 0 3px; color: #fff",
  4786. "border-radius: 0 3px 3px 0; color: #fff"
  4787. );
  4788. updateDarkClass();
  4789. if (is_huya) {
  4790. new TriggerLive();
  4791. } else if (is_douyu) {
  4792. new FishLive();
  4793. } else if (is_bilibili) {
  4794. new BiliBili();
  4795. } else if (is_douyin) {
  4796. new DouYin();
  4797. } else if (is_localhost) {
  4798. new LivePlugin();
  4799. } else {
  4800. error("插件地址不适配,请检查匹配地址!!!");
  4801. }
  4802. } catch (e) {
  4803. error(e);
  4804. }
  4805. })();
  4806.  
  4807. })();