Xueqiu Cleaner

Let xueqiu clean

  1. // ==UserScript==
  2. // @name Xueqiu Cleaner
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description Let xueqiu clean
  6. // @author Raymond Jiang (weixin: hellolaojiang)
  7. // @match https://xueqiu.com/
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. window.xueqiu_yh = window.xueqiu_yh || {
  12. //sample data, you can modify it
  13. holds: [{code: 'SH512880', holdCount: 10000, cost: 0.976}],
  14. init: function() {
  15. $('nav.nav,div.home__stock-index__box,div.home__stock-index,div.user__col--lf,div.home__col--rt,div.home-timeline,footer.footer,div.snbim-mvheader,div.snbim-mainview-wrap').remove();
  16. $('div.user__col--middle').css('width','1000px');
  17. $('table.optional_stocks > tr > th:last').find('a').click(()=>{
  18. setTimeout(()=> {
  19. this._initRows();
  20. this._initCss();
  21. },500);
  22. });
  23. this._initHeaders();
  24. this._initRows();
  25. this._initCss();
  26.  
  27. },
  28. _initHeaders: function() {
  29. let headers = $('table.optional_stocks > tr > th')
  30. let tail = $(headers[headers.length - 1])
  31. $('<th><span class="thead">持有数</span></th>').insertBefore(tail);
  32. $('<th><span class="thead">成本</span></th>').insertBefore(tail);
  33. $('<th><span class="thead">盈利</span></th>').insertBefore(tail);
  34. },
  35. _initRows: function() {
  36. let rows = $('table.optional_stocks > tbody > tr')
  37. for(let i=0;i<rows.length;i++) {
  38. let tds = $(rows[i]).find('td');
  39. let tdTail = $(tds[tds.length -1]);
  40. let code = $(tds[0]).find('a.code > span').text();
  41. let hold = undefined;
  42. for(let j=0;j<this.holds.length;j++) {
  43. if(code === this.holds[j].code) {
  44. hold = this.holds[j];
  45. break;
  46. }
  47. }
  48. if(hold) {
  49. let price = parseFloat($(tds[1]).find('span').text())
  50. $(`<td>${hold.holdCount}</td>`).insertBefore(tdTail);
  51. $(`<td>${hold.cost}</td>`).insertBefore(tdTail);
  52. let gain = ((price - hold.cost)*hold.holdCount).toFixed(2);
  53. if(gain > 0) {
  54. $(`<td class="gain">${gain}</td>`).insertBefore(tdTail);
  55. } else if (gain < 0) {
  56. $(`<td class="slip">${gain}</td>`).insertBefore(tdTail);
  57. } else {
  58. $(`<td>${gain}</td>`).insertBefore(tdTail);
  59. }
  60. } else {
  61. $('<td></td>').insertBefore(tdTail);
  62. $('<td></td>').insertBefore(tdTail);
  63. $('<td></td>').insertBefore(tdTail);
  64. }
  65. }
  66. },
  67. _initCss: function() {
  68. $('.optional__tb.optional_stocks td, .optional__tb.optional_stocks th').css('font-family','Fira Code').css('font-weight',400);
  69.  
  70. }
  71.  
  72. };
  73. $( document ).ready(function() {
  74. setTimeout(function() {
  75. xueqiu_yh.init();
  76. },600);
  77.  
  78. });
  79.