V2EX Image paster

Automatically uploads pasted images to Imgur on V2EX input boxes

目前为 2023-06-28 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name V2EX Image paster
  3. // @namespace v2ex-image-paster
  4. // @version 1.0
  5. // @description Automatically uploads pasted images to Imgur on V2EX input boxes
  6. // @match https://www.v2ex.com/*
  7. // @match https://*
  8. // @grant GM_xmlhttpRequest
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // 监听粘贴事件
  16. document.addEventListener('paste', function(event) {
  17. var items = (event.clipboardData || event.originalEvent.clipboardData).items;
  18. for (var i = 0; i < items.length; i++) {
  19. var item = items[i];
  20. if (item.type.indexOf('image') !== -1) {
  21. // 获取粘贴的图片文件
  22. var file = item.getAsFile();
  23.  
  24. // 上传图片到 Imgur
  25. uploadToImgur(file);
  26.  
  27. }
  28. }
  29. });
  30.  
  31. // 上传图片到 Imgur
  32. function uploadToImgur(file) {
  33. console.log('upload...')
  34. var formData = new FormData();
  35. formData.append('image', file);
  36.  
  37. GM_xmlhttpRequest({
  38. method: 'POST',
  39. url: 'https://api.imgur.com/3/image',
  40. headers: {
  41. Authorization: 'Client-ID 1c49486ec8e9565'
  42. },
  43. data: formData,
  44. onload: function(response) {
  45. console.log(response)
  46. var json = JSON.parse(response.responseText);
  47. console.log(json)
  48. if (json.success) {
  49. pasteTextAtCursor(`\n${json.data.link}`)
  50. }
  51. }
  52. });
  53. };
  54. function pasteTextAtCursor(text) {
  55. var textarea = document.activeElement;
  56. var startPos = textarea.selectionStart;
  57. var endPos = textarea.selectionEnd;
  58.  
  59. textarea.value = textarea.value.substring(0, startPos) + text + textarea.value.substring(endPos);
  60. textarea.setSelectionRange(startPos + text.length, startPos + text.length);
  61. }
  62. })();