Bangumi 条目评分排名历史记录

在浏览条目列表时记录条目的评分排名信息,在Rank上显示

  1. // ==UserScript==
  2. // @name Bangumi 条目评分排名历史记录
  3. // @namespace https://github.com/bangumi/scripts/liaune
  4. // @version 0.4
  5. // @description 在浏览条目列表时记录条目的评分排名信息,在Rank上显示
  6. // @author Liaune
  7. // @include /^https?://(bangumi\.tv|bgm\.tv|chii\.in)/(.+?/tag|.+?/browser|subject_search)(/|\?).+/
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12.  
  13. const You=document.querySelectorAll('#headerNeue2 .idBadgerNeue a.avatar')[0].href.split('/user/')[1];
  14. let itemsList = document.querySelectorAll('#browserItemList li.item');
  15. itemsList.forEach( (elem, index) => {
  16. let href = elem.querySelector('a.subjectCover').href;
  17. let ID = href.split('/subject/')[1];
  18. let rank = elem.querySelector('.inner span.rank');
  19. if(rank && localStorage.getItem(ID+'Records')) rank.setAttribute('title', localStorage.getItem(ID+'Records'));
  20. });
  21. function process(){
  22. let itemsList = document.querySelectorAll('#browserItemList li.item');
  23.  
  24. itemsList.forEach( (elem, index) => {
  25. let href = elem.querySelector('a.subjectCover').href;
  26. let ID = href.split('/subject/')[1];
  27. let rank = elem.querySelector('.inner span.rank');
  28. let rankNum = rank ? rank.innerHTML.match(/\d{1,5}/) : null;
  29. if(rankNum) localStorage.setItem(ID+'Rank',rankNum);
  30.  
  31. let rate = elem.querySelector('.inner .fade');
  32. let Point = rate ? parseFloat(rate.innerHTML) : null;
  33. if(Point) localStorage.setItem(ID+'Point',Point);
  34. let vote=elem.querySelector('.inner .tip_j');
  35. let re = new RegExp("\\d+", "");
  36. let Votes = vote ? re.exec(vote.innerHTML) : null;
  37. if(Votes) localStorage.setItem(ID+'Votes',Votes);
  38. //加入历史记录
  39. let date = new Date();
  40. let time = date.getFullYear()+"-" + (date.getMonth()+1) + "-" + date.getDate();
  41. let lastime = localStorage.getItem(ID+'Lastime');
  42. let Record = time + ' Rank #' + rankNum + ' 评分:'+ Point + ' '+ Votes + ' 人评分';
  43. let History = localStorage.getItem(ID+'Records');
  44. //if(History.split('\n').length>10)
  45. if(History && time != lastime)
  46. History = History + '\n'+ Record;
  47. if(History)
  48. History = Trim(History.split('\n'));
  49. console.log(History);
  50.  
  51. if(Votes && History){
  52. localStorage.setItem(ID+'Lastime',time);
  53. localStorage.setItem(ID+'Records',History);}
  54.  
  55. if(rank) rank.setAttribute('title', localStorage.getItem(ID+'Records'));
  56. });
  57. }
  58.  
  59. function Trim(Records){
  60. let N=3;
  61. let n = Records.length;
  62. let Select = [],count=1;
  63. for(i=0;i<n;i++){
  64. if(!Records[i]) Records.splice(i,1);
  65. else if(Records[i]=='null') Records.splice(i,1);
  66. }
  67. n = Records.length;
  68. Select[0] = Records[0];
  69. let Start = new Date(Records[0].match(/\d{4}-\d{1,2}-\d{1,2}/)[0]);
  70. //let End = new Date(Records[n-1].match(/\d{4}-\d{1,2}-\d{1,2}/)[0]);
  71. //let Day = parseFloat((End.getTime() - Start.getTime())/(24 * 60 * 60 * 1000* N));
  72. for(i=1;i<n;i++){
  73. let Time = new Date(Records[i].match(/\d{4}-\d{1,2}-\d{1,2}/)[0]);
  74. let Day1 = parseInt((Time.getTime() - Start.getTime())/(24 * 60 * 60 * 1000));
  75. if(Day1>=N) {
  76. Select[count] = Records[i];
  77. Start = Time;
  78. count+=1;}
  79. }
  80. return Select.join('\n');
  81. }
  82.  
  83. //记录数据
  84. const showBtn4 = document.createElement('a');
  85. showBtn4.addEventListener('click', process);
  86. showBtn4.className = 'chiiBtn';
  87. showBtn4.href='javascript:;';
  88. showBtn4.textContent = '记录';
  89. document.querySelector('#browserTools').append(showBtn4);
  90.  
  91. })();

QingJ © 2025

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