Greasy Fork

Greasy Fork is available in English.

TikTok 小助手

获取ttk数据!

目前为 2024-10-10 提交的版本,查看 最新版本

// ==UserScript==
// @name         TikTok 小助手
// @namespace    http://tampermonkey.net/
// @version      5.13
// @description  获取ttk数据!
// @author       Belugu
// @match        https://www.tiktok.com/*
// @grant        none
// @icon         https://iili.io/dy5xjOg.jpg
// ==/UserScript==

(function() {
    'use strict';

    let currentUrl = window.location.href;
    let retryCount = 0;

    // Create a button to toggle display of the data panel
    function createButton(parsedData) {
        const existingButton = document.querySelector('#tiktokDataButton');
        if (existingButton) {
            existingButton.remove();
        }

        const button = document.createElement('button');
        button.id = 'tiktokDataButton';
        button.innerHTML = '🤓';
        button.style.position = 'fixed';
        button.style.top = '10px';
        button.style.right = '200px'; // Move the button to the left
        button.style.zIndex = '10001';
        button.style.padding = '5px';
        button.style.backgroundColor = '#D5E1EC';
        button.style.color = '#ffffff';
        button.style.border = 'none';
        button.style.borderRadius = '12px';
        button.style.cursor = 'pointer';
        button.style.fontSize = '20px';
        button.style.boxShadow = '0 4px #999';
        button.style.transition = 'all 0.1s ease-in-out';
        button.style.userSelect = 'none'; // Prevent emoji from being selected

        button.addEventListener('mousedown', () => {
            button.style.transform = 'translateY(4px)';
            button.style.boxShadow = '0 2px #666';
        });

        button.addEventListener('mouseup', () => {
            button.style.transform = 'translateY(0)';
            button.style.boxShadow = '0 4px #999';
        });

        button.addEventListener('click', () => {
            toggleDataDisplay(parsedData);
        });

        document.body.appendChild(button);
        console.log('Button created and appended to the page.');

        createRefreshButton();
    }

    // Create a button to manually refresh data extraction
    function createRefreshButton() {
        const existingRefreshButton = document.querySelector('#tiktokRefreshButton');
        if (existingRefreshButton) {
            existingRefreshButton.remove();
        }

        const refreshButton = document.createElement('button');
        refreshButton.id = 'tiktokRefreshButton';
        refreshButton.innerHTML = '🔄 刷新数据';
        refreshButton.style.position = 'fixed';
        refreshButton.style.top = '10px';
        refreshButton.style.right = '270px'; // Placed next to the main button
        refreshButton.style.zIndex = '10001';
        refreshButton.style.padding = '5px';
        refreshButton.style.backgroundColor = '#4CAF50';
        refreshButton.style.color = '#ffffff';
        refreshButton.style.border = 'none';
        refreshButton.style.borderRadius = '12px';
        refreshButton.style.cursor = 'pointer';
        refreshButton.style.fontSize = '20px';
        refreshButton.style.boxShadow = '0 4px #006400';
        refreshButton.style.transition = 'all 0.1s ease-in-out';
        refreshButton.style.userSelect = 'none';

        refreshButton.addEventListener('mousedown', () => {
            refreshButton.style.transform = 'translateY(4px)';
            refreshButton.style.boxShadow = '0 2px #006400';
        });


        refreshButton.addEventListener('mouseup', () => {
            refreshButton.style.transform = 'translateY(0)';
            refreshButton.style.boxShadow = '0 4px #006400'; // 改为深绿色
        });


        refreshButton.addEventListener('click', () => {
            console.log('Manual refresh button clicked.');
            retryCount = 0;
            currentUrl = window.location.href; // Update to current URL
            extractStats(true);
        });

        document.body.appendChild(refreshButton);
        console.log('Refresh button created and appended to the page.');
    }

    // Toggle the display of the data panel on the main page
    function toggleDataDisplay(parsedData) {
        let dataContainer = document.querySelector('#tiktokDataContainer');
        if (dataContainer) {
            dataContainer.style.transform = 'translateX(100%)';
            dataContainer.style.opacity = '0';
            setTimeout(() => {
                dataContainer.remove();
            }, 500);
            return;
        }

        dataContainer = document.createElement('div');
        dataContainer.id = 'tiktokDataContainer';
        dataContainer.style.transition = 'transform 0.5s ease-in-out, opacity 0.5s ease-in-out';
        dataContainer.style.transform = 'translateX(100%)'; // 初始位置完全在屏幕外
        dataContainer.style.opacity = '0';
        dataContainer.style.position = 'fixed';
        dataContainer.style.top = '60px';
        dataContainer.style.right = '20px'; // 设置数据面板初始在屏幕右侧
        dataContainer.style.width = '300px';
        dataContainer.style.maxHeight = '400px';
        dataContainer.style.overflowY = 'auto';
        dataContainer.style.backgroundColor = '#ffffff';
        dataContainer.style.border = '1px solid #ccc';
        dataContainer.style.borderRadius = '8px';
        dataContainer.style.boxShadow = '0px 0px 10px rgba(0, 0, 0, 0.1)';
        dataContainer.style.padding = '15px';
        dataContainer.style.zIndex = '10000';

        const title = document.createElement('h4');
        title.textContent = '好!发现了';
        title.style.color = '#000000';
        title.style.marginBottom = '10px';
        dataContainer.appendChild(title);

        const image = document.createElement('img');
        image.src = 'data:image/jpeg;base64,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';
        image.style.width = '50%'; // 设置宽度
        image.style.borderRadius = '4px'; // 可选:添加圆角
        dataContainer.appendChild(image);

function createJsonElement(data, container) {
    const fields = ['diggCount', 'playCount', 'commentCount', 'shareCount', 'collectCount', 'createTime'];

    // 提取账户名,去掉 @ 符号
    const accountName = window.location.pathname.split('/')[1].replace('@', '');

    // Base64 编码的复制图标
    const base64CopyIcon = " data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAYUlEQVR4nGNgGE7Am4GB4QkDA8N/MjFB8JgCw/8TNp4EheQCulvgTWacgILakxgLKImTR8RYAOP7kIhxBvWoBT6jQeQzmor+0zqjoYOhb8Fjahd26MCTTEtAhnsQY8HQAABVctFxfxXV5QAAAABJRU5ErkJggg==";

    // 创建账户名和复制图标
    const accountRow = document.createElement('div');
    accountRow.style.display = 'flex';
    accountRow.style.alignItems = 'center';
    accountRow.style.marginBottom = '5px';

    const accountNameElement = document.createElement('div');
    accountNameElement.style.fontWeight = 'bold';
    accountNameElement.fontSize = '20px'
    accountNameElement.textContent = `${accountName}`;

    const copyAccountIcon = document.createElement('img');
    copyAccountIcon.src = base64CopyIcon; // 使用 Base64 编码的图标
    copyAccountIcon.style.cursor = 'pointer';
    copyAccountIcon.style.width = '20px'; // 设置图标宽度
    copyAccountIcon.style.marginLeft = '10px';

    copyAccountIcon.addEventListener('click', (event) => {
        event.preventDefault();
        navigator.clipboard.writeText(accountName).then(() => {
            showNotification('已复制到剪贴板: ' + accountName);
        }).catch(err => {
            console.error('复制失败: ', err);
        });
    });

    accountRow.appendChild(accountNameElement);
    accountRow.appendChild(copyAccountIcon);
    container.appendChild(accountRow);

    // 创建粉丝数和复制图标
    const followerCountRow = document.createElement('div');
    followerCountRow.style.display = 'flex';
    followerCountRow.style.alignItems = 'center';
    followerCountRow.style.marginBottom = '10px';

    const followerCountText = document.createElement('div');
    followerCountText.textContent = `粉丝数: ${data.followerCount || '未知'}`;

    const copyFollowerIcon = document.createElement('img');
    copyFollowerIcon.src = base64CopyIcon; // 使用 Base64 编码的图标
    copyFollowerIcon.style.cursor = 'pointer';
    copyFollowerIcon.style.width = '20px'; // 设置图标宽度
    copyFollowerIcon.style.marginLeft = '10px';

    copyFollowerIcon.addEventListener('click', (event) => {
        event.preventDefault();
        navigator.clipboard.writeText(data.followerCount).then(() => {
            showNotification('已复制到剪贴板: ' + followerCountText.textContent);
        }).catch(err => {
            console.error('复制失败: ', err);
        });
    });

    followerCountRow.appendChild(followerCountText);
    followerCountRow.appendChild(copyFollowerIcon);
    container.appendChild(followerCountRow);

    // 创建其他统计信息
    fields.forEach(field => {
        if (data.hasOwnProperty(field)) {
            if (field === 'createTime' && data[field] === 0) {
                return; // Skip if createTime is 0
            }

            const item = document.createElement('div');
            item.style.marginBottom = '10px';
            item.style.display = 'flex';
            item.style.alignItems = 'center';

            let text = '';
            if (field === 'diggCount') {
                text = `点赞数: ${data[field]}`;
            } else if (field === 'playCount') {
                text = `播放数: ${data[field]}`;
            } else if (field === 'commentCount') {
                text = `评论数: ${data[field]}`;
            } else if (field === 'shareCount') {
                text = `分享数: ${data[field]}`;
            } else if (field === 'collectCount') {
                text = `收藏数: ${data[field]}`;
            } else if (field === 'createTime') {
                const date = new Date(data[field] * 1000);
                text = `创建时间: ${date.toLocaleString()}`;
            }

            const textElement = document.createElement('span');
            textElement.textContent = text;
            textElement.style.color = '#000000';
            item.appendChild(textElement);

            const copyButtonIcon = document.createElement('img');
            copyButtonIcon.src = base64CopyIcon; // 使用 Base64 编码的图标
            copyButtonIcon.style.cursor = 'pointer';
            copyButtonIcon.style.width = '20px'; // 设置图标宽度
            copyButtonIcon.style.marginLeft = '10px';

            copyButtonIcon.addEventListener('click', (event) => {
                event.preventDefault();
                const date = new Date(data[field] * 1000);
                const formattedDate = date.toISOString().slice(0, 19).replace('T', ' '); // 格式化为 YYYY-MM-DD HH:mm:ss
                navigator.clipboard.writeText(formattedDate).then(() => {
                    showNotification('已复制到剪贴板: ' + formattedDate);
                }).catch(err => {
                    console.error('复制失败: ', err);
                });
            });


            item.appendChild(copyButtonIcon);
            container.appendChild(item);
        }
    });
}










        createJsonElement(parsedData, dataContainer);
        document.body.appendChild(dataContainer);
        setTimeout(() => {
            dataContainer.style.transform = 'translateX(0)'; // 从右向左进入
            dataContainer.style.opacity = '1'; // 渐显
        }, 10);
    }

    // Extract video stats by parsing the script tag with id "__UNIVERSAL_DATA_FOR_REHYDRATION__"
    function extractStats(isManual = false) {
        fetch(window.location.href)
            .then(response => response.text())
            .then(responseText => {
                const scriptMatch = responseText.match(/<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__" type="application\/json">([\s\S]*?)<\/script>/);
                if (scriptMatch) {
                    try {
                        const jsonData = JSON.parse(scriptMatch[1]);
                        console.log('Attempting to extract data from script tag:', jsonData);
                        const stats = findStats(jsonData);
                        if (stats) {
                            console.log('Video stats found:', stats);
                            extractFollowerCount(stats);
                            if (isManual) {
                                showNotification('数据已成功刷新');
                            }
                        } else {
                            console.warn('No relevant stats found in the script tag.');
                        }
                    } catch (e) {
                        console.error('Error parsing script tag:', e);
                    }
                } else {
                    console.warn('Script tag "__UNIVERSAL_DATA_FOR_REHYDRATION__" not found.');
                    if (!isManual) {
                        retryExtractStats(); // Retry if data not available immediately
                    }
                }
            });
    }

    // Retry extractStats after a delay if data is not immediately available
    function retryExtractStats() {
        if (retryCount < 5) { // Retry up to 5 times
            setTimeout(() => {
                console.log('Retrying data extraction...');
                retryCount++;
                extractStats();
            }, 2000);
        } else {
            console.warn('Max retry attempts reached. Data extraction failed.');
        }
    }

    // Extract follower count from the user profile page using fetch API
    function extractFollowerCount(stats) {
        const userUrl = `https://www.tiktok.com/${window.location.pathname.split('/')[1]}`;

        fetch(userUrl)
            .then(response => response.text())
            .then(responseText => {
                const scriptMatch = responseText.match(/<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__" type="application\/json">([\s\S]*?)<\/script>/);
                if (scriptMatch) {
                    try {
                        const obj = JSON.parse(scriptMatch[1]);
                        const followerCount = findFollowerCount(obj);
                        if (followerCount !== null) {
                            stats.followerCount = followerCount;
                            createButton(stats);
                            toggleDataDisplay(stats); // Ensure data panel shows when page loads
                        } else {
                            console.warn('未找到粉丝计数。');
                        }
                    } catch (error) {
                        console.error('解析 JSON 时出错:', error);
                    }
                } else {
                    console.log('未找到包含页面数据的 <script> 标签。');
                }
            })
            .catch(error => {
                console.error('请求用户页面时出错:', error);
            });
    }

    // Run extractStats after the page is fully loaded
    window.addEventListener('load', () => {
        console.log('Page fully loaded, attempting to extract stats.');
        extractStats();
    });

    // Listen for URL changes and re-run extractStats if necessary
    setInterval(() => {
        if (currentUrl !== window.location.href) {
            console.log('URL changed, attempting to extract stats again.');
            currentUrl = window.location.href;
            retryCount = 0; // Reset retry count on URL change
            extractStats();
        }
    }, 1000);

    // Extract video stats directly from the JSON data
    function findStats(jsonData) {
        let result = null;
        function recursiveSearch(obj) {
            for (const key in obj) {
                if (typeof obj[key] === 'object' && obj[key] !== null) {
                    recursiveSearch(obj[key]);
                } else if ((key === 'diggCount' || key === 'playCount' || key === 'commentCount' || key === 'shareCount' || key === 'collectCount' || key === 'createTime') && obj[key] !== 0) {
                    if (!result) {
                        result = {};
                    }
                    result[key] = obj[key];
                }
            }
        }
        recursiveSearch(jsonData);
        return result;
    }

    // Recursively search for follower count in the JSON data
    function findFollowerCount(jsonData) {
        let followerCount = null;
        function recursiveSearch(obj) {
            for (const key in obj) {
                if (key === 'followerCount') {
                    followerCount = obj[key];
                    return;
                }
                if (typeof obj[key] === 'object' && obj[key] !== null) {
                    recursiveSearch(obj[key]);
                }
            }
        }
        recursiveSearch(jsonData);
        return followerCount;
    }

    // Function to show notification
    function showNotification(message) {
        // Create notification container
        const notificationContainer = document.createElement('div');
        notificationContainer.className = 'notificationContainer';
        notificationContainer.style.position = 'fixed';
        notificationContainer.style.bottom = '20px';
        notificationContainer.style.right = '-100%'; // Start from outside the right edge
        notificationContainer.style.width = 'auto';
        notificationContainer.style.padding = '10px 20px';
        notificationContainer.style.backgroundColor = getRandomColor();
        notificationContainer.style.color = '#fff';
        notificationContainer.style.borderRadius = '5px';
        notificationContainer.style.boxShadow = '0px 0px 10px rgba(0, 0, 0, 0.3)';
        notificationContainer.style.zIndex = '10000';
        notificationContainer.style.opacity = '0';
        notificationContainer.style.transition = 'transform 0.5s ease-in-out, opacity 0.5s ease-in-out';
        notificationContainer.textContent = message;

        document.body.appendChild(notificationContainer);

        // Push up old notifications
        const existingNotifications = document.querySelectorAll('.notificationContainer');
        existingNotifications.forEach((container, index) => {
            container.style.bottom = `${20 + (index + 1) * 50}px`;
        });

        // Make notification slide in from the right
        setTimeout(() => {
            notificationContainer.style.right = '20px';
            notificationContainer.style.opacity = '1';
        }, 10);

        // Hide the notification after 3 seconds
        setTimeout(() => {
            notificationContainer.style.opacity = '0';
            notificationContainer.style.right = '-100%';
            setTimeout(() => {
                notificationContainer.remove();
            }, 500);
        }, 3000);
    }

    // Function to get a random background color for the notification
    function getRandomColor() {
        const colors = ['#FF5733', '#33FF57', '#3357FF', '#FF33A1', '#A133FF'];
        return colors[Math.floor(Math.random() * colors.length)];
    }
})();