您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Export and import localStorage keys rulesProfiles and lorebookEntries
- // ==UserScript==
- // @name ChatGPT Tools Export/Import
- // @namespace ChatGPT Tools by Vishanka
- // @version 1.0
- // @description Export and import localStorage keys rulesProfiles and lorebookEntries
- // @author Vishanka
- // @match https://chatgpt.com/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // Create an export button
- const exportButton = document.createElement('button');
- exportButton.innerText = 'Export Data';
- exportButton.style.position = 'fixed';
- exportButton.style.top = '10px';
- exportButton.style.right = '10px';
- exportButton.style.zIndex = '10000';
- document.body.appendChild(exportButton);
- // Create an import button
- const importButton = document.createElement('button');
- importButton.innerText = 'Import Data';
- importButton.style.position = 'fixed';
- importButton.style.top = '50px';
- importButton.style.right = '10px';
- importButton.style.zIndex = '10000';
- document.body.appendChild(importButton);
- // Function to export data
- exportButton.addEventListener('click', () => {
- const keysToExport = ['rulesProfiles', 'lorebookEntries'];
- const exportedData = {};
- keysToExport.forEach(key => {
- if (localStorage.getItem(key)) {
- exportedData[key] = JSON.parse(localStorage.getItem(key));
- }
- });
- const blob = new Blob([JSON.stringify(exportedData, null, 2)], { type: 'application/json' });
- const url = URL.createObjectURL(blob);
- const a = document.createElement('a');
- a.href = url;
- a.download = 'exported_data.json';
- a.click();
- URL.revokeObjectURL(url);
- });
- // Function to import data
- 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];
- const reader = new FileReader();
- reader.onload = function(e) {
- try {
- const importedData = JSON.parse(e.target.result);
- Object.keys(importedData).forEach(key => {
- if (importedData[key]) {
- localStorage.setItem(key, JSON.stringify(importedData[key]));
- }
- });
- alert('Data imported successfully!');
- } catch (error) {
- alert('Failed to import data: Invalid JSON file.');
- }
- };
- reader.readAsText(file);
- });
- input.click();
- });
- })();