您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Enable image pasting and ImgBB upload integration in bossdeer
// ==UserScript== // @name bossdeer upload // @namespace http://violentmonkey.github.io // @version 1.1 // @description Enable image pasting and ImgBB upload integration in bossdeer // @author NotFenixio // @match https://deer.meltland.dev/* // @grant GM_addStyle // @license MIT // ==/UserScript== (function () { "use strict"; async function uploadToImgBB(apiKey, imageData) { const formData = new FormData(); formData.append("key", apiKey); formData.append("image", imageData); const response = await fetch("https://api.imgbb.com/1/upload", { method: "POST", body: formData, }); const result = await response.json(); if (result.success) { return result.data.url; } else { console.error("ImgBB upload failed:", result); throw new Error("Failed to upload image"); } } const mainConfig = document.getElementById("main-config"); if (mainConfig) { const inputHTML = ` <br> <input id="imgbb-api-key" placeholder="ImgBB API Key..." type="text" maxlength="656"> <button id="save-api-key">Save API Key</button> `; const h2Element = Array.from(document.querySelectorAll('h2')).find(h2 => h2.textContent.trim() === 'Misc'); if (h2Element) { h2Element.insertAdjacentHTML('beforebegin', inputHTML); } document.getElementById("save-api-key").onclick = () => { const apiKey = document.getElementById("imgbb-api-key").value; if (apiKey) { localStorage.setItem("imgbbApiKey", apiKey); alert("ImgBB API key saved"); } }; } const msMsg = document.querySelector("#ms-msg"); if (msMsg) { msMsg.addEventListener("paste", async (event) => { const apiKey = localStorage.getItem("imgbbApiKey"); if (!apiKey) { alert("Please set your ImgBB API key in the Settings section"); return; } const items = (event.clipboardData || event.originalEvent.clipboardData) .items; for (const item of items) { if (item.kind === "file") { const file = item.getAsFile(); const reader = new FileReader(); reader.onload = async (e) => { try { document.querySelector("#error-text").innerText = "Uploading..."; if ( document .querySelector("#error-bar") .classList.contains("hidden") ) { document.querySelector("#error-bar").classList.toggle("hidden"); } const imageUrl = await uploadToImgBB( apiKey, e.target.result.split(",")[1], ); attachments.push(imageUrl); updateDetailsMsg(); document.querySelector("#error-text").innerText = "Uploaded!"; setTimeout(() => { document.querySelector("#error-bar").classList.toggle("hidden"); }, 1000); } catch (error) { console.error("Error uploading image:", error); document.querySelector("#error-text").innerText = "Error uploading! " + error; document.querySelector("#error-bar").classList.toggle("hidden"); } }; reader.readAsDataURL(file); } } }); } })();