Pixiv 增强

屏蔽广告, 查看热门图片, 按收藏数搜索, 下载gif、多图, 显示画师id、自动加载评论。github:https://github.com/Ahaochan/Tampermonkey,欢迎star和fork。

当前为 2017-10-31 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Pixiv 增强
  3. // @namespace https://github.com/Ahaochan/Tampermonkey
  4. // @version 0.0.3
  5. // @description 屏蔽广告, 查看热门图片, 按收藏数搜索, 下载gif、多图, 显示画师id、自动加载评论。github:https://github.com/Ahaochan/Tampermonkey,欢迎star和fork。
  6. // @author Ahaochan
  7. // @match *://*.pixiv.net*
  8. // @match *://*.pixiv.net/**
  9. // @grant GM_xmlhttpRequest
  10. // @require https://code.jquery.com/jquery-2.2.4.min.js
  11. // @require https://cdn.bootcss.com/jszip/3.1.4/jszip.min.js
  12. // @require https://cdn.bootcss.com/FileSaver.js/1.3.2/FileSaver.min.js
  13. // ==/UserScript==
  14.  
  15. (function ($) {
  16. 'use strict';
  17.  
  18. // 删除广告、查看热门图片
  19. (function () {
  20. // 删除广告
  21. $('._premium-lead-tag-search-bar').hide();
  22. // 查看热门图片
  23. $('.popular-introduction-overlay').hide();
  24. })();
  25.  
  26. // 按收藏数搜索
  27. (function () {
  28. $('.navigation-menu-right').append(
  29. '<div class="menu-group">' +
  30. ' <a class="menu-item js-click-trackable-later">' +
  31. ' <img class="_howto-icon" src="https://source.pixiv.net/www/images/knowhow/icon/howto-brush.svg?20171004">' +
  32. ' <span class="label">收藏人数:</span>' +
  33. ' <select id="ahao_favourite_num_select">' +
  34. ' <option value=""></option>' +
  35. ' <option value="10000users入り">10000users入り</option>' +
  36. ' <option value="5000users入り" > 5000users入り</option>' +
  37. ' <option value="1000users入り" > 1000users入り</option>' +
  38. ' <option value="500users入り" > 500users入り</option>' +
  39. ' <option value="300users入り" > 300users入り</option>' +
  40. ' <option value="100users入り" > 100users入り</option>' +
  41. ' <option value="50users入り" > 50users入り</option>' +
  42. ' </select>' +
  43. ' </a>' +
  44. '</div>');
  45.  
  46. // 如果已经有搜索字符串就在改变选项时直接搜索
  47. $('#ahao_favourite_num_select').on('change', function () {
  48. var $text = $('#suggest-input');
  49. if (!!$text.val()) {
  50. $('#suggest-container').submit();
  51. }
  52. });
  53.  
  54. // 在提交搜索前处理搜索关键字
  55. $('#suggest-container').submit(function () {
  56. var $text = $('#suggest-input');
  57. var $favourite = $('#ahao_favourite_num_select');
  58. // 去除旧的搜索选项
  59. $text.val($text.val().replace(/\d*users入り/, ''));
  60. // 去除多余空格
  61. while($text.val().indexOf(' ')>-1){
  62. $text.val($text.val().replace(' ', ' '));
  63. }
  64. // 添加新的搜索选项
  65. $text.val($text.val() + ' ' + $favourite.val());
  66. });
  67. })();
  68.  
  69. // 下载图片
  70. (function () {
  71. if (!(location.href.indexOf('member_illust.php') !== -1)) {
  72. return;
  73. }
  74. // 获取参数
  75. var param = $('.bookmark_modal_thumbnail')
  76. .attr('data-src')
  77. .match(/img-master\/img([\s\S]*?)_/)
  78. [1];
  79.  
  80. // 下载动图
  81. (function () {
  82. var hasGIF = !!$('div ._ugoku-illust-player-container').length;
  83. if (hasGIF) {
  84. var url = 'https://i.pximg.net/img-zip-ugoira/img' + param + '_ugoira600x600.zip';
  85. // 添加下载按钮
  86. $('div .bookmark-container').append(
  87. '<a href="' + url + '" class="_bookmark-toggle-button add-bookmark">' +
  88. ' <span class="bookmark-icon"></span><span class="description">下载动图</span>' +
  89. '</a>');
  90. }
  91. })();
  92.  
  93. // 下载多图
  94. (function () {
  95. var hasMore = !!$('a.read-more').length;
  96. if (hasMore) {
  97. var downloaded = 0; // 下载完成数量
  98. var num = $('a.read-more').text().match(/\d+/); // 下载目标数量
  99.  
  100. // 添加下载按钮
  101. var $a = $('<a class="_bookmark-toggle-button add-bookmark">' +
  102. ' <span class="bookmark-icon"></span><span class="description">下载中</span>' +
  103. '</a>')
  104. .on('click', function () {
  105. if (downloaded < num) {
  106. return;
  107. }
  108. zip.generateAsync({type: "blob", base64: true}).then(function (content) {
  109. saveAs(content, "pic.zip"); // see FileSaver.js'
  110. });
  111. });
  112. $('div .bookmark-container').append($a);
  113.  
  114.  
  115. var zip = new JSZip();
  116. for (var i = 0; i < num; i++) {
  117. (function (index) {
  118. var url = 'https://i.pximg.net/img-master/img' + param + '_p' + index + '_master1200.jpg';
  119. GM_xmlhttpRequest({
  120. method: 'GET',
  121. headers: {referer: 'https://www.pixiv.net/'},
  122. overrideMimeType: 'text/plain; charset=x-user-defined',
  123. url: url,
  124. onload: function (xhr) {
  125. var r = xhr.responseText,
  126. data = new Uint8Array(r.length),
  127. i = 0;
  128. while (i < r.length) {
  129. data[i] = r.charCodeAt(i);
  130. i++;
  131. }
  132.  
  133. var blob = new Blob([data], {type: 'image/jpeg'});
  134.  
  135. downloaded++;
  136. zip.file('pic_' + index + '.jpg', blob, {binary: true});
  137.  
  138. if (downloaded == num) {
  139. $a.find('.description').text('下载完成');
  140. } else {
  141. $a.find('.description').text('下载: ' + downloaded + '/' + num);
  142. }
  143. }
  144. });
  145. })(i);
  146. }
  147. }
  148. })();
  149. })();
  150.  
  151. // 显示画师id
  152. (function () {
  153. if (!(location.href.indexOf('member_illust.php') !== -1 ||
  154. location.href.indexOf('member.php') !== -1 )) {
  155. return;
  156. }
  157. $('a.user-name').after('<span>ID: ' + pixiv.context.userId + '</span>');
  158. })();
  159.  
  160. // 自动加载评论
  161. (function () {
  162. if (!(location.href.indexOf('member_illust.php') !== -1)) {
  163. return;
  164. }
  165.  
  166. // 1秒加载一次评论
  167. var timer = setInterval(function () {
  168. var clickEvent = document.createEvent ('MouseEvents');
  169. clickEvent.initEvent ('click', true, true);
  170.  
  171. var more = document.getElementsByClassName('more-comment')[0];
  172. if(!!more){
  173. more.dispatchEvent (clickEvent);
  174. } else {
  175. clearInterval(timer);
  176. }
  177. }, 1000);
  178. })();
  179. })(jQuery);