dm5 Load all pages

try to take over the world!

  1. // ==UserScript==
  2. // @name dm5 Load all pages
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.5
  5. // @description try to take over the world!
  6. // @author You
  7. // @match http://www.dm5.com/*
  8. // @match https://www.dm5.com/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. function loadAllPages() {
  16. if (typeof $ !== 'undefined' && $('a[href$=p2\\/]').size()) {
  17. var lastPage = 0;
  18. var lastUrl;
  19. for (var i = 2; i < 999; i++) {
  20. var url = $('a[href$=p' + i + '\\/]').attr('href');
  21. if (typeof url !== 'undefined') {
  22. lastPage = i;
  23. lastUrl = url;
  24. }
  25. }
  26. var baseUrl = lastUrl.substr(0, lastUrl.indexOf('-'));
  27. $('<div style="position:fixed;left:50%;bottom:20px;transform:tralsate(-50%,0);padding:5px 10px;background:white;color:black;box-shadow:2px 2px 10px;opacity:0.8;font-size:12px;" id="_status"></div>')
  28. .appendTo(document.body);
  29. window._total = 0;
  30. for (var i = 2; i <= lastPage; i++) {
  31. var url = baseUrl + '-p' + i + '/';
  32. console.log('create iframe ' + url);
  33. $('<iframe style="position:absolute;left:0;top:0;width:0;height:0;">')
  34. .attr('src', url + '?_pb=1')
  35. .attr('name', '_p' + i)
  36. .appendTo(document.body);
  37. window._total++;
  38. }
  39. $('#_status').text('Loading');
  40. } else {
  41. window.setTimeout(loadAllPages, 1000);
  42. }
  43. }
  44.  
  45. function postbackToParent() {
  46. if (typeof $ !== 'undefined') {
  47. var img = $('#showimage > #cp_img > img');
  48. if (img.size() && img.prop('complete')) {
  49. var src = img.prop('src');
  50. var page = /p(\d+)/.exec(location.href)[1];
  51. console.log('get image ' + page + '=' + src);
  52. for (var i = 2; i <= page; i++) {
  53. img = $(window.parent.document).find('#showimage > div[page=' + i + ']');
  54. if (!img.size()) {
  55. console.log('create image ' + i);
  56. img = $('<div style="margin:10px 0;text-align:center;">').attr('page', i).text('Page ' + i).appendTo($(window.parent.document).find('#showimage'));
  57. }
  58. }
  59. $(window.parent.document).find('#showimage > div[page=' + page + ']')
  60. .empty()
  61. .append($('<img>').attr('src', src));
  62. var total = window.parent._total;
  63. var loading = $(window.parent.document).find('iframe[name^=_p]').size() - 1;
  64. if (loading <= 0) {
  65. $(window.parent.document).find('#_status').hide();
  66. } else {
  67. $(window.parent.document).find('#_status').text((total - loading) + ' / ' + total);
  68. }
  69. $(window.parent.document).find('iframe[name=_p' + page + ']').remove();
  70. return;
  71. }
  72. }
  73. window.setTimeout(postbackToParent, 100);
  74. }
  75.  
  76. if (typeof DM5_CID !== 'undefined') {
  77. if (location.href.indexOf('_pb=1') < 0) {
  78. window.setTimeout(loadAllPages, 1000);
  79. } else {
  80. window.setTimeout(postbackToParent, 1000);
  81. }
  82. }
  83. })();