您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
提取抖音视频合集专栏的URL,并添加复制所有信息的悬浮按钮
// ==UserScript== // @name 抖音视频合集专栏导出URL(文本版) // @namespace http://tampermonkey.net/ // @version 1.0.3 // @description 提取抖音视频合集专栏的URL,并添加复制所有信息的悬浮按钮 // @author qqlcx5 // @match https://www.douyin.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=douyin.com // @grant GM_setClipboard // @run-at document-end // @license MIT // ==/UserScript== (function() { 'use strict'; /** * 存储提取到的视频合集信息 * Array to store extracted video collection information * @type {Array<Object>} */ let videoCollections = []; /** * 提取页面上的所有视频合集信息 * Extracts all video collection information from the page */ function extractVideoCollections() { // 根据页面的DOM结构,选择包含视频合集信息的容器 // 请根据实际的DOM结构更新选择器 const container = document.querySelector('div[data-e2e="aweme-mix"]'); if (!container) { console.warn('未找到视频合集列表容器 (Video collection list container not found)'); return; } // 选择所有视频合集列表项 const collectionItems = container.querySelectorAll('ul > li.YGmRi0kR'); if (collectionItems.length === 0) { console.warn('未找到任何视频合集 (No video collections found)'); return; } videoCollections = []; // 清空之前的记录 collectionItems.forEach((item, index) => { try { // 提取视频合集的链接 const anchor = item.querySelector('a.uz1VJwFY'); const collectionUrl = anchor ? anchor.href.trim() : null; // 提取视频合集的标题 const titleElement = item.querySelector('.arnSiSbK'); // 请根据实际情况替换为准确的选择器 const collectionTitle = titleElement ? titleElement.textContent.trim() : '未知合集'; if (collectionUrl) { videoCollections.push({ index: index + 1, title: collectionTitle, url: collectionUrl.startsWith('http') ? collectionUrl : `https:${collectionUrl}` }); } } catch (error) { console.error('提取视频合集信息时出错:', error); } }); console.info(`提取到 ${videoCollections.length} 个视频合集。`); } /** * 复制所有视频合集的信息到剪贴板 * Copies all video collection information to the clipboard */ function copyAllCollectionsInfo() { extractVideoCollections(); if (videoCollections.length === 0) { alert('未提取到任何视频合集信息,请确保页面已正确加载。'); return; } // 将信息格式化为易读的文本 const infoText = videoCollections.map(collection => `序号: ${collection.index}\n标题: ${collection.title}\nURL: ${collection.url}` ).join('\n\n'); // 复制到剪贴板 GM_setClipboard(infoText); notifyUser(`已复制 ${videoCollections.length} 个视频合集的信息到剪贴板。`); } /** * 创建并添加悬浮复制按钮到页面 * Creates and adds a floating copy button to the page */ function createFloatingCopyButton() { const button = document.createElement('button'); button.id = 'copy-collections-info-btn'; button.textContent = '复制合集URL'; // 样式设计 (Styling) Object.assign(button.style, { position: 'fixed', right: '20px', bottom: '250px', padding: '12px 20px', backgroundColor: '#409EFF', color: '#fff', border: 'none', borderRadius: '8px', boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)', cursor: 'pointer', fontSize: '14px', zIndex: '10000', transition: 'background-color 0.3s, transform 0.3s', }); // 鼠标悬停效果 (Hover Effects) button.addEventListener('mouseenter', () => { button.style.backgroundColor = '#66b1ff'; button.style.transform = 'scale(1.05)'; }); button.addEventListener('mouseleave', () => { button.style.backgroundColor = '#409EFF'; button.style.transform = 'scale(1)'; }); // 点击事件 (Click Event) button.addEventListener('click', copyAllCollectionsInfo); // 添加按钮到页面主体 (Append button to the body) document.body.appendChild(button); } /** * 显示提示通知给用户 * Displays a notification to the user * @param {string} message - 要显示的消息 (Message to display) */ function notifyUser(message) { // 创建通知元素 const notification = document.createElement('div'); notification.textContent = message; // 样式设计 (Styling) Object.assign(notification.style, { position: 'fixed', bottom: '300px', right: '20px', backgroundColor: 'rgba(0, 0, 0, 0.7)', color: '#fff', padding: '10px 15px', borderRadius: '5px', opacity: '0', transition: 'opacity 0.5s', zIndex: '10000', fontSize: '13px', maxWidth: '300px', wordWrap: 'break-word', }); document.body.appendChild(notification); // 触发动画 setTimeout(() => { notification.style.opacity = '1'; }, 100); // Slight delay to allow transition // 自动淡出和移除 setTimeout(() => { notification.style.opacity = '0'; setTimeout(() => { if (document.body.contains(notification)) { document.body.removeChild(notification); } }, 500); // 等待淡出完成 }, 3000); // 显示3秒 } /** * 初始化脚本 * Initializes the userscript */ function initializeScript() { createFloatingCopyButton(); console.info('抖音视频合集专栏导出器已启用。'); } // 等待页面内容加载完毕后初始化脚本 // Wait for the DOM to be fully loaded before initializing if (document.readyState === 'complete' || document.readyState === 'interactive') { initializeScript(); } else { document.addEventListener('DOMContentLoaded', initializeScript); } })();