bangumi table list

在条目列表点击表格图标可以表格形式显示列表

  1. // ==UserScript==
  2. // @name bangumi table list
  3. // @namespace https://github.com/bangumi/scripts/liaune
  4. // @version 0.2
  5. // @description 在条目列表点击表格图标可以表格形式显示列表
  6. // @author Liaune
  7. // @include /^https?://(bangumi\.tv|bgm\.tv|chii\.in)/(.+?/list|.+?/tag|.+?/browser|subject_search|index)(/|\?).+$/
  8. // @grant GM_addStyle
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. GM_addStyle(`
  13. table.gridtable {
  14. font-family: verdana,arial,sans-serif;
  15. font-size:11px;
  16. color:#333333;
  17. border-width: 1px;
  18. border-color: #a9c6c9;
  19. border-collapse: collapse;
  20. }
  21. table.gridtable th {
  22. background-color: #9adaf2;
  23. border-width: 1px;
  24. padding: 8px;
  25. border-style: solid;
  26. border-color: #a9c6c9;
  27. }
  28. table.gridtable td {
  29. border-width: 1px;
  30. padding: 8px;
  31. border-style: solid;
  32. border-color: #a9c6c9;
  33. }
  34. `);
  35. const showBtn = document.createElement('li');
  36. const table = document.createElement('a');
  37. table.addEventListener('click', ShowTable);
  38. table.style.backgroundImage="url(//lain.bgm.tv/pic/photo/l/17/7f/133075_9C090.jpg)";
  39. table.style.backgroundSize= "contain";
  40. table.href='javascript:;';
  41. table.textContent = 'Table';
  42. document.querySelector('#browserTypeSelector').insertBefore(showBtn, document.querySelectorAll('#browserTypeSelector li')[0]);
  43. showBtn.appendChild(table);
  44.  
  45. const You=document.querySelectorAll('#headerNeue2 .idBadgerNeue a.avatar')[0].href.split('/user/')[1];
  46. const User =window.location.href.match(/\/list\/(\S+)\//)? window.location.href.match(/\/list\/(\S+)\//)[1]: null;
  47.  
  48. let itemsList = document.querySelectorAll('#browserItemList li.item');
  49. let tablehide=0;
  50.  
  51. function ShowTable(){
  52. $('#columnSubjectBrowserA').css('width','auto');
  53. if(tablehide){
  54. $('table.gridtable').remove();
  55. $('#browserItemList').css('display','block');}
  56. if(!tablehide){
  57. $('#browserItemList').css('display','none');
  58. itemsList = document.querySelectorAll('#browserItemList li.item');
  59. let arr=[];
  60. for(i=0;i<itemsList.length;i++) arr[i]=itemsList[i];
  61. if(arr[0].style.order){
  62. arr.sort(function(li1,li2){
  63. let n1=parseInt(li1.style.order);
  64. let n2=parseInt(li2.style.order);
  65. return n1-n2;
  66. });
  67. for(i=0; i<arr.length; i++)
  68. {
  69. $('#browserItemList').append(arr[i]);
  70. }
  71. }
  72. itemsList = document.querySelectorAll('#browserItemList li.item');
  73.  
  74. let tb=document.createElement('table');
  75. tb.className="gridtable";
  76.  
  77. if(window.location.href.match(/\/(list|index)\//))
  78. tb.innerHTML = `<tbody><tr><th>ID</th><th>中文名</th><th>原名</th><th>话数</th><th>发售日</th><th>排名</th><th>评分</th><th>人数</th><th>打分</th><th>评论</th></tr></tbody>`;
  79. else
  80. tb.innerHTML = `<tbody><tr><th>ID</th><th>中文名</th><th>原名</th><th>话数</th><th>发售日</th><th>排名</th><th>评分</th><th>人数</th><th>打分</th></tr></tbody>`;
  81. document.querySelector('#browserItemList').parentNode.insertBefore(tb,document.querySelector('#browserItemList'));
  82.  
  83. itemsList.forEach( (elem, index) => {
  84. let href = elem.querySelector('a.subjectCover').href;
  85. let ID = href.split('/subject/')[1];
  86. let title = elem.querySelectorAll('.inner h3 a')[0].innerHTML;
  87. let name = elem.querySelectorAll('.inner h3 small.grey')[0] ? elem.querySelectorAll('.inner h3 small.grey')[0].innerHTML : title;
  88. let date = elem.querySelectorAll('.inner .info')[0].textContent;
  89. let ep = date.match(/(\d+)话/) ? date.match(/(\d+)话/)[1] :null;
  90. if(ep) localStorage.setItem(ID+'Eps',ep);
  91. ep = ep? ep : (localStorage.getItem(ID+'Eps') ? localStorage.getItem(ID+'Eps') : '');
  92. if(ep=='null') ep='';
  93. function ParseDate(Datestring){
  94. let yy=Datestring.match(/(\d{4})/)? Datestring.match(/(\d{4})/)[1].toString():'';
  95. let year = Datestring.match(/(\d{4})(年|-)(\d{1,2})(月|-)(\d{1,2})/)? Datestring.match(/(\d{4})(年|-)(\d{1,2})(月|-)(\d{1,2})/)[1].toString(): yy;
  96. let month = Datestring.match(/(\d{4})(年|-)(\d{1,2})(月|-)(\d{1,2})/)? Datestring.match(/(\d{4})(年|-)(\d{1,2})(月|-)(\d{1,2})/)[3].toString(): '';
  97. let day = Datestring.match(/(\d{4})(年|-)(\d{1,2})(月|-)(\d{1,2})/)?Datestring.match(/(\d{4})(年|-)(\d{1,2})(月|-)(\d{1,2})/)[5].toString(): '';
  98. let time = year? (month? (year+'/'+month+'/'+day):year):'';
  99. return time;
  100. }
  101. date = ParseDate(date);
  102. let rankNum = localStorage.getItem(ID+'Rank');
  103. rankNum = rankNum ? rankNum : '';
  104. let rate = elem.querySelector('.inner .fade');
  105. let Point = localStorage.getItem(ID+'Point');
  106. Point = Point ? Point : '';
  107. let Votes = localStorage.getItem(ID+'Votes');
  108. Votes = Votes ? Votes :'';
  109. let User_rate=User ? elem.querySelectorAll('.inner .collectInfo span')[0].className: null;
  110. let User_Point=User_rate ? (User_rate.match(/sstars(\d+)/)?User_rate.match(/sstars(\d+)/)[1]:''):'';
  111. let My_Point=localStorage.getItem(You+'Point'+ID) ? localStorage.getItem(You+'Point'+ID) :'';
  112. if(My_Point=='null') My_Point='';
  113. let comment_box=elem.querySelector('#comment_box .item .text');
  114. let comment = comment_box ? comment_box.innerHTML :'';
  115. let tr=document.createElement('tr');
  116. if(window.location.href.match(/\/(list|index)\//)){
  117. if(User) tr.innerHTML=`<td>${ID}</td><td>${title}</td><td>${name}</td><td>${ep}</td><td>${date}</td><td>${rankNum}</td><td>${Point}</td><td>${Votes}</td><td>${User_Point}</td><td>${comment}</td>`;
  118. else tr.innerHTML=`<td>${ID}</td><td>${title}</td><td>${name}</td><td>${ep}</td><td>${date}</td><td>${rankNum}</td><td>${Point}</td><td>${Votes}</td><td>${My_Point}</td><td>${comment}</td>`;
  119. }
  120. else
  121. tr.innerHTML=`<td>${ID}</td><td>${title}</td><td>${name}</td><td>${ep}</td><td>${date}</td><td>${rankNum}</td><td>${Point}</td><td>${Votes}</td><td>${My_Point}</td>`;
  122. tb.appendChild(tr);
  123. });}
  124. tablehide=!tablehide;
  125.  
  126. }
  127.  
  128.  
  129. })();

QingJ © 2025

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