Extract images for bcy.net

Adds a button that get all attached images as original size to every post.

  1. // ==UserScript==
  2. // @name Extract images for bcy.net
  3. // @name:zh 半次元原图收割机
  4. // @namespace https://github.com/cmheia/extract-images-for-bcy
  5. // @description Adds a button that get all attached images as original size to every post.
  6. // @include http://bcy.net/*
  7. // @author cmheia
  8. // @version 0.0.1
  9. // @icon http://bcy.net/Public/Image/favicon.ico
  10. // @grant GM_setClipboard
  11. // @license MPL
  12. // ==/UserScript==
  13. (function () {
  14. // 去重
  15. var doUnique = function (arr) {
  16. var result = [], hash = {};
  17. for (var i = 0, elem; (elem = arr[i]) !== undefined; i++) {
  18. if (!hash[elem]) {
  19. result.push(elem);
  20. hash[elem] = true;
  21. }
  22. }
  23. return result;
  24. };
  25.  
  26. var extracterImages = function () {
  27. var doMatch = function (str) {
  28. var regex = new RegExp(/((http|https):\/\/)+(\w+\.)+(\w+)[\w\/\.\-\%\=]*(jpg|jpeg|gif|png|webp)/, "gi");
  29. var strSource = str;
  30. var result = doUnique(strSource.match(regex));
  31. if (null === result || 0 === result.length) {
  32. return 0;
  33. }
  34. GM_setClipboard(result.join("\r\n"));
  35. return result.length;
  36. };
  37.  
  38. var matched = doMatch(document.getElementsByClassName('post__content')[0].innerHTML);
  39. var message = document.getElementById("extracted");
  40. if (0 === matched) {
  41. message.innerHTML = "然而并不能收割 (╯#-_-)╯~~~~~~~~~~~~~~~~~╧═╧";
  42. } else if (1 === matched) {
  43. message.innerHTML = "搞到这张图啦 (⺻▽⺻ )";
  44. } else if (1 < matched) {
  45. message.innerHTML = "搞到 " + matched + " 张图 (⺻▽⺻ )";
  46. }
  47. };
  48.  
  49. // 添加按钮
  50. var addButton = function () {
  51. var button = document.createElement('div');
  52. button.innerHTML="<a href='javascript:;' style='margin:0 8px;'>收割 ๑乛◡乛๑ (●´∀`●)</a><span id='extracted'></span>";
  53. button.addEventListener("click", extracterImages);
  54. document.addEventListener("keydown", function (event) {
  55. // F9 = 120
  56. // F10 = 121
  57. if (120 === event.keyCode || 121 === event.keyCode) {
  58. extracterImages();
  59. }
  60. }, true);
  61. document.getElementsByClassName('post__info')[0].appendChild(button);
  62. };
  63.  
  64. // 运行
  65. addButton();
  66. }) ();