您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在nodeseek.com的论坛中自动上传图片到PicGo并插入Markdown链接
// ==UserScript== // @license MIT // @name NodeSeek-PicGo图床 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 在nodeseek.com的论坛中自动上传图片到PicGo并插入Markdown链接 // @author https://www.nodeseek.com/space/1257# // @match https://www.nodeseek.com/* // @grant GM_xmlhttpRequest // @grant GM_setClipboard // ==/UserScript== (function() { 'use strict'; document.addEventListener('paste', (event) => handlePaste(event)); async function handlePaste(event) { const items = (event.clipboardData || event.originalEvent.clipboardData).items; let imageFiles = []; for (let item of items) { if (item.kind === 'file' && item.type.indexOf('image/') !== -1) { let blob = item.getAsFile(); imageFiles.push(blob); } } if (imageFiles.length > 0) { event.preventDefault(); for (let file of imageFiles) { await uploadToPicGo(file); } } } function uploadToPicGo(file) { return new Promise((resolve, reject) => { let reader = new FileReader(); reader.readAsDataURL(file); // 读取文件为 base64 reader.onload = () => { let base64Data = reader.result.split(',')[1]; // 取出 base64 部分 GM_xmlhttpRequest({ method: 'POST', url: 'http://127.0.0.1:36677/upload', // PicGo 本地 API 地址 headers: { 'Content-Type': 'application/json' }, data: JSON.stringify({ "image": base64Data }), // 发送 Base64 格式数据 onload: (response) => { console.log('PicGo Response:', response.responseText); // 调试输出 let jsonResponse = JSON.parse(response.responseText); if (response.status === 200 && jsonResponse.success && jsonResponse.result.length > 0) { insertToEditor(jsonResponse.result[0]); // 插入 Markdown 链接 } else { alert('图片上传失败,返回数据: ' + response.responseText); } resolve(); }, onerror: (error) => { alert('图片上传到 PicGo 失败,请确保 PicGo 处于运行状态'); reject(error); } }); }; }); } function insertToEditor(Link) { const codeMirrorElement = document.querySelector('.CodeMirror'); if (codeMirrorElement) { const codeMirrorInstance = codeMirrorElement.CodeMirror; if (codeMirrorInstance) { const cursor = codeMirrorInstance.getCursor(); let markdownLink = ''; GM_setClipboard(markdownLink); codeMirrorInstance.replaceRange(markdownLink + '\n', cursor); } } } })();