ChatGPT Tools Export/Import

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();
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址