🏠 返回首頁 

Greasy Fork is available in English.

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

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

// ==UserScript==
// @name         Кнопка копирования для YouTube, ВКонтакте, vkvideo.ru и Rutube
// @namespace    http://tampermonkey.net/
// @version      1.6
// @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://youtube.com/*
// @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('h1[data-tid="f22e0093"] span');
const yearElement = document.querySelector('.styles_years__s0WWl');
if (titleElement && !document.querySelector('#copy-button-kinopoisk')) {
// Получаем год, если он существует
const year = yearElement ? yearElement.textContent.trim() : 'Неизвестно';
// Извлекаем текст названия фильма/сериала
const videoTitle = titleElement.textContent.trim();
// Проверяем, содержится ли уже год в названии (например, "1997 – 1998")
const titleWithYearRegex = /\(\d{4}(?: – \d{4})?\)/;
const titleHasYear = titleWithYearRegex.test(videoTitle);
// Если год не указан в названии, добавляем его
const finalTitle = titleHasYear ? videoTitle : `${videoTitle} (${year})`;
// Создаем кнопку
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 textToCopy = `Смотрим *${finalTitle}* - https://live.vkvideo.ru/grpzdc\n\Смотрим *${finalTitle}* - https://live.vkvideo.ru/grpzdc\n\Смотрим *${finalTitle}* - https://live.vkvideo.ru/grpzdc`;
// Пытаемся скопировать в буфер обмена
navigator.clipboard.writeText(textToCopy).then(() => {
console.log('Ссылка скопирована');
}).catch(err => {
console.error('Ошибка копирования:', err);
});
});
// Добавляем кнопку в DOM
titleElement.parentNode.appendChild(button);
}
}
// Функция для добавления кнопки на vkvideo.ru для видео с внешними ссылками
function addCopyButtonVKVideoExt() {
const titleElement = document.querySelector('.videoplayer_title .videoplayer_title_link');
if (titleElement && !document.querySelector('#copy-button-vkvideo-ext')) {
const button = document.createElement('button');
button.id = 'copy-button-vkvideo-ext';
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);
}
}
// Наблюдатели для всех платформ
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('vk.com')) {
addStreamLinkButtonVK();
addCopyButtonVK();
}
if (window.location.hostname.includes('vkvideo.ru')) {
addStreamLinkButtonVK();
addCopyButtonVK();
}
// Инициализация кнопок при загрузке страницы
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();
}
if (window.location.hostname.includes('vkvideo.ru') && window.location.href.includes('video_ext.php?')) {
addCopyButtonVKVideoExt();
}
})();