Blomaga Image Paste

ブロマガにクリップボードから画像アップロード

目前為 2016-09-05 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Blomaga Image Paste
  3. // @namespace https://github.com/segabito/
  4. // @version 0.0.1
  5. // @description ブロマガにクリップボードから画像アップロード
  6. // @author segabito macmoto
  7. // @match http://ch.nicovideo.jp/tool/blomaga/edit?article_id=*
  8. // @grant none
  9. // @license public domain
  10. // @noframes
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. const monkey = function() {
  15. const $ = window.jQuery;
  16. const Blomaga = window.Blomaga;
  17. const Editor = Blomaga.Editor;
  18.  
  19. const post = function(file) {
  20. const transfer = new Editor.Uploader.FileReadTransfer();
  21. const progressBar = new Editor.Uploader.ProgressBar();
  22. progressBar.setPercent(0);
  23. transfer.progress_bar = progressBar;
  24. progressBar.show();
  25.  
  26. transfer.onProgress = (per) => {
  27. progressBar.setPercent(per);
  28. };
  29.  
  30. transfer.onLoad = (resp) => {
  31. console.info('success: ', resp);
  32. progressBar.setPercent(100);
  33. progressBar.showSuccess();
  34. window.setTimeout(() => { progressBar.hide(); }, 1000);
  35.  
  36. Editor.SideBar.Image.addList(
  37. resp.src,
  38. resp.image_id,
  39. resp.width,
  40. resp.height,
  41. resp.delete_key,
  42. resp.delete_key_time
  43. );
  44. Editor.insertUploadImage(
  45. resp.image_id,
  46. resp.src,
  47. resp.width,
  48. resp.height
  49. );
  50. };
  51.  
  52. transfer.onError = (json) => {
  53. progressBar.showError(json);
  54. };
  55.  
  56. transfer.upload(file);
  57. };
  58.  
  59. const onPaste = function(e) {
  60. let file;
  61. const items =
  62. (e.clipboardData || e.originalEvent.clipboardData).items;
  63. console.info('clipboard items', e, JSON.stringify(items));
  64.  
  65. for (let i = 0, len = items.length; i < len; i++) {
  66. let item = items[i];
  67. if (item.type.match(/^image/i)) {
  68. file = item.getAsFile();
  69. break;
  70. }
  71. }
  72. if (!file) { return; }
  73. post(file);
  74. };
  75.  
  76. const initialize = function() {
  77. window.setTimeout(() => {
  78. $('iframe#wysiwyg_editor_ifr')
  79. .contents().find('html').on('paste', onPaste);
  80. }, 1000);
  81. };
  82. initialize();
  83. };
  84.  
  85.  
  86. const script = document.createElement('script');
  87. script.setAttribute('type', 'text/javascript');
  88. script.setAttribute('charset', 'UTF-8');
  89. script.appendChild(document.createTextNode('(' + monkey + ')()'));
  90. document.body.appendChild(script);
  91. })();