您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
RT
// ==UserScript== // @name 卡特工具 // @namespace http://tampermonkey.net/ // @version 0.1.07 // @description RT // @author SmallYue1 // @match https://kater.me // @match https://kater.me/* // @require https://code.jquery.com/jquery-3.4.1.min.js // @grant none // @run-at document-body // ==/UserScript== var 定時偵測Textarea變化,定時偵測Path變化,Pre_Path; function 自訂功能(Textarea) { 批量上傳圖片(Textarea); Pixiv轉pixivcat代理(Textarea); 圖片網址自動轉換(Textarea); } function 偵測Path變化() { var Textarea; if(location.pathname === "/") { if(location.pathname !== Pre_Path) { console.log("偵測到網址變化:"+Pre_Path+"->"+location.pathname); Pre_Path = location.pathname; Textarea = document.getElementsByTagName("textarea")[0]; if (Textarea !== undefined) { 註冊監聽事件(Textarea); } } } else { var Path = "/"+location.pathname.split("/")[1]+"/" + location.pathname.split("/")[2]; if(Path !== Pre_Path) { console.log("偵測到網址變化:"+Pre_Path+"->"+Path); Pre_Path = Path; Textarea = document.getElementsByTagName("textarea")[0]; if (Textarea !== undefined) { 註冊監聽事件(Textarea); } } } } function 偵測Textarea出現() { try { var Textarea = document.getElementsByTagName("textarea")[0]; if (Textarea !== undefined) { 註冊監聽事件(Textarea); clearInterval(定時偵測Textarea變化); if(location.pathname === "/") { Pre_Path = location.pathname; } else { Pre_Path = "/"+location.pathname.split("/")[1]+"/" + location.pathname.split("/")[2]; } 定時偵測Textarea變化 = setInterval(() => 偵測Textarea消失(),100); 定時偵測Path變化 = setInterval(() => 偵測Path變化(),100); } } catch (e) { } } function 偵測Textarea消失() { try { var Textarea = document.getElementsByTagName("textarea")[0]; if (Textarea === undefined) { clearInterval(定時偵測Textarea變化); clearInterval(定時偵測Path變化); 定時偵測Textarea變化 = setInterval(() => 偵測Textarea出現(),100); } } catch (e) { } } function 註冊監聽事件(Textarea) { console.log("監聽對象:"); console.log(Textarea); 自訂功能(Textarea); } function 批量上傳圖片(Textarea) { $("i[class = 'icon far fa-image Button-icon']")[0].setAttribute("class","icon far fa-images Button-icon"); document.getElementById("imgur-upload-form").firstElementChild.setAttribute("multiple","multiple"); document.getElementById("imgur-upload-form").firstElementChild.addEventListener("change",function(e){ var Files = []; for (var i = 0; i < this.files.length; i++) { var Type = this.files.item(i).name.split("."); Files.push(new File([this.files.item(i)],i+"."+Type[Type.length-1])); } var Composer_footer = document.getElementsByClassName("Composer-footer")[0]; var Count = 1; var Goal = Files.length; var Loss = 0; var Li = document.createElement('li'); var Counter = document.createElement('p'); var apiUrl = 'https://api.imgur.com/3/image'; var apiKey = app.forum.attribute("imgur-upload.client-id"); Composer_footer.appendChild(Li); Li.appendChild(Counter); 等待第一張圖片上傳完成(Files,apiUrl,apiKey,Count,Counter,Goal,Loss,Textarea); }); } function 等待第一張圖片上傳完成(Files,apiUrl,apiKey,Count,Counter,Goal,Loss,Textarea) { var h = function(){ Counter.innerText = `批量上傳進度:(${Count}/${Goal-Loss})`; 上傳圖片(Files,apiUrl,apiKey,Count,Counter,Goal,Loss,Textarea); Textarea.removeEventListener('input',h,false); } Textarea.addEventListener('input',h,false); } function 上傳圖片(Files,apiUrl,apiKey,Count,Counter,Goal,Loss,Textarea) { if(Goal !== 1) { var value = Files[Count]; var formData = new FormData(); formData.append("image", value); var settings = { "async": true, "crossDomain": true, "url": apiUrl, "method": "POST", "datatype": "json", "headers": { "Authorization": "Client-ID " + apiKey }, "processData": false, "contentType": false, "data": formData, success: function (res) { Count = Count + 1; Textarea.value = Textarea.value+"[]("+res.data.link+")\n"; Textarea.dispatchEvent(new Event('input')); Counter.innerText = `批量上傳進度:(${Count}/${Goal-Loss})`; if(Count < Goal-Loss) { setTimeout(上傳圖片(Files,apiUrl,apiKey,Count,Counter,Goal,Loss,Textarea),100); } else if(Count === Goal-Loss) { alert("上傳完成"); Counter.parentNode.outerHTML = ""; } }, error: function (e) { console.log("上傳失敗:"); console.log(e.responseJSON.data.error.message); Loss = Loss + 1; Counter.innerText =`批量上傳進度:(${Count}/${Goal-Loss})`; if(Count < Goal-Loss) { 上傳圖片(Files,apiUrl,apiKey,Count,Counter,Goal,Loss,Textarea); } else if(Count === Goal-Loss) { alert("上傳完成"); Counter.parentNode.outerHTML = ""; } } } $.ajax(settings).done(function (res) { }); } } function Pixiv轉pixivcat代理(Textarea) { Textarea.addEventListener('paste', function(e){ var paste = e.clipboardData.getData("text/plain"); this.paste = paste; if(paste.indexOf("pixiv.cat") === -1) { if(paste.indexOf("pximg.net") !== -1) { setTimeout(() => { var Replace = "pximg.net"; var Img = this.paste.replace(Replace,"pixiv.cat"); var Url = this.paste.split("/"); var Path = Url[Url.length-1].split("_")[0]; Textarea.value = Textarea.value.replace(this.paste,"[](https://www.pixiv.net/artworks/"+Path+")\n"); Textarea.dispatchEvent(new Event('input')); },10); } else if(paste.indexOf("www.pixiv.net/artworks") !== -1) { setTimeout(() => { if(Textarea.value.indexOf("("+this.paste+")") === -1) { var Replace = "www.pixiv.net/artworks"; var Img = this.paste.replace(Replace,"pixiv.cat"); var Jpg = ".jpg"; var Img_Href = Img+Jpg; Textarea.value = Textarea.value.replace(this.paste,"[]("+this.paste+")\n"); Textarea.dispatchEvent(new Event('input')); isHasImg(Img,0,Jpg,Textarea,Img_Href); } },10); } } }, false); } async function isHasImg(Img,Index,Suffix,Textarea,Img_Href){ var ImgObj=new Image(); var Result; if(Index === 0) { ImgObj.src= Img+Suffix; } else { ImgObj.src= Img+"-"+Index+Suffix; } ImgObj.onload = new Promise(async function(resolve){ setTimeout(async function(){ if(ImgObj.width>0) { if(Index !== 0) { Textarea.value = Textarea.value.replace(Img_Href,ImgObj.src); Textarea.dispatchEvent(new Event('input')); } Result = true; } else { console.log(ImgObj) if(Index < 5) { await isHasImg(Img,Index+1,Suffix,Textarea,Img_Href); Result = false; } Result = false; } resolve(); },500); }); await ImgObj.onload; return Result; } function 圖片網址自動轉換(Textarea) { Textarea.addEventListener('paste',async function(e){ var paste = e.clipboardData.getData("text/plain"); this.paste = paste; if(((paste.indexOf("pximg.net") === -1) && (paste.indexOf("www.pixiv.net/artworks") === -1)) && ((paste.toLowerCase().indexOf(".jpg") !== -1) || (paste.toLowerCase().indexOf(".png") !== -1) || (paste.toLowerCase().indexOf(".gif") !== -1) || (paste.toLowerCase().indexOf(".jpeg") !== -1))) { //await isHasImg(paste,0,"",Textarea,paste); if(await isHasImg(paste,0,"",Textarea,paste)) { setTimeout(() => { if(Textarea.value.indexOf("("+this.paste+")") === -1) { Textarea.value = Textarea.value.replace(this.paste,"[]("+this.paste+")\n"); Textarea.dispatchEvent(new Event('input')); } },10); } } }, false); } $("document").ready( function() { 'use strict'; 定時偵測Textarea變化 = setInterval(() => 偵測Textarea出現(),100); // Your code here... } );