您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an button to the post creation form that uploads an image and inserts it on the post
// ==UserScript== // @name Bitcointalk Image Upload Button (TalkIMG) // @version 0.2 // @description Adds an button to the post creation form that uploads an image and inserts it on the post // @author TryNinja // @match https://bitcointalk.org/index.php?action=post* // @icon https://www.google.com/s2/favicons?sz=64&domain=bitcointalk.org // @grant none // @namespace https://greatest.deepsurf.us/users/1070272 // ==/UserScript== const apiKey = ''; const uploadUrl = 'https://proxy.ninjastic.space/?url=https://talkimg.com/api/1/upload'; (function() { 'use strict'; const forumImgButtonTarget = document.querySelector('a:nth-child(24)'); const imgUploadButton = document.createElement('a'); imgUploadButton.href = "javascript:void(0);"; imgUploadButton.onclick = () => document.getElementById('uploadImage').click(); imgUploadButton.innerHTML = `<img onmouseover="bbc_highlight(this, true);" onmouseout="if (window.bbc_highlight) bbc_highlight(this, false);" src="https://www.talkimg.com/images/2023/05/09/logo418d0697bfbdeac7.png" align="bottom" width="23" height="22" alt="Upload Image" title="Upload Image" style="background-image: url('https://bitcointalk.org/Themes/custom1/images/bbc/bbc_bg.gif'); margin: 1px 2px 1px 1px;">`; forumImgButtonTarget.after(imgUploadButton); const uploadInput = document.createElement('input'); uploadInput.id = 'uploadImage'; uploadInput.type = 'file'; uploadInput.accept = 'image/*'; uploadInput.style.display = 'none'; forumImgButtonTarget.after(uploadInput); const insertImageUrl = imgUrl => { /*global replaceText, a*/ replaceText(`[img]${imgUrl}[/img]`, document.forms.postmodify.message); }; uploadInput.onchange = async () => { const { files } = uploadInput; if (files[0].size) { const formData = new FormData(); formData.append('type', 'file'); formData.append('format', 'json'); formData.append('source', files[0]); console.log('uploading image'); const upload = await fetch(uploadUrl, { method: 'POST', headers: { 'X-API-Key': apiKey }, mode: 'cors', body: formData, }); const result = await upload.json(); console.log(result) if (result.status_code === 200) { insertImageUrl(result.image.url); } uploadInput.value = undefined; } }; })();