Greasy Fork

Кнопка копирования для YouTube, ВКонтакте, vkvideo.ru и Rutube

Добавляет кнопку для копирования текста с названием видео на YouTube, ВКонтакте, vkvideo.ru и Rutube

目前为 2024-11-29 提交的版本。查看 最新版本

// ==UserScript==
// @name         Кнопка копирования для YouTube, ВКонтакте, vkvideo.ru и Rutube
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  Добавляет кнопку для копирования текста с названием видео на YouTube, ВКонтакте, vkvideo.ru и Rutube
// @author       Ваше Имя
// @match        https://www.youtube.com/watch*
// @match        https://vk.com/*
// @match        https://vkvideo.ru/*
// @match        https://rutube.ru/*
// @match        https://youtu.be/*
// @match        https://www.kinopoisk.ru/*
// @icon         https://www.youtube.com/favicon.ico
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Функция для добавления кнопки на YouTube
    function addCopyButtonYouTube() {
        const titleElement = document.querySelector('h1.style-scope.ytd-watch-metadata yt-formatted-string');

        if (titleElement && !document.querySelector('#copy-button-youtube')) {
            const button = document.createElement('button');
            button.id = 'copy-button-youtube';
            button.textContent = 'Копировать';
            button.style.marginLeft = '10px';
            button.style.padding = '5px 10px';
            button.style.backgroundColor = '#cc0000';
            button.style.color = 'white';
            button.style.border = 'none';
            button.style.cursor = 'pointer';
            button.style.borderRadius = '4px';

            button.addEventListener('click', () => {
                const videoTitle = titleElement.textContent.trim();
                const textToCopy = `Смотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc`;
                navigator.clipboard.writeText(textToCopy).catch(err => {
                    console.error('Ошибка копирования:', err);
                });
            });

            titleElement.parentNode.appendChild(button);
        }
    }

    // Функция для добавления кнопки на ВКонтакте
    function addCopyButtonVK() {
        const titleElement = document.querySelector('.mv_title_wrap .mv_title');

        if (titleElement && !document.querySelector('#copy-button-vk')) {
            const button = document.createElement('button');
            button.id = 'copy-button-vk';
            button.textContent = 'Копировать';
            button.style.marginLeft = '10px';
            button.style.padding = '5px 10px';
            button.style.backgroundColor = '#4c75b5';
            button.style.color = 'white';
            button.style.border = 'none';
            button.style.cursor = 'pointer';
            button.style.borderRadius = '4px';

            button.addEventListener('click', () => {
                const videoTitle = titleElement.textContent.trim();
                const videoUrl = window.location.href;  // Получаем текущий URL страницы
                const textToCopy = `Смотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc`;
                navigator.clipboard.writeText(textToCopy).catch(err => {
                    console.error('Ошибка копирования:', err);
                });
            });

            titleElement.parentNode.appendChild(button);
        }
    }

    // Функция для добавления кнопки на vkvideo.ru
    function addCopyButtonVKVideo() {
        const titleElement = document.querySelector('div[data-testid="video_modal_title"]');

        if (titleElement && !document.querySelector('#copy-button-vkvideo')) {
            const button = document.createElement('button');
            button.id = 'copy-button-vkvideo';
            button.textContent = 'Копировать';
            button.style.marginLeft = '10px';
            button.style.padding = '5px 10px';
            button.style.backgroundColor = '#4c75b5';
            button.style.color = 'white';
            button.style.border = 'none';
            button.style.cursor = 'pointer';
            button.style.borderRadius = '4px';

            button.addEventListener('click', () => {
                const videoTitle = titleElement.textContent.trim();
                const videoUrl = window.location.href;  // Получаем текущий URL страницы
                const textToCopy = `Смотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc`;
                navigator.clipboard.writeText(textToCopy).catch(err => {
                    console.error('Ошибка копирования:', err);
                });
            });

            titleElement.parentNode.appendChild(button);
        }
    }

    // Функция для добавления кнопки на Rutube
    function addCopyButtonRutube() {
        const titleElement = document.querySelector('.video-pageinfo-container-module__videoTitleSectionHeader');

        if (titleElement && !document.querySelector('#copy-button-rutube')) {
            const button = document.createElement('button');
            button.id = 'copy-button-rutube';
            button.textContent = 'Копировать';
            button.style.marginLeft = '10px';
            button.style.padding = '5px 10px';
            button.style.backgroundColor = '#009d89';
            button.style.color = 'white';
            button.style.border = 'none';
            button.style.cursor = 'pointer';
            button.style.borderRadius = '4px';

            button.addEventListener('click', () => {
                const videoTitle = titleElement.textContent.trim();
                const textToCopy = `Смотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc`;
                navigator.clipboard.writeText(textToCopy).catch(err => {
                    console.error('Ошибка копирования:', err);
                });
            });

            titleElement.parentNode.appendChild(button);
        }
    }
    // Функция для добавления кнопки на Kinopoisk
    function addCopyButtonKinopoisk() {
    const titleElement = document.querySelector('.styles_title__65Zwx span');

    if (titleElement && !document.querySelector('#copy-button-kinopoisk')) {
        // Создаем кнопку
        const button = document.createElement('button');
        button.id = 'copy-button-kinopoisk';
        button.textContent = 'Копировать';
        button.style.marginLeft = '10px';
        button.style.padding = '5px 10px';
        button.style.backgroundColor = '#4e8e2b';
        button.style.color = 'white';
        button.style.border = 'none';
        button.style.cursor = 'pointer';
        button.style.borderRadius = '4px';

        // Обработчик для кнопки
        button.addEventListener('click', () => {
            const videoTitle = titleElement.textContent.trim();
            // Копируем текст с одной ссылкой (удалил дублирование)
            const textToCopy = `Смотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc\nСмотрим *${videoTitle}* - https://live.vkvideo.ru/grpzdc`;

            // Пытаемся скопировать в буфер обмена
            navigator.clipboard.writeText(textToCopy).then(() => {
            }).catch(err => {
                console.error('Ошибка копирования:', err);
            });
        });

        // Добавляем кнопку в DOM
        titleElement.parentNode.appendChild(button);
    }
}

    // Наблюдатели для всех платформ
    const observerYouTube = new MutationObserver(addCopyButtonYouTube);
    observerYouTube.observe(document.body, { childList: true, subtree: true });

    const observerVK = new MutationObserver(addCopyButtonVK);
    observerVK.observe(document.body, { childList: true, subtree: true });

    const observerVKVideo = new MutationObserver(addCopyButtonVKVideo);
    observerVKVideo.observe(document.body, { childList: true, subtree: true });

    const observerRutube = new MutationObserver(addCopyButtonRutube);
    observerRutube.observe(document.body, { childList: true, subtree: true });

    const observerKinopoisk = new MutationObserver(addCopyButtonKinopoisk);
    observerKinopoisk.observe(document.body, { childList: true, subtree: true });

    // Инициализация кнопок при загрузке страницы
    if (window.location.hostname.includes('youtube.com')) {
        addCopyButtonYouTube();
    }

    if (window.location.hostname.includes('vk.com')) {
        addCopyButtonVK();
    }

    if (window.location.hostname.includes('vkvideo.ru')) {
        addCopyButtonVKVideo();
    }

    if (window.location.hostname.includes('rutube.ru')) {
        addCopyButtonRutube();
    }
    if (window.location.hostname.includes('kinopoisk.ru')) {
        addCopyButtonKinopoisk();
    }
})();