manatoki viewer & downloader

manatoki viewer & downloader & adblock & more!

当前为 2020-11-04 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name manatoki viewer & downloader
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description manatoki viewer & downloader & adblock & more!
  6. // @author You
  7. // @include http*://manatoki*
  8. // @grant GM_download
  9. // ==/UserScript==
  10. // adblock
  11. $('.hd_pops').remove()
  12. $('.board-tail-banner').remove()
  13. $('.basic-banner.row.row-10').remove()
  14. let linklist = localStorage.getItem('clickedlist'); // get clicked element
  15. // append download button
  16. var sendBtn = document.createElement("button");
  17. sendBtn.className = "btn btn-warning";
  18. sendBtn.style.zIndex = "3";
  19. sendBtn.style.position = "fixed";
  20. sendBtn.style.bottom = "0";
  21. sendBtn.style.right = "0";
  22. sendBtn.innerText = "download";
  23. let clicked, clickedlist = JSON.parse(localStorage.getItem("clickedlist"));
  24. if (clickedlist == null) {
  25. clickedlist = []
  26. console.log("welcome")
  27. }
  28. // check whether user is at viewpage
  29. if (!$("[class ='view-content1']")[0]) {
  30. document.getElementById("main-banner-view").appendChild(sendBtn);
  31. let m = clickedlist.some(function (item) {
  32. return item[0] === document.URL
  33. });
  34. if (m == false) {
  35. var today = new Date();
  36. var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
  37. var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
  38. var dateTime = date + ' ' + time;
  39. clickedlist.push([document.URL, dateTime])
  40. window.localStorage.setItem("clickedlist", JSON.stringify(clickedlist))
  41. console.log(clickedlist)
  42. }
  43. else {
  44. console.log("you've visited")
  45. }
  46. }
  47.  
  48. if ($("[class ='view-content1']")[0]){
  49. for (let i=0; i < clickedlist.length; i ++) {
  50. // console.log(typeof clickedlist[i])
  51. if ($('a[href*="' + clickedlist[i][0] + '"]')[0]){
  52. $('a[href*="' + clickedlist[i][0] + '"]')[0].style.color = "blue"
  53. $('a[href*="' + clickedlist[i][0] + '"]')[0].text += "("+clickedlist[i][1]+")";
  54. }
  55. }
  56. console.log(clickedlist)
  57. // let linkBtn = $("[class='item-subject']")
  58. // // $(document).on('click', 'a', false);
  59. // linkBtn.click(function (e) {
  60. // console.log(e.target.getAttribute("href"))
  61. // clicked = e.target.getAttribute("href")
  62. // if (clickedlist.includes(clicked) == false){
  63. // clickedlist.push(clicked)
  64. // }
  65. // // clicked.style.color = "blue";
  66. // console.log(clickedlist)
  67. // window.localStorage.setItem("clickedlist", JSON.stringify(clickedlist))
  68. // });
  69. }
  70. var regex = /\d+/g, mnum = (parent.window.location.pathname != "/") ? parent.window.location.pathname.match(regex)[0] : 0;
  71. console.log(mnum)
  72. // get page title and manga number
  73. sendBtn.onclick = function() {
  74. // let canvas = $("img[src*='/data/file/comic'][src*="+mnum+"]").not("img[src*='thumb']")
  75. var title = document.getElementsByClassName('page-desc')[0].innerHTML
  76. let canvas = $("img[src*='/data/']").not("img[src*='thumb']"), loadimg = $('img[src$="/img/loading-image.gif"]'), countedword = {}
  77. // check if loading is completed
  78. if (loadimg.length <= 1) {
  79. // get every image which contains '/data/' and classify with parentNode inside the object
  80. for (let i = 0; i < canvas.length; i++) {
  81. var word = canvas[i].parentNode
  82. if (countedword[word.className] == undefined) {
  83. countedword[word.className] = 1;
  84. } else {
  85. countedword[word.className] += 1;
  86. }
  87. }
  88. //get the manga image from the object
  89. let a = 0, viewdiv = Object.keys(countedword)[1]
  90. console.log(viewdiv);
  91. console.log(countedword)
  92. // download every manga images every 0.3 sec
  93. for (let i = 0; i < canvas.length; i++) {
  94. (function(x) {
  95. setTimeout(function() {
  96. let word = canvas[i].parentNode
  97. if (word.className == viewdiv) {
  98. a += 1
  99. var blob = canvas[i].currentSrc
  100. let arg = {
  101. url: blob,
  102. name: title + a
  103. };
  104. GM_download(arg)
  105. }
  106. }, 300 * x);
  107. })(i);
  108. }
  109. } else {
  110. alert("wait for loading...")
  111. }
  112. };