您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Плюсы: анонимность названий
// ==UserScript== // @name 2ch.hk: переименовать картинку при заливке // @description Плюсы: анонимность названий // @author Moro // @include /^https:\/\/2ch\.(hk|pm)\/(\w|\d)+((|\/)$|\/(index|(res|arch)\/).*\.html($|\?.*))/ // @compatible Chrome // @run-at document-idle // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // @noframes // @version 0.0.1.20210419093638 // @namespace https://greasyfork.org/users/762150 // ==/UserScript== //ПИШЕМ FILE RENAMER ВСЕМ ДВАЧЕМ -- что примечательно без jquery //Как аналог DataTransfer -- https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent/clipboardData // Двач, хочу переименовывать файлы перед загрузкой в треды автоматически давая имя типа unix timestamp. // Идея такова: подписываюсь на событие change у всех инпутов типа file. Поскольку коллекция e.target.files - readonly, ее нужно заменять своей. Создаю ее через DataTransfer, делаю новые файлы через cloneFile, заменяю. По идее дальше все оставшиеся event listener'ы на инпут должны работать с новой коллекцией, но Абу выдает ошибку, что files is undefined, хотя по логам всё на месте. // Что я делаю не так? async function init() { const cloneFile = (file) => { const fileExtension = file.name.match(/.+\.(.+)/)[1] || 'jpg'; const randomFileName = `${Date.now() - Math.round(Math.random() * 15768e5)}0.${fileExtension}`; const clonedFile = new File([file], randomFileName, { type: file.type }); return clonedFile; }; function run() { document.querySelectorAll('input[type=file]').forEach( f => f.addEventListener('change', async (e) => { console.log('before', e.target.files[0], e); const clonedFiles = new DataTransfer(); Array.from(e.target.files).forEach(file => { clonedFiles.items.add(cloneFile(file)); }); e.target.files = clonedFiles.files; console.log('done', e.target.files[0]); }, { capture: true }) ); console.log('Imageboard File Renamer Loaded'); } run(); } init();