BiliPlus UI

修改BiliPlus界面

  1. // ==UserScript==
  2. // @name BiliPlus UI
  3. // @namespace https://www.biliplus.com/
  4. // @version 1.19
  5. // @description 修改BiliPlus界面
  6. // @author SettingDust
  7. // @include http*://www.biliplus.com/*
  8.  
  9. // @require https://code.jquery.com/jquery-latest.js
  10. // @require https://cdn.bootcss.com/Ripple.js/1.2.1/ripple.min.js
  11. // @require https://cdn.bootcss.com/nprogress/0.2.0/nprogress.min.js
  12.  
  13. // @grant none
  14. // ==/UserScript==
  15.  
  16. (function () {
  17. 'use strict';
  18. $(function () {
  19. if ($('.sidebar').length > 0) {
  20. var css = "";
  21. //基础css
  22. css += `
  23. html {
  24. -webkit-font-smoothing: antialiased;
  25. }
  26. .biliplus-ui-font {
  27. font-family: Verdana, 'Roboto', 'Helvetica', 'Arial', sans-serif;
  28. font-size: 1.3125rem;
  29. line-height: 1.16667em;
  30. font-weight: 500;
  31. }
  32. .biliplus-ui-avatar {
  33. border-radius: 50%;
  34. }
  35. .biliplus-ui-center {
  36. left: 50%;
  37. position: relative;
  38. top: 50%;
  39. transform: translateX(-50%) translateY(-50%);
  40. }
  41. .biliplus-ui-circle-loading {
  42. color: #2196f3;
  43. margin: 0 16px;
  44. display: inline-block;
  45. width: 50px;
  46. height: 50px;
  47. }
  48. @-webkit-keyframes progress-circular-rotate {
  49. 100% {
  50. transform: rotate(360deg);
  51. }
  52. }
  53. @-webkit-keyframes progress-circular-dash {
  54. 0% {
  55. stroke-dasharray: 1px, 200px;
  56. stroke-dashoffset: 0px;
  57. }
  58. 50% {
  59. stroke-dasharray: 100px, 200px;
  60. stroke-dashoffset: -15px;
  61. }
  62. 100% {
  63. stroke-dasharray: 100px, 200px;
  64. stroke-dashoffset: -120px;
  65. }
  66. }
  67. .biliplus-ui-circle-loading-svg {
  68. animation: progress-circular-rotate 1.4s linear infinite;
  69. }
  70. .biliplus-ui-circle-loading-svg-circle {
  71. animation: progress-circular-dash 1.4s ease-in-out infinite;
  72. stroke-dasharray: 80px, 200px;
  73. stroke-dashoffset: 0px;
  74. stroke: currentColor;
  75. stroke-linecap: round;
  76. }
  77. *, *::before, *::after {
  78. box-sizing: inherit;
  79. }`;
  80. //顶部css
  81. css += `
  82. .biliplus-ui-header {
  83. width: 100%;
  84. transition: width 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  85. color: rgba(255, 255, 255, 1);
  86. background-color: #0092f8;
  87. top: 0;
  88. left: auto;
  89. right: 0;
  90. position: fixed;
  91. display: flex;
  92. z-index: 1100;
  93. box-sizing: border-box;
  94. flex-shrink: 0;
  95. flex-direction: column;
  96. box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  97. }
  98. @media (min-width: 1280px) {
  99. .biliplus-ui-header {
  100. width: calc(100% - 250px);
  101. }
  102. }
  103. .biliplus-ui-bar {
  104. padding: 0 24px;
  105. height: 64px;
  106. display: flex;
  107. position: relative;
  108. align-items: center;
  109. }
  110. .biliplus-ui-title {
  111. flex: 0 1 auto;
  112. margin: 0;
  113. margin-left: 24px;
  114. }
  115. .biliplus-ui-whitespace {
  116. flex: 1 1 auto;
  117. }
  118. .biliplus-ui-bar-item {
  119. display: inline;
  120. flex-direction: inherit;
  121. margin: 0 4px;
  122. }
  123. .biliplus-ui-button,.biliplus-ui-button:hover,.biliplus-ui-button:link,.biliplus-ui-button:active,.biliplus-ui-button:focus{
  124. color: inherit;
  125. flex: 0 0 auto;
  126. width: 48px;
  127. height: 48px;
  128. font-size: 1.5rem;
  129. text-align: center;
  130. border-radius: 50%;
  131. cursor: pointer;
  132. border: 0;
  133. display: inline-flex;
  134. outline: none;
  135. position: relative;
  136. user-select: none;
  137. align-items: center;
  138. vertical-align: middle;
  139. text-decoration: none;
  140. justify-content: center;
  141. background-color: transparent;
  142. -webkit-appearance: none;
  143. -webkit-tap-highlight-color: transparent;
  144. padding: 0;
  145. }
  146. .biliplus-ui-button-icon {
  147. width: 100%;
  148. display: flex;
  149. align-items: inherit;
  150. justify-content: inherit;
  151. }
  152. .biliplus-ui-element {
  153. width: 1.5em;
  154. height: 1.5em;
  155. }
  156. .biliplus-ui-svg {
  157. fill: currentColor;
  158. width: 24px;
  159. height: 24px;
  160. display: inline-block;
  161. transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  162. user-select: none;
  163. flex-shrink: 0;
  164. }`;
  165.  
  166. //搜索css
  167. css += `
  168. .biliplus-ui-search-input {
  169. width: 0;
  170. position: relative;
  171. border: 0;
  172. margin: 0;
  173. display: block;
  174. background: none;
  175. white-space: normal;
  176. vertical-align: top;
  177. border-bottom: solid #fff 1.5px;
  178. color: #fff;
  179. transition: 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  180. font-size: 1em;
  181. padding: 4px 0;
  182. outline: none;
  183. }
  184. .biliplus-ui-search-input:focus {
  185. width: 250px;
  186. padding: 4px;
  187. }`;
  188.  
  189. //侧边栏css
  190. css += `
  191. .biliplus-ui-sidebar {
  192. width: 250px;
  193. background-color: #fff;
  194. height: 100%;
  195. z-index: 62;
  196. position: fixed;
  197. pointer-events: all;
  198. }
  199. .biliplus-ui-sidebar-bar {
  200. display: flex;
  201. position: absolute;
  202. width: 100%;
  203. height: 100%;
  204. z-index: 62;
  205. pointer-events: none;
  206. }
  207. .biliplus-ui-sidebar-ul {
  208. padding: 0;
  209. padding-top: 8px;
  210. padding-bottom: 8px;
  211. flex: 1 1 auto;
  212. margin: 0;
  213. position: relative;
  214. list-style: none;
  215. }
  216. .biliplus-ui-sidebar-li {
  217. color: rgba(0, 0, 0, 0.87);
  218. display: block;
  219. font-size: 0.875rem;
  220. font-weight: 500;
  221. font-family: Verdana, 'Roboto', 'Helvetica', 'Arial', sans-serif;
  222. line-height: 1.71429em;
  223. padding-top: 0;
  224. padding-bottom: 0;
  225. position: relative;
  226. align-items: center;
  227. justify-content: flex-start;
  228. text-decoration: none;
  229. }
  230. .biliplus-ui-sidebar-li-a {
  231. padding-left: 24px;
  232. padding-right: 24px;
  233. border-radius: 0;
  234. text-transform: none;
  235. justify-content: flex-start;
  236. width: 100%;
  237. transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  238. color: rgba(0, 0, 0, 0.87) !important;
  239. padding: 8px 16px;
  240. min-width: 88px;
  241. font-size: 1rem;
  242. box-sizing: border-box;
  243. min-height: 36px;
  244. line-height: 1.4em;
  245. font-family: Verdana, 'Roboto', 'Helvetica', 'Arial', sans-serif;
  246. font-weight: 500;
  247. cursor: pointer;
  248. border: 0;
  249. display: inline-flex;
  250. outline: none;
  251. position: relative;
  252. user-select: none;
  253. align-items: center;
  254. vertical-align: middle;
  255. text-decoration: none;
  256. background-color: transparent;
  257. -webkit-appearance: none;
  258. -webkit-tap-highlight-color: transparent;
  259. }
  260. .biliplus-ui-sidebarli-a:hover {
  261. background-color: rgba(0, 0, 0, 0.12);
  262. }`;
  263. //个人信息栏
  264. css += `
  265. .biliplus-ui-sidebar-user {
  266. right: -250px;
  267. border-left: 1px solid rgba(0, 0, 0, 0.12);
  268. transition: .3s cubic-bezier(0.4, 0, 0.2, 1);
  269. }
  270. .biliplus-ui-sidebar-user-content {
  271. margin-top: 14.68em;
  272. }
  273. .biliplus-ui-sidebar-user-name {
  274. text-align: center;
  275. padding-bottom: 16px;
  276. border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  277. margin-bottom: 0;
  278. font-size: 700;
  279. }
  280. .biliplus-ui-sidebar-user-on {
  281. right: 0;
  282. box-shadow: 0px 5px 20px 0px rgba(0, 0, 0, 0.2);
  283. }
  284. .biliplus-ui-avatar-button-big {
  285. cursor: default;
  286. box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 10px, rgba(0, 0, 0, 0.23) 0px 3px 10px;
  287. }
  288. .biliplus-ui-avatar-big {
  289. cursor: pointer;
  290. }`;
  291. //菜单css
  292. css += `
  293. .biliplus-ui-sidebar-menu {
  294. left: -250px;
  295. border-right: 1px solid rgba(0, 0, 0, 0.12);
  296. transition: .3s cubic-bezier(0.4, 0, 0.2, 1);
  297. }
  298. .biliplus-ui-sidebar-bar-menu {
  299. z-index: 1200;
  300. }
  301. .biliplus-ui-sidebar-menu-on {
  302. left: 0;
  303. box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);
  304. }
  305. .biliplus-ui-sidebar-menu-title-content {
  306. flex-grow: 1;
  307. align-items: flex-start;
  308. flex-direction: column;
  309. justify-content: center;
  310. padding-left: 24px;
  311. padding-right: 24px;
  312. min-height: 64px;
  313. }
  314. @media (min-width: 1280px){
  315. .biliplus-ui-sidebar-menu {
  316. left: 0;
  317. }
  318. }
  319. .biliplus-ui-sidebar-menu-title {
  320. display: flex;
  321. border-bottom: 1px solid rgba(0, 0, 0, 0.12);
  322. color: #0092f8 !important;
  323. }
  324. .biliplus-ui-sidebar-menu-title-main {
  325. font-size: 2.3em;
  326. font-weight: 700;
  327. line-height: 54px;
  328. padding: 5px 0;
  329. user-select: none;
  330. }
  331. .biliplus-ui-sidebar-menu-foot {
  332. bottom: 24px;
  333. position: absolute;
  334. height: 40px;
  335. overflow: hidden;
  336. transition: .1s;
  337. }
  338. .biliplus-ui-sidebar-menu-foot:hover {
  339. height: 164px;
  340. }
  341. .sidebar-about {
  342. color: #000;
  343. margin: 0 50px !important;
  344. }
  345. .sidebar-about>a {
  346. color: #cdcdcd;
  347. }
  348. .sidebar-about>a:hover {
  349. color: #000;
  350. }
  351. .biliplus-ui-about {
  352. padding: 0px;
  353. white-space: pre;
  354. font-size: 9px;
  355. line-height: 20px;
  356. color: #cdcdcd;
  357. }`;
  358.  
  359. //主体内容
  360. css += `
  361. .biliplus-ui-content {
  362. margin-bottom: 100px;
  363. max-width: 100%;
  364. margin: 0 auto;
  365. flex: 1 1 100%;
  366. position: relative;
  367. z-index: 1;
  368. padding: 100px 24px;
  369. }
  370. @media (min-width: 948px) {
  371. #content {
  372. max-width: 900px;
  373. margin: auto;
  374. }
  375. }
  376. @media (min-width: 1280px) {
  377. .biliplus-ui-content {
  378. margin: 0;
  379. margin-left: 250px;
  380. }
  381. }
  382. #bgBlur {
  383. pointer-events: none;
  384. }`;
  385.  
  386. //提示修改
  387. css += `
  388. .Biliplus-Notice {
  389. z-index: 1111 !important;
  390. }`;
  391.  
  392. //背景LOGO
  393. css += `
  394. .logo {
  395. font-family: Verdana;
  396. font-size: 16em;
  397. opacity: 0.01;
  398. position: fixed;
  399. bottom: 0;
  400. right: 0;
  401. font-weight: 700;
  402. user-select: none;
  403. pointer-events: none;
  404. z-index: 0;
  405. }`;
  406.  
  407. //播放器css
  408. css += `
  409. #player_container {
  410. top: 0;
  411. z-index: 1200;
  412. }`;
  413.  
  414. //进度条css
  415. css += `
  416. #nprogress .bar {
  417. background: #d04d74;
  418. z-index: 1200;
  419. }
  420. #nprogress .peg {
  421. box-shadow: 0 0 10px #d04d74,0 0 5px #d04d74;
  422. }`;
  423.  
  424. //旧有右边
  425. css += `
  426. .right_slide {
  427. height: calc(100% - 64px);
  428. margin-top: 64px;
  429. }`;
  430. //header菜单按钮
  431. css += `
  432. @media (min-width: 1280px) {
  433. .biliplus-ui-bar-menu {
  434. display: none;
  435. }
  436. }
  437. `;
  438.  
  439. //侧边菜单遮罩
  440. css += `
  441. .biliplus-ui-mask {
  442. opacity: 0;
  443. transition: 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  444. top: 0;
  445. left: 0;
  446. width: 100%;
  447. height: 100%;
  448. z-index: -1;
  449. position: fixed;
  450. will-change: opacity;
  451. background-color: rgba(0, 0, 0, 0.5);
  452. -webkit-tap-highlight-color: transparent;
  453. pointer-events: none;
  454. }
  455. .biliplus-ui-mask-on {
  456. pointer-events: all;
  457. opacity: 1;
  458. }`;
  459.  
  460. //创建header
  461. var body = $('body');
  462. var header = $('<header/>');
  463. header.addClass('biliplus-ui-header');
  464. header.prependTo(body);
  465.  
  466. var header_bar = $('<div/>');
  467. header_bar.addClass('biliplus-ui-bar');
  468. header_bar.appendTo(header);
  469.  
  470. var header_button_menu = $('<div/>');
  471. header_button_menu.addClass('biliplus-ui-bar-item');
  472. header_button_menu.addClass('biliplus-ui-bar-menu');
  473. header_button_menu.appendTo(header_bar);
  474.  
  475. var header_button_menu_button = $('<a\>');
  476. header_button_menu_button.addClass('biliplus-ui-button');
  477. header_button_menu_button.attr('tabindex', '0');
  478. header_button_menu_button.appendTo(header_button_menu);
  479.  
  480. var header_button_menu_button_icon = $('<span\>');
  481. header_button_menu_button_icon.addClass('biliplus-ui-button-icon');
  482. header_button_menu_button_icon.appendTo(header_button_menu_button);
  483.  
  484. header_button_menu_button_icon.append('<svg class="biliplus-ui-svg" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path></svg>');
  485.  
  486. var header_bar_white = $('<div/>');
  487. header_bar_white.addClass('biliplus-ui-whitespace');
  488. header_bar_white.appendTo(header_bar);
  489.  
  490. var header_title = $('<h2\>');
  491. header_title.addClass('biliplus-ui-font');
  492. header_title.addClass('biliplus-ui-title');
  493. header_bar_white.before(header_title);
  494.  
  495. $('#userbar').removeClass('userbar');
  496.  
  497.  
  498. $('.userbarcontent').hide();
  499.  
  500. var header_bar_avatar = $('<div/>');
  501. header_bar_avatar.addClass('biliplus-ui-bar-item');
  502. header_bar_avatar.appendTo(header_bar);
  503.  
  504. var header_bar_avatar_button = $('<a\>');
  505. header_bar_avatar_button.addClass('biliplus-ui-button');
  506. header_bar_avatar_button.attr('tabindex', '0');
  507. header_bar_avatar_button.appendTo(header_bar_avatar);
  508.  
  509. var header_bar_avatar_button_icon = $('<span\>');
  510. header_bar_avatar_button_icon.addClass('biliplus-ui-button-icon');
  511. header_bar_avatar_button_icon.appendTo(header_bar_avatar_button);
  512.  
  513. var old_userbar_content = $('.userbarcontent');
  514. var avatar = old_userbar_content.find('span img').attr('src');
  515. var name = old_userbar_content.find('span b').text();
  516.  
  517. if (avatar === 'https://static.hdslb.com/images/member/noface.gif') name = '点击头像登陆';
  518.  
  519. var header_bar_avatar_button_icon_img = $('<img>');
  520. header_bar_avatar_button_icon_img.addClass('biliplus-ui-avatar');
  521. header_bar_avatar_button_icon_img.addClass('biliplus-ui-element');
  522. header_bar_avatar_button_icon_img.attr('src', avatar);
  523. header_bar_avatar_button_icon_img.appendTo(header_bar_avatar_button_icon);
  524.  
  525. //个人信息侧边栏
  526. var sidebar = $('<div\>');
  527. sidebar.addClass('biliplus-ui-sidebar-bar');
  528. header.after(sidebar);
  529.  
  530. var sidebar_user = $('<div\>');
  531. sidebar_user.addClass('biliplus-ui-sidebar');
  532. sidebar_user.addClass('biliplus-ui-sidebar-user');
  533. sidebar_user.appendTo(sidebar);
  534.  
  535. var sidebar_user_content = $('<div\>');
  536. sidebar_user_content.addClass('biliplus-ui-sidebar-user-content');
  537. sidebar_user_content.appendTo(sidebar_user);
  538.  
  539. var sidebar_user_name = $('<h2\>');
  540. sidebar_user_name.addClass('biliplus-ui-font');
  541. sidebar_user_name.addClass('biliplus-ui-sidebar-user-name');
  542. sidebar_user_name.text(name);
  543. sidebar_user_name.appendTo(sidebar_user_content);
  544.  
  545. var old_user_sidebar = $('.usersidebar');
  546. var space = old_user_sidebar.find('a:eq(0)').attr('href');
  547. var dynamic = old_user_sidebar.find('a:eq(1)').attr('href').replace('dynamic', 'dynamic_new');
  548. var bangumi = old_user_sidebar.find('a:eq(2)').attr('href');
  549. var favouite = old_user_sidebar.find('a:eq(3)').attr('href');
  550. var history = old_user_sidebar.find('a:eq(4)').attr('href');
  551. var attention = old_user_sidebar.find('a:eq(5)').attr('href');
  552.  
  553. var sidebar_user_ul = $('<ul\>');
  554. sidebar_user_ul.addClass('biliplus-ui-sidebar-ul');
  555. sidebar_user_ul.appendTo(sidebar_user_content);
  556.  
  557. var sidebar_user_ul_li = $('<li\>');
  558. sidebar_user_ul_li.addClass('biliplus-ui-sidebar-li');
  559.  
  560. var sidebar_user_ul_li_a = $('<a\>');
  561. sidebar_user_ul_li_a.addClass('biliplus-ui-sidebar-li-a');
  562. sidebar_user_ul_li_a.appendTo(sidebar_user_ul_li);
  563.  
  564. sidebar_user_ul.append(sidebar_user_ul_li.clone().find('a').attr('href', dynamic).text('动态').parent('li'));
  565. sidebar_user_ul.append(sidebar_user_ul_li.clone().find('a').attr('href', bangumi).text('追番').parent('li'));
  566. sidebar_user_ul.append(sidebar_user_ul_li.clone().find('a').attr('href', favouite).text('收藏夹').parent('li'));
  567. sidebar_user_ul.append(sidebar_user_ul_li.clone().find('a').attr('href', history).text('历史记录').parent('li'));
  568. sidebar_user_ul.append(sidebar_user_ul_li.clone().find('a').attr('href', attention).text('我的关注').parent('li'));
  569.  
  570. var mask = $('<div/>');
  571. mask.addClass('biliplus-ui-mask');
  572. mask.appendTo(sidebar);
  573.  
  574. //侧边栏
  575. var sidebar_bar_menu = sidebar.clone();
  576. sidebar_bar_menu.addClass('biliplus-ui-sidebar-bar-menu');
  577. sidebar.after(sidebar_bar_menu);
  578.  
  579. var sidebar_menu = $('<div\>');
  580. sidebar_menu.addClass('biliplus-ui-sidebar-menu');
  581. sidebar_menu.addClass('biliplus-ui-sidebar');
  582. sidebar_menu.appendTo(sidebar_bar_menu);
  583.  
  584. $('.sidebar').hide();
  585.  
  586. var sidebar_menu_title = $('<a\>');
  587. sidebar_menu_title.addClass('biliplus-ui-sidebar-menu-title');
  588. sidebar_menu_title.attr('href', 'https://www.biliplus.com/');
  589. sidebar_menu_title.appendTo(sidebar_menu);
  590.  
  591. var sidebar_menu_title_content = $('<div\>');
  592. sidebar_menu_title_content.addClass('biliplus-ui-sidebar-menu-title-content');
  593. sidebar_menu_title_content.addClass('biliplus-ui-font');
  594. sidebar_menu_title_content.appendTo(sidebar_menu_title);
  595.  
  596. var sidebar_menu_title_div = $('<div\>');
  597. sidebar_menu_title_div.css('padding', '5px 0');
  598. sidebar_menu_title_div.appendTo(sidebar_menu_title_content);
  599.  
  600. var sidebar_menu_title_div_span = $('<span\>');
  601. sidebar_menu_title_div_span.addClass('biliplus-ui-sidebar-menu-title-main');
  602. sidebar_menu_title_div_span.text('BiliPlus');
  603. sidebar_menu_title_div_span.appendTo(sidebar_menu_title_div);
  604.  
  605. var sidebar_menu_ul = $('<ul\>');
  606. sidebar_menu_ul.addClass('biliplus-ui-sidebar-ul');
  607. sidebar_menu_ul.appendTo(sidebar_menu);
  608.  
  609. var old_sidebar = $('#sidebar');
  610. var bangumilist = old_sidebar.find('a:eq(1)').attr('href');
  611. var about = old_sidebar.find('a:eq(2)').attr('href');
  612. var lyb = old_sidebar.find('a:eq(3)').attr('href');
  613. var tuocao = old_sidebar.find('a:eq(4)').attr('href');
  614.  
  615. var sidebar_menu_ul_li = $('<li\>');
  616. sidebar_menu_ul_li.addClass('biliplus-ui-sidebar-li');
  617.  
  618. var sidebar_menu_ul_li_a = $('<a\>');
  619. sidebar_menu_ul_li_a.addClass('biliplus-ui-sidebar-li-a');
  620. sidebar_menu_ul_li_a.appendTo(sidebar_menu_ul_li);
  621.  
  622. sidebar_menu_ul.append(sidebar_menu_ul_li.clone().find('a').attr('href', bangumilist).text('番剧更新').parent('li'));
  623. sidebar_menu_ul.append(sidebar_menu_ul_li.clone().find('a').attr('href', lyb).text('留言板').parent('li'));
  624. sidebar_menu_ul.append(sidebar_menu_ul_li.clone().find('a').attr('href', tuocao).text('TuCaoHelper').parent('li'));
  625. sidebar_menu_ul.append(sidebar_menu_ul_li.clone().find('a').attr('href', about).text('关于').parent('li'));
  626.  
  627. let mask_menu = mask.clone();
  628. mask_menu.appendTo(sidebar_bar_menu);
  629.  
  630. //版权信息
  631. var sidebar_menu_foot = $('<div\>');
  632. sidebar_menu_foot.addClass('biliplus-ui-sidebar-menu-foot');
  633. sidebar_menu_foot.appendTo(sidebar_menu);
  634.  
  635. $('.sidebar-about').each(function () {
  636. sidebar_menu_foot.append($(this));
  637. });
  638.  
  639. var sidebar_menu_foot_material = $('<div\>');
  640. sidebar_menu_foot_material.addClass('sidebar-about');
  641. sidebar_menu_foot_material.addClass('biliplus-ui-about');
  642. sidebar_menu_foot_material.appendTo(sidebar_menu_foot);
  643.  
  644. var sidebar_menu_foot_material_a = $('<a\>');
  645. sidebar_menu_foot_material_a.attr('target', '_blank');
  646. sidebar_menu_foot_material_a.attr('href', 'https://material-ui-next.com/');
  647. sidebar_menu_foot_material_a.text('Material-UI');
  648. sidebar_menu_foot_material_a.appendTo(sidebar_menu_foot_material);
  649.  
  650. //主体
  651. var content = $('<div\>');
  652. content.addClass('biliplus-ui-content');
  653. sidebar_bar_menu.after(content);
  654. $('.biliplus-ui-content').append($('#content'));
  655. $('#content').removeClass('content');
  656.  
  657.  
  658. //搜索
  659. var header_bar_search = $('<div\>');
  660. header_bar_search.addClass('biliplus-ui-bar-item');
  661. header_bar_avatar.before(header_bar_search);
  662.  
  663. var header_bar_search_button = $('<a\>');
  664. header_bar_search_button.attr('tabindex', '0');
  665. header_bar_search_button.addClass('biliplus-ui-button');
  666. header_bar_search_button.appendTo(header_bar_search);
  667.  
  668. var header_bar_search_button_span = $('<span\>');
  669. header_bar_search_button_span.addClass('biliplus-ui-button-icon');
  670. header_bar_search_button_span.appendTo(header_bar_search_button);
  671.  
  672. header_bar_search_button_span.append('<svg class="biliplus-ui-svg" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg>');
  673.  
  674. var header_bar_search_input = $('<input\>');
  675. header_bar_search_input.addClass('biliplus-ui-search-input');
  676. header_bar_search_input.addClass('biliplus-ui-font');
  677. header_bar_avatar.before(header_bar_search_input);
  678.  
  679. //头像动画
  680. $('.biliplus-ui-button').click(function () {
  681. if ($(this).find('.biliplus-ui-button-icon .biliplus-ui-avatar').length > 0
  682. & !$(this).hasClass('.biliplus-ui-avatar-button-big')) {
  683. header_bar_avatar_button_icon_img.animate({
  684. top: '3.8em',
  685. width: '8em',
  686. height: '8em'
  687. }, 300);
  688. $(this).animate({
  689. top: '3.8em',
  690. width: '8em',
  691. height: '8em'
  692. }, 300, function () {
  693. $(this).addClass('biliplus-ui-avatar-button-big');
  694. });
  695. header_bar_avatar_button_icon_img.addClass('biliplus-ui-avatar-big');
  696. sidebar_user.addClass('biliplus-ui-sidebar-user-on');
  697. mask.addClass('biliplus-ui-mask-on');
  698. }
  699. });
  700.  
  701. //水波效果
  702. window.rippler = $.ripple('.biliplus-ui-button:not(.biliplus-ui-avatar-button-big)', {
  703. multi: false
  704. });
  705. window.rippler = $.ripple('.biliplus-ui-sidebar-li', {
  706. multi: true
  707. });
  708.  
  709. //侧边缩回
  710. body.on('click', '.biliplus-ui-mask-on', function () {
  711. avatarToSmall();
  712. $(this).removeClass('biliplus-ui-mask-on');
  713. $('.biliplus-ui-sidebar-menu-on').removeClass('biliplus-ui-sidebar-menu-on');
  714. });
  715.  
  716. //LOGO
  717. body.append('<div class="logo">Bili<sup>+</sup></div>');
  718.  
  719. //ajax
  720.  
  721. $('.biliplus-ui-sidebar-li-a').click(function () {
  722. var href = $(this).attr('href');
  723. NProgress.start();
  724. event.preventDefault();
  725. $.get(href, function (data) {
  726. var html = $("<code></code>").append(data);
  727. var result = html.find('#content').removeClass('content');
  728. if (href.indexOf('tucao') !== -1)
  729. window.open(href);
  730. else {
  731. content.html(result);
  732. location.href = href;
  733. }
  734. avatarToSmall();
  735. NProgress.done();
  736. });
  737. });
  738.  
  739. $('.biliplus-ui-sidebar-menu-title').click(function () {
  740. var href = $(this).attr('href');
  741. NProgress.start();
  742. event.preventDefault();
  743. $.get(href, function (data) {
  744. let html = $("<code></code>").append(data);
  745. let result = html.find('#content').removeClass('content');
  746. content.html(result);
  747. let state = {
  748. title: document.title,
  749. url: window.location.href
  750. };
  751. window.history.pushState(state, document.title, window.location.href);
  752. state = {
  753. title: document.title,
  754. url: href
  755. };
  756. window.history.replaceState(state, document.title, href);
  757. reloadIndex();
  758. NProgress.done();
  759. });
  760. });
  761.  
  762.  
  763. body.on('click', '.biliplus-ui-avatar-button-big', function () {
  764. NProgress.start();
  765. header_bar_avatar_button_icon_img.animate({
  766. top: '0',
  767. width: '1.5em',
  768. height: '1.5em',
  769. }, 300);
  770. header_bar_avatar_button.animate({
  771. top: '0',
  772. width: '48px',
  773. height: '48px',
  774. }, {
  775. duration: 300,
  776. done: function () {
  777. NProgress.done();
  778. header_bar_avatar_button.removeClass('biliplus-ui-avatar-button-big');
  779. window.location.href = space;
  780. },
  781. start: function () {
  782. sidebar_user.removeClass('biliplus-ui-sidebar-user-on');
  783. header_bar_avatar_button_icon_img.removeClass('biliplus-ui-avatar-big');
  784. }
  785. });
  786. event.preventDefault();
  787. $.get(space, function (data) {
  788. var html = $("<code></code>").append(data);
  789. var result = html.find('#content').removeClass('content');
  790. content.html(result);
  791. });
  792. });
  793.  
  794. //搜索
  795. header_bar_search.click(function () {
  796. header_bar_search_input.focus();
  797. });
  798. header_bar_search_input.blur(function () {
  799. header_bar_search_input.val('');
  800. });
  801. header_bar_search_input.keypress(function (e) {
  802. var ev = document.all ? window.event : e;
  803. if (ev.keyCode === 13) {
  804. search();
  805. }
  806. });
  807. //菜单按钮
  808. header_button_menu.click(function () {
  809. sidebar_menu.addClass('biliplus-ui-sidebar-menu-on');
  810. mask_menu.addClass('biliplus-ui-mask-on');
  811. }
  812. );
  813.  
  814. //单独处理页面
  815. body.ajaxComplete(function () {
  816.  
  817. });
  818.  
  819. if (window.location.href !== 'https://www.biliplus.com/')
  820. if ($('#header').length > 0) {
  821. header_title.text($('#header:first').text());
  822. $('#header:first').remove();
  823. } else if ($('.title').length > 0) {
  824. header_title.text($('.title:first').text());
  825. $('.title:first').remove();
  826. } else if ($('.frametitle').length > 0) {
  827. header_title.text($('.frametitle:first').text());
  828. $('.frametitle:first').remove();
  829. }
  830.  
  831. //卡片
  832. css += `
  833. .biliplus-ui-card {
  834. border-radius: 2px;
  835. min-width: 275px;
  836. width: 100%;
  837. box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12);
  838. background-color: #fff;
  839. display: flex;
  840. margin: 16px;
  841. }
  842. .biliplus-ui-card a {
  843. transition: 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  844. color: rgba(0, 0, 0, 0.87);
  845. width: max-content;
  846. overflow: hidden;
  847. max-width: 100%;
  848. white-space: nowrap;
  849. text-overflow: ellipsis;
  850. }
  851. .biliplus-ui-card a:hover {
  852. color: #0092f8;
  853. }
  854. .biliplus-ui-card-foot {
  855. height: 52px;
  856. display: flex;
  857. padding: 16px 24px;
  858. box-sizing: border-box;
  859. align-items: center;
  860. border-top: 1px solid rgba(160,160,160,0.2);
  861. }
  862. .biliplus-ui-card-foot a {
  863. color: #0092f8;
  864. padding: 7px 8px;
  865. min-width: 64px;
  866. font-size: 0.8125rem;
  867. min-height: 32px;
  868. transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
  869. font-weight: 500;
  870. border-radius: 2px;
  871. text-transform: uppercase;
  872. cursor: pointer;
  873. }
  874. .biliplus-ui-card-foot a:hover {
  875. background-color: rgba(0, 146, 248, 0.12);
  876. }
  877. .biliplus-ui-card-loading {
  878. position: absolute;
  879. width: 100%;
  880. height: 180px;
  881. min-width: 275px;
  882. }`;
  883. //视频卡片
  884. css += `
  885. .biliplus-ui-card-video {
  886. max-height: 193px;
  887. }
  888. .biliplus-ui-card-video-img {
  889. width: 344px;
  890. height: 193px;
  891. background-size: cover;
  892. background-repeat: no-repeat;
  893. background-position: center;
  894. cursor: pointer;
  895. }
  896. .biliplus-ui-card-video-content {
  897. display: flex;
  898. flex-direction: column;
  899. width: calc(100% - 344px);
  900. }
  901. .biliplus-ui-card-video-content-text {
  902. flex: 1 0 auto;
  903. padding: 24px;
  904. }
  905. .biliplus-ui-card-video-content-title {
  906. font-size: 1.5rem;
  907. line-height: 1.35417em;
  908. margin-bottom: 16px;
  909. }
  910. .biliplus-ui-card-video-content-context {
  911. font-size: 1rem;
  912. line-height: 1.5em;
  913. }
  914. .biliplus-ui-card-video-content-description {
  915. color: rgba(0, 0, 0, 0.54) !important;
  916. font-size: 0.875rem;
  917. }
  918. .biliplus-ui-card-video-content-margin {
  919. display: block;
  920. }`;
  921.  
  922. //搜索卡片
  923. css += `
  924. .biliplus-ui-card-search {
  925. display: block;
  926. }
  927. .biliplus-ui-card-search-content {
  928. padding: 16px;
  929. }`;
  930.  
  931. //主页
  932. if (window.location.href === 'https://www.biliplus.com/'
  933. || window.location.href === 'https://www.biliplus.com/index.php') {
  934. reloadIndex();
  935. }
  936. //Paper
  937. css += `
  938. .biliplus-ui-paper {
  939. margin-top: 24px;
  940. padding-top: 16px;
  941. padding-left: 16px;
  942. padding-right: 16px;
  943. padding-bottom: 16px;
  944. box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
  945. border-radius: 2px;
  946. background-color: #fff;
  947. }
  948. @media (min-width:600px) {
  949. .biliplus-ui-paper {
  950. padding-left: 24px;
  951. padding-right: 24px;
  952. }
  953. }
  954. `;
  955. if (window.location.href === 'https://www.biliplus.com/?bangumi') {
  956. }
  957. if (window.location.href.indexOf('https://www.biliplus.com/lyb/') !== -1) {
  958. css += `
  959. .biliplus-ui-comment {
  960. word-break: break-word;
  961. font-size: 1rem;
  962. }
  963. .hoveritem {
  964. height: 24px;
  965. color: rgba(0, 0, 0, 0.54);
  966. font-size: 0.875rem;
  967. margin-top: 4px;
  968. line-height: 24px;
  969. }
  970. .biliplus-ui-comment-reply {
  971. padding: 8px 0 0 8px;
  972. border-top: 1px solid rgba(0, 0, 0, 0.12);
  973. }`;
  974.  
  975. $('br').remove();
  976. let comment = $('<div>');
  977. comment.addClass('biliplus-ui-paper');
  978. comment.addClass('biliplus-ui-font');
  979. comment.addClass('biliplus-ui-comment');
  980.  
  981. $('#content>.ly').each(function () {
  982. let comment_clone = comment.clone();
  983.  
  984. $('.footer_video').before(comment_clone.append($(this).html()));
  985. $('.hoveritem').removeAttr('style');
  986. let i = 0;
  987. comment_clone.children('div').each(function () {
  988. if (i > 0)
  989. $(this).addClass('biliplus-ui-comment-reply');
  990. i++;
  991. });
  992.  
  993. $(this).remove();
  994. });
  995. }
  996. if (window.location.href === 'https://www.biliplus.com/?about') {
  997. }
  998. if (window.location.href === 'https://www.biliplus.com/me/dynamic_new/') {
  999. header_title.text("动态");
  1000. }
  1001. if (window.location.href === 'https://www.biliplus.com/me/bangumi/') {
  1002.  
  1003. }
  1004. if (window.location.href === 'https://www.biliplus.com/me/favourite/') {
  1005.  
  1006. }
  1007. if (window.location.href === 'https://www.biliplus.com/me/history/') {
  1008.  
  1009. }
  1010. if (window.location.href === 'https://www.biliplus.com/me/attention/') {
  1011.  
  1012. }
  1013. $(window).load(function () {
  1014. if (window.location.href.indexOf('video/av') !== -1) {
  1015. header_title.append($('.videotitle').html());
  1016. }
  1017. });
  1018. $("head").append('<link href="https://cdn.bootcss.com/Ripple.js/1.2.1/ripple.min.css" rel="stylesheet">');
  1019. $("head").append('<link href="https://cdn.bootcss.com/nprogress/0.2.0/nprogress.min.css" rel="stylesheet">');
  1020.  
  1021. var style=$("<style/>");
  1022. style.text(css).appendTo($("head"));
  1023. }
  1024.  
  1025. function reloadIndex() {
  1026. header_title.text('BiliPlus,( ゜- ゜)つロ 乾杯~');
  1027. $('.indextitle').remove();
  1028.  
  1029. var random_video_card = $('<div\>');
  1030. random_video_card.addClass('biliplus-ui-card');
  1031. random_video_card.addClass('biliplus-ui-card-video');
  1032. random_video_card.prependTo($('#content'));
  1033. $('.borderbox').remove();
  1034.  
  1035. var random_video_card_img = $('<div\>');
  1036. random_video_card_img.addClass('biliplus-ui-card-video-img');
  1037. random_video_card_img.appendTo(random_video_card);
  1038.  
  1039. let random_video_card_content = $('<div\>');
  1040. random_video_card_content.addClass('biliplus-ui-card-video-content');
  1041. random_video_card_content.appendTo(random_video_card);
  1042.  
  1043. let random_video_card_content_text = $('<div\>');
  1044. random_video_card_content_text.addClass('biliplus-ui-card-video-content-text');
  1045. random_video_card_content_text.appendTo(random_video_card_content);
  1046.  
  1047. var random_video_card_content_text_title = $('<a\>');
  1048. random_video_card_content_text_title.attr('target', '_blank');
  1049. random_video_card_content_text_title.addClass('biliplus-ui-card-video-content-title');
  1050. random_video_card_content_text_title.addClass('biliplus-ui-card-video-content-margin');
  1051. random_video_card_content_text_title.addClass('biliplus-ui-font');
  1052. random_video_card_content_text_title.appendTo(random_video_card_content_text);
  1053.  
  1054. var random_video_card_content_text_up = $('<a\>');
  1055. random_video_card_content_text_up.attr('target', '_blank');
  1056. random_video_card_content_text_up.addClass('biliplus-ui-card-video-content-context');
  1057. random_video_card_content_text_up.addClass('biliplus-ui-card-video-content-margin');
  1058. random_video_card_content_text_up.addClass('biliplus-ui-font');
  1059. random_video_card_content_text_up.appendTo(random_video_card_content_text);
  1060.  
  1061. var random_video_card_content_text_av = $('<a\>');
  1062. random_video_card_content_text_av.attr('target', '_blank');
  1063. random_video_card_content_text_av.addClass('biliplus-ui-card-video-content-context');
  1064. random_video_card_content_text_av.addClass('biliplus-ui-card-video-content-description');
  1065. random_video_card_content_text_av.addClass('biliplus-ui-font');
  1066. random_video_card_content_text_av.addClass('biliplus-ui-card-video-content-margin');
  1067. random_video_card_content_text_av.appendTo(random_video_card_content_text);
  1068.  
  1069. var random_video_card_foot = $('<div\>');
  1070. random_video_card_foot.addClass('biliplus-ui-card-foot');
  1071. random_video_card_foot.appendTo(random_video_card_content);
  1072.  
  1073.  
  1074. var random_video_card_loading = $('<div\>');
  1075. random_video_card_loading.addClass('biliplus-ui-circle-loading');
  1076. random_video_card_loading.addClass('biliplus-ui-center');
  1077. random_video_card_loading.append('<svg class="biliplus-ui-circle-loading-svg" viewBox="0 0 50 50"><circle class="biliplus-ui-circle-loading-svg-circle" cx="25" cy="25" r="20" fill="none" stroke-width="3.6"></circle></svg>');
  1078.  
  1079. //var random_video_card_loading_clone = random_video_card_loading.clone();
  1080. //random_video_card_loading_clone.appendTo(random_video_card);
  1081.  
  1082. let random_video_card_foot_reload = $('<a\>');
  1083. random_video_card_foot_reload.text('Reload');
  1084. random_video_card_foot_reload.appendTo(random_video_card_foot);
  1085. random_video_card_foot.hide();
  1086.  
  1087. window.rippler = $.ripple('.biliplus-ui-card-foot a', {
  1088. multi: false
  1089. });
  1090.  
  1091. random_video_card_foot_reload.click(function () {
  1092. NProgress.start();
  1093. //random_video_card_loading_clone = random_video_card_loading.clone();
  1094. //random_video_card_loading_clone.appendTo(random_video_card);
  1095. //random_video_card_foot.hide();
  1096. getjson('/api/random?ajax', randomVideo);
  1097.  
  1098. });
  1099. NProgress.start();
  1100. getjson('/api/random?ajax', randomVideo);
  1101. random_video_card_img.click(function () {
  1102. window.open(random_video_card_img.attr('href'));
  1103. });
  1104.  
  1105. let card_search = $('<div\>');
  1106. card_search.addClass('biliplus-ui-card');
  1107. card_search.addClass('biliplus-ui-card-search');
  1108. random_video_card.after(card_search);
  1109.  
  1110. let card_search_content = $('<div\>');
  1111. card_search_content.addClass('biliplus-ui-card-search-content');
  1112. card_search_content.appendTo(card_search);
  1113.  
  1114. $('#normal_container').appendTo(card_search_content);
  1115. $('#advance_container').appendTo(card_search_content);
  1116.  
  1117. function randomVideo(json) {
  1118. random_video_card_content_text_av.attr('href', '/video/av' + json.aid + '/');
  1119. random_video_card_content_text_av.text('AV' + json.aid);
  1120. random_video_card_content_text_title.attr('href', '/video/av' + json.aid + '/');
  1121. random_video_card_content_text_title.text(json.title);
  1122. random_video_card_content_text_up.attr('href', '/space/' + json.mid + '/');
  1123. random_video_card_content_text_up.text('UP: ' + json.up);
  1124. random_video_card_foot.css('display', 'flex');
  1125. random_video_card_img.attr('href', '/video/av' + json.aid + '/');
  1126. random_video_card_img.attr('style', 'background-image: url("' + json.pic.replace(/https?:/, 'https:') + '")');
  1127. //random_video_card_loading_clone.remove();
  1128. NProgress.done();
  1129. }
  1130. }
  1131.  
  1132. function avatarToSmall() {
  1133. if ($('.biliplus-ui-avatar-button-big').length > 0) {
  1134. header_bar_avatar_button_icon_img.animate({
  1135. top: '0',
  1136. width: '1.5em',
  1137. height: '1.5em',
  1138. }, 300);
  1139. header_bar_avatar_button.animate({
  1140. top: '0',
  1141. width: '48px',
  1142. height: '48px',
  1143. }, {
  1144. duration: 300,
  1145. done: function () {
  1146. header_bar_avatar_button.removeClass('biliplus-ui-avatar-button-big');
  1147. },
  1148. start: function () {
  1149. sidebar_user.removeClass('biliplus-ui-sidebar-user-on');
  1150. header_bar_avatar_button_icon_img.removeClass('biliplus-ui-avatar-big');
  1151. }
  1152. });
  1153. header_bar_avatar_button_icon_img.removeClass('biliplus-ui-avatar-big');
  1154. sidebar_user.removeClass('biliplus-ui-sidebar-user-on');
  1155. mask.removeClass('biliplus-ui-mask-on');
  1156. }
  1157. }
  1158.  
  1159. function search() {
  1160. var input = header_bar_search_input.val();
  1161. if (input === "") {
  1162. return false;
  1163. } else {
  1164. if (input.replace(/\d+/, "") === "") {
  1165. //jumptext('检测到您输入了一段数字:“'+input+'”,请问这个数字是什么呢?<br><a href="/video/av'+input+'/" title="查看该AV号详情"><div class="url_go">这是一个AV号</div></a> <a href="/space/'+input+'/" title="查看该ID的UP主的投稿"><div class="url_go">这是一个UP主的ID</div></a> <a href="/api/do.php?act=search&o=default&n=20&p=1&word='+input+'" title="前往搜索"><div class="url_go">我只是想搜索这个数字而已</div></a>');
  1166. var con = confirm("前往投稿 av" + input + " ?");
  1167. if (con) {
  1168. location.href = '/video/av' + input + '/';
  1169. return;
  1170. }
  1171. con = confirm('前往MID ' + input + ' 的UP空间?');
  1172. if (con) {
  1173. location.href = "/space/" + input + '/';
  1174. } else {
  1175. location.href = "/api/do.php?source=bilibili&act=search&o=default&n=20&p=1&word=" + encodeURIComponent(input);
  1176. }
  1177. } else if (input.search(/av\d+/i) !== -1) {
  1178. var av = input.match(/av(\d+)/i)[1];
  1179. location.href = "/video/av" + av + "/";
  1180. } else if (input.search(/space\.bilibili\.com\/\d+/i) !== -1) {
  1181. var mid = input.match(/space\.bilibili\.com\/(\d+)/i)[1];
  1182. location.href = "/space/" + mid + '/';
  1183. } else {
  1184. location.href = "/api/do.php?source=bilibili&act=search&o=default&n=20&p=1&word=" + encodeURIComponent(input);
  1185. }
  1186. }
  1187. }
  1188. });
  1189. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址