Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/f67dd3d05ee867cbecf7c2df4793b8f8.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript== // @name osu! QuickPaste Image to BBCode // @namespace https://osu.ppy.sh/users/24332734 // @version 1.0 // @description Automatically pastes BBCode image links in any textarea on osu! website when you use Ctrl V and an image is in the clipboard. // @author Behrauder // @match https://osu.ppy.sh/* // @license MIT // @grant none // @downloadURL https://update.greasyfork.icu/scripts/476399/osu%21%20QuickPaste%20Image%20to%20BBCode.user.js // @updateURL https://update.greasyfork.icu/scripts/476399/osu%21%20QuickPaste%20Image%20to%20BBCode.meta.js // ==/UserScript== (function() { 'use strict'; const API_KEY = 'YOUR_API_KEY_HERE'; // Put your imgbb API key here // Listen to the "paste" event on the document document.addEventListener('paste', async function(e) { const clipboardData = e.clipboardData || window.clipboardData; const items = clipboardData.items; for (const item of items) { if (item.type.startsWith('image')) { const blob = item.getAsFile(); const formData = new FormData(); formData.append('image', blob); formData.append('key', API_KEY); formData.append('expiration', 0); // Never expire // Upload the image const response = await fetch('https://api.imgbb.com/1/upload', { method: 'POST', body: formData }); const data = await response.json(); if (data.success) { const bbcodeFull = `[img]${data.data.url}[/img]`; insertTextAtCursor(bbcodeFull); } else { console.error('Upload failed:', data.status_txt); } break; // Exit the loop after the first image item } } }); // Function to insert text at the cursor position in a textarea function insertTextAtCursor(text) { const textarea = document.activeElement; if (textarea.tagName === 'TEXTAREA') { const start = textarea.selectionStart; const end = textarea.selectionEnd; const value = textarea.value; textarea.value = value.substring(0, start) + text + value.substring(end); textarea.selectionStart = textarea.selectionEnd = start + text.length; } } })();