neoCmoaRipper

GrimRipper Cmoa upgraded

  1. // ==UserScript==
  2. // @name neoCmoaRipper
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description GrimRipper Cmoa upgraded
  6. // @author XXXXXXXXXIII, weebuwy
  7. // @match https://www.cmoa.jp/bib/speedreader/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=cmoa.jp
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. const width = 1125; // USER: image size
  13. const height = 1600;
  14.  
  15. let downloaded = [];
  16.  
  17. (function() {
  18. 'use strict';
  19. var page = -1;
  20.  
  21. setInterval(() => {
  22. try {
  23. if (page < 1) page = getPageNum();
  24. page = getPageNum();
  25. for (let i = 1; i <= page; i++) {
  26. if (downloaded.includes(i)) continue;
  27. setContainer(i);
  28. let imgs = getImgs(i);
  29. saveImage(imgs, i);
  30. downloaded.push(i);
  31. }
  32. } catch (e) {
  33. console.log(e.message);
  34. }
  35. }, 100);
  36. })();
  37.  
  38. function saveImage(imgs, page) {
  39. console.log(`saved page ${page}`);
  40. let canvas = document.createElement('canvas');
  41. let ctx = canvas.getContext('2d');
  42. canvas.width = 1125;
  43. canvas.height = 1600;
  44. ctx.drawImage(imgs[0], 0, 0);
  45. ctx.drawImage(imgs[1], 0, canvas.height * 0.3325);
  46. ctx.drawImage(imgs[2], 0, canvas.height * 0.665 );
  47. canvas.toBlob((blob) => {
  48. var image = URL.createObjectURL(blob);
  49. var a = document.createElement('a');
  50. a.href = image;
  51. document.body.appendChild(a);
  52. a.download = page + ".png";
  53. a.click(); // USER: Disable ask where to store file location setting for usability
  54. document.body.removeChild(a);
  55. }, 'image/png', 1);
  56. }
  57.  
  58. function setContainer(page) {
  59. var container = document.getElementById('content-p' + page);
  60. container.style.width = width + 'px';
  61. container.style.height = height + 'px';
  62. }
  63.  
  64. function getImgs(page) {
  65. return document.getElementById('content-p' + page).getElementsByTagName('IMG');
  66. }
  67.  
  68. function getPageNum() {
  69. var pageNum = document.getElementById('menu_slidercaption').innerHTML;
  70. return Number(pageNum.replace(/\/.*/i, ""));
  71. }
  72.