Copy Last Code Block on ChatGPT Without Header

Adds a button to copy the last code block on chat.openai.com without copying the header

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Copy Last Code Block on ChatGPT Without Header
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Adds a button to copy the last code block on chat.openai.com without copying the header
// @author       max5555
// @license      MIT
// @match        https://chat.openai.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Create the copy button
    const copyButton = document.createElement('button');
    copyButton.textContent = 'Copy Last Code';
    copyButton.style.position = 'fixed';
    copyButton.style.bottom = '20px';
    copyButton.style.right = '20px';
    copyButton.style.zIndex = '1000';

    // Add the button to the body
    document.body.appendChild(copyButton);

    // Function to show notification
    function showNotification(message, duration = 3000) {
        const notification = document.createElement('div');
        notification.textContent = message;
        notification.style.position = 'fixed';
        notification.style.bottom = '50px';
        notification.style.right = '20px';
        notification.style.backgroundColor = 'lightgreen';
        notification.style.padding = '10px';
        notification.style.borderRadius = '5px';
        notification.style.boxShadow = '0 0 5px rgba(0, 0, 0, 0.3)';
        notification.style.zIndex = '1001';

        document.body.appendChild(notification);

        setTimeout(() => {
            notification.remove();
        }, duration);
    }

    // Function to copy the last code block
    copyButton.addEventListener('click', () => {
        const codeContainers = document.querySelectorAll('pre code');
        if (codeContainers.length > 0) {
            const lastCodeContainer = codeContainers[codeContainers.length - 1];
            navigator.clipboard.writeText(lastCodeContainer.textContent).then(() => {
                showNotification('Code copied to clipboard!');
            }).catch(err => {
                console.error('Failed to copy text: ', err);
            });
        } else {
            showNotification('No code blocks found!');
        }
    });
})();