您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add 3 Buttons to download Video,audio,loop when click button you can open it in new tab by click mouse button or right click selet open in new tab to preview.
- // ==UserScript==
- // @name ⚙️Coub Downloading
- // @namespace Wizzergod
- // @version 1.0.3
- // @description Add 3 Buttons to download Video,audio,loop when click button you can open it in new tab by click mouse button or right click selet open in new tab to preview.
- // @icon https://www.google.com/s2/favicons?sz=64&domain=coub.com
- // @author Wizzergod
- // @license MIT
- // @match *://*.coub.com/*
- // @match *://coub.com/*
- // @grant GM_download
- // ==/UserScript==
- (function ()
- {
- 'use strict';
- function addButton(container, text, url)
- {
- const button = document.createElement('a');
- button.innerText = text;
- button.classList.add('coubdl-button');
- button.href = url;
- button.addEventListener('click', function (event)
- {
- event.preventDefault();
- downloadFile(url, getFileNameFromUrl(url));
- });
- container.appendChild(button);
- }
- function downloadFile(url, fileName)
- {
- GM_download(
- {
- url: url,
- name: fileName
- });
- }
- function getFileNameFromUrl(url)
- {
- const matches = url.match(/\/([^\/?#]+)[^\/]*$/);
- return matches && matches[1];
- }
- function addControls()
- {
- const coubContainers = document.querySelectorAll('.coub');
- coubContainers.forEach(container =>
- {
- const permalink = container.dataset.permalink;
- if (!permalink)
- {
- return;
- }
- const descriptionControls = container.querySelector('.coub__description');
- if (!descriptionControls)
- {
- return;
- }
- const existingControls = container.querySelector('.coubdl-button-group');
- if (existingControls)
- {
- return;
- }
- const controlsContainer = document.createElement("div");
- controlsContainer.classList.add("coubdl-button-group");
- const dataContainer = container.querySelector(
- '.data script[type="text/json"]'
- );
- if (dataContainer)
- {
- const data = JSON.parse(dataContainer.textContent);
- if (data && data.file_versions && data.file_versions.html5)
- {
- const html5Data = data.file_versions.html5;
- if (
- html5Data.video &&
- html5Data.video.high &&
- html5Data.video.high.url
- )
- {
- const videoUrl = html5Data.video.high.url;
- addButton(controlsContainer, "⬇️ Video", videoUrl);
- }
- if (
- html5Data.audio &&
- html5Data.audio.high &&
- html5Data.audio.high.url
- )
- {
- const audioUrl = html5Data.audio.high.url;
- addButton(controlsContainer, "⬇️ Audio", audioUrl);
- }
- }
- if (
- data &&
- data.file_versions &&
- data.file_versions.share &&
- data.file_versions.share.default
- )
- {
- const loopedUrl = data.file_versions.share.default;
- addButton(controlsContainer, "⬇️ Looped Video", loopedUrl);
- }
- }
- descriptionControls.prepend(controlsContainer);
- });
- }
- function observeChanges()
- {
- const observer = new MutationObserver((mutations) =>
- {
- mutations.forEach((mutation) =>
- {
- Array.from(mutation.addedNodes).forEach((node) =>
- {
- if (node.nodeType === Node.ELEMENT_NODE)
- {
- addControls();
- }
- });
- });
- });
- observer.observe(document.body,
- {
- childList: true,
- subtree: true,
- });
- }
- function init()
- {
- addControls();
- observeChanges();
- }
- // Add CSS styles
- const style = document.createElement('style');
- style.textContent = `
- .coubdl-button-group {
- display: flex;
- flex-direction: row;
- justify-content: center;
- gap: 10px;
- margin-top: 10px;
- width: 100%;
- position: relative;
- }
- .coubdl-button {
- padding: 4px 8px;
- color: #000;
- background: #fff0;
- line-height: 1;
- border-radius: 0px;
- text-decoration: none;
- border: none;
- display: inline-block;
- transition: background-color 0.3s ease;
- }
- .coubdl-button:hover,
- .coubdl-button:active,
- .coubdl-button:focus {
- color: #0332FF;
- }
- `;
- document.head.appendChild(style);
- init();
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址