您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
User script for uploading files from the clipboard in Feeder chat.
- // ==UserScript==
- // @name Feeder - Paste Upload
- // @name:ja Feeder - 貼り付けてアップロード
- // @description User script for uploading files from the clipboard in Feeder chat.
- // @description:ja Feederチャットでクリップボードからファイルをアップロードするためのユーザースクリプトです。
- // @version 2.0.3
- // @icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ/wQAUP8GAAAAAAAAAAAASv4qAD//dgBL/qoBUf+yAFD/jwBQ/koAUP8FAAAAAABQ/wQAUP8FAE/+AABQ/wUAAAAAAAAAAAAAAAAATP9wA1L/6x5k//8LV//+AE3+/gBP//8AUP//AFD/qwBQ/h4AAAAAAAAAAAAAAAAAT/+UAFD+gQBQ/1kATv+MAEj//hxj//+rxf//SIH//wBF//8ATv//AE/+/wBQ//8AUP+8AFD/XQBQ/3EAUP+NAE/+aQBP/3wAUP+uAE7+/wBH//8tb//+3uj//l+R//8AQP7/AEn//gBO/v4AUP7/AFD//wBQ/tMAUP+HAE//eQBQ/jcAUP4uAE//mgBO/v8AR///K23//tTi//9YjP/+AD3//gBG//8ATf7/AFD+/wBQ//8AUP/KAE/+UABP/i0AUP+OAFD/gABQ/8kAT///AEf+/iBm///W4//+1+P//5q6/v+Utf/+Pnr+/gBK/v8ATv7/AFD/7wBQ/5kAUP5/AFD/EwBQ/wQAUP+OAE/+/wBH//8iZ//+0+H//sLV/v+Wt/7/ia7//ips//8ASP//AE7+/wBQ/tgAT/8yAFD/AAAAAAAAT/4SAFD+uwBO//8ARv//Km3//9zn//5+pv//F2D+/y5v//4rbf//BFL+/wBO/v8AT//zAE/+TwAAAAAAAAAAAFD+hwBP/v8AT/7/AEf//xZf/v7B1f/+5+7+/rrQ/v/P3v/+l7j+/ghW/v4ASv7/AE/+/wBQ/9MAUP4nAFD+LgBQ/98AT/7/AE/+/wBN//4AT///OHb//2CS/v9pmP7/Voz//x9l/v8ATP7+AE7+/gBP//8AT/7/AFD/aQBQ/0kAUP//AFD//wBQ//4AUP//AE///wBI//8ARf//AEb//wBG//8ASv7/AFD+/wBQ//4AUP//AFD//wBQ/5cAT/5NAFD//wBQ//8AUP//AFD//wBP//kAT/6AAE//ZgBP/3AAT/5pAE//xgBQ//8AUP//AFD+/wBQ//8AUP+eAFD/OABP/+sAUP7/AFD//wBQ/+YAT/5iAAAAAAAAAAAAAAAAAAAAAABQ/ygAUP+4AE/+/wBQ//8AUP//AFD/eABQ/w4AT/6BAFD+vABQ/3gAT/4nAAAAAAAAAAAAUP8FAE//AwBQ/wIAAAAAAFD/DABP/lYAT/+mAE/+tQBQ/jEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP4/AAD4DwAAIAYAAMABAADAAwAAAAEAAMADAADAAwAAgAEAAIABAACAAAAAgcAAAIfhAACf+QAA//8AAA==
- // @match https://*.x-feeder.info/*/
- // @exclude https://*.x-feeder.info/*/*/*
- // @namespace https://github.com/sqrtox/userscript-feeder-paste-upload
- // @author sqrtox
- // @license MIT
- // @grant unsafeWindow
- // ==/UserScript==
- "use strict";
- (() => {
- // src/utils/ElementIds.ts
- var ElementIds = {
- DropzoneArea: "picture_drop_zone_area",
- OpenDropzoneAreaButton: "post_picture",
- ImageSizeSelect: "frame_size",
- PostFormSingle: "post_form_single",
- PostFormMultiline: "post_form_multi"
- };
- // src/utils/getElement.ts
- var getElement = (id) => {
- const element = document.getElementById(id);
- if (!element) {
- throw new Error(`Element with id "${id}" not found`);
- }
- return element;
- };
- // src/utils/ImageSizes.ts
- var ImageSizes = {
- Original: "0",
- Small: "1",
- Medium: "2",
- Large: "3",
- ExtraLarge: "4",
- Largest: "5"
- };
- // src/utils/openDropzoneArea.ts
- var openDropzoneArea = () => {
- const dropzoneArea = getElement(ElementIds.DropzoneArea);
- const dropzoneAreaIsHidden = !dropzoneArea.style.display || dropzoneArea.style.display === "none";
- if (dropzoneAreaIsHidden) {
- const openDropzoneAreaButton = getElement(ElementIds.OpenDropzoneAreaButton);
- openDropzoneAreaButton.click();
- const imageSizeSelect = getElement(ElementIds.ImageSizeSelect);
- imageSizeSelect.value = ImageSizes.Original;
- }
- };
- // src/utils/getDropzone.ts
- var getDropzone = () => {
- const dropzone = unsafeWindow.Dropzone.instances[0];
- if (!dropzone) {
- throw new Error("Dropzone instance not found");
- }
- return dropzone;
- };
- // src/utils/handlePaste.ts
- var handlePaste = ({ clipboardData }) => {
- if (!clipboardData) {
- return;
- }
- const file = clipboardData.files[0];
- if (!file) {
- return;
- }
- openDropzoneArea();
- const dropzone = getDropzone();
- dropzone.addFile(file);
- };
- // src/utils/applyHandlePaste.ts
- var applyHandlePaste = () => {
- const postFormSingle = getElement(ElementIds.PostFormSingle);
- const postFormMultiline = getElement(ElementIds.PostFormMultiline);
- postFormSingle.addEventListener("paste", handlePaste);
- postFormMultiline.addEventListener("paste", handlePaste);
- };
- // src/index.ts
- applyHandlePaste();
- })();