您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Script to export/import specific entries from localStorage
当前为
// ==UserScript== // @name Discord/Shapes - LocalStorage Import/Export // @namespace http://tampermonkey.net/ // @version 1.2 // @description Script to export/import specific entries from localStorage // @author Vishanka // @match https://discord.com/channels/* // @grant unsafeWindow // @run-at document-idle // ==/UserScript== (function() { 'use strict'; // Create buttons to trigger export and import unsafeWindow.exportButton = document.createElement('div'); exportButton.innerHTML = ` <div style="display: flex; align-items: center; justify-content: center;"> <button style="margin-top: 20px; margin-left: 4px; margin-right: 5px; padding: 7px 51px; font-size: 16px; cursor: pointer; background-color: transparent; color: #b0b0b0; border-radius: 8px; text-align: center; transition: background-color 0.1s, color 0.1s;">Export localStorage</button> </div> `; unsafeWindow.exportButton.onmouseover = () => { exportButton.querySelector('button').style.backgroundColor = '#212121'; exportButton.querySelector('button').style.color = '#ffffff'; }; exportButton.onmouseout = () => { exportButton.querySelector('button').style.backgroundColor = 'transparent'; exportButton.querySelector('button').style.color = '#b0b0b0'; }; DCstoragePanel.appendChild(exportButton); unsafeWindow.importButton = document.createElement('div'); importButton.innerHTML = ` <div style="display: flex; align-items: center; justify-content: center;"> <button style="margin-top: 20px; margin-left: 4px; margin-right: 5px; padding: 7px 50px; font-size: 16px; cursor: pointer; background-color: transparent; color: #b0b0b0; border-radius: 8px; text-align: center; transition: background-color 0.1s, color 0.1s;">Import localStorage</button> </div> `; importButton.onmouseover = () => { importButton.querySelector('button').style.backgroundColor = '#212121'; importButton.querySelector('button').style.color = '#ffffff'; }; importButton.onmouseout = () => { importButton.querySelector('button').style.backgroundColor = 'transparent'; importButton.querySelector('button').style.color = '#b0b0b0'; }; DCstoragePanel.appendChild(importButton); // Export specific localStorage entries exportButton.addEventListener('click', () => { const filteredData = {}; for (const key in localStorage) { if (localStorage.hasOwnProperty(key)) { if (key.startsWith('profile:') || key.includes('lorebook:') || key === 'selectedProfile') { filteredData[key] = localStorage.getItem(key); } } } const data = JSON.stringify(filteredData); const blob = new Blob([data], {type: 'application/json'}); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'localStorage_filtered.json'; document.body.appendChild(a); a.click(); document.body.removeChild(a); }); // Import localStorage importButton.addEventListener('click', () => { const input = document.createElement('input'); input.type = 'file'; input.accept = 'application/json'; input.addEventListener('change', (event) => { const file = event.target.files[0]; if (!file) { return; } const reader = new FileReader(); reader.onload = (e) => { try { const importedData = JSON.parse(e.target.result); for (const key in importedData) { localStorage.setItem(key, importedData[key]); } alert('localStorage has been successfully imported.'); } catch (err) { alert('Failed to import localStorage: ' + err.message); } }; reader.readAsText(file); }); input.click(); }); })();