Greasy Fork

Greasy Fork is available in English.

抖音网页直播点赞(可调节频率,可设置是否默认自动点赞)

这是一个基于抖音直播的自动点赞脚本,支持调节点赞频率,修改自别人的脚本

当前为 2025-01-03 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         抖音网页直播点赞(可调节频率,可设置是否默认自动点赞)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  这是一个基于抖音直播的自动点赞脚本,支持调节点赞频率,修改自别人的脚本
// @author       余某人
// @match        *://live.douyin.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

        let page = document.getElementsByTagName('body')[0];
        // 首先添加全局样式
        function addGlobalStyle(css) {
            var head, style;
            head = document.getElementsByTagName('head')[0];
            if (!head) { return; }
            style = document.createElement('style');
            style.type = 'text/css';
            style.innerHTML = css;
            head.appendChild(style);
        }

        // 添加所有需要的样式
        addGlobalStyle(`
            .kolento {
                content: '';
                font-size: 14px;
                position: fixed;
                top: 70px;right: 30px;
                z-index: 500;
                cursor: pointer;
                background: linear-gradient(90deg,#f4c8c7 0,#0c61bb 45%,#0c61bb 55%,#fcc6c6)!important;
                border-radius: 50%;
                color: #fff;
                display: block;
                width: 46px;height: 46px;
                line-height: 16px;
                text-align: center;
                display: flex;
                align-items: center;
                justify-content: center;
                transition: all ease 0.3s;
            }
            .kolento:hover {
                background-color: #4abf8a;
                transform: rotate(360deg)
            }

            .total {
                font-size: 14px;
                position: fixed;
                top: 79px;
                right: 85px;
                z-index: 500;
                background: linear-gradient(90deg,#f4c8c7 0,#0c61bb 45%,#0c61bb 55%,#fcc6c6)!important;
                color: #fff;
                text-align: center;
                display: flex;
                align-items: center;
                justify-content: center;
                transition: all ease 0.3s;
                padding: 5px 8px;
                border-radius: 20px;
            }
            .total p {
                color:#fff;
            }

            .freq-adjuster {
                position: fixed;
                top: 130px;
                right: 30px;
                z-index: 500;
                background: linear-gradient(90deg,#f4c8c7 0,#0c61bb 45%,#0c61bb 55%,#fcc6c6)!important;
                color: #fff;
                padding: 8px;
                border-radius: 20px;
                display: flex;
                flex-direction: column;
                gap: 8px;
            }

            .freq-adjuster > div {
                display: flex;
                align-items: center;
                gap: 5px;
            }

            .freq-input {
                width: 100px;
                border: none;
                border-radius: 10px;
                padding: 2px 5px;
                text-align: center;
                font-size: 14px;
            }

            .freq-label {
                font-size: 12px;
                white-space: nowrap;
            }

            .auto-like-option {
                display: flex;
                align-items: center;
                gap: 5px;
                font-size: 12px;
                cursor: pointer;
            }

            .auto-like-checkbox {
                cursor: pointer;
            }
        `);

        // 然后创建并添加所有元素
        let kolento = document.createElement("p");
        kolento.className="kolento";
        kolento.innerHTML='开始<br/>点赞'
        page.append(kolento);

        let total = document.createElement("div");
        total.className="total";
        total.innerHTML='<p class="text">点击数:</p><p class="kolento-all">0</p>';
        page.append(total);

        let freqAdjuster = document.createElement("div");
        freqAdjuster.className="freq-adjuster";
        freqAdjuster.innerHTML=`
            <div>
                <span class="freq-label">点赞频率(ms):</span>
                <input type="number" class="freq-input" value="100" min="1" max="500">
            </div>
            <label class="auto-like-option">
                <input type="checkbox" class="auto-like-checkbox">
                <span>默认自动点赞</span>
            </label>
        `;
        freqAdjuster.style.display = 'none';
        page.append(freqAdjuster);

        var timeBox;
        let totalNum = 0;
        let likeFrequency = 100; // 从50改为100
        let num = document.getElementsByClassName('kolento-all')[0];
        console.log('num',num);
        num.innerHTML=totalNum;

        let target = document.getElementsByClassName('LO5TGkc0')

        // 简化hover事件监听
        kolento.addEventListener('mouseenter', function() {
            freqAdjuster.style.display = 'flex';
        });

        kolento.addEventListener('mouseleave', function(e) {
            setTimeout(() => {
                if (!freqAdjuster.matches(':hover')) {
                    freqAdjuster.style.display = 'none';
                }
            }, 100);
        });

        freqAdjuster.addEventListener('mouseenter', function() {
            freqAdjuster.style.display = 'flex';
        });

        freqAdjuster.addEventListener('mouseleave', function() {
            freqAdjuster.style.display = 'none';
        });

        // 修改频率更新监听
        document.querySelector('.freq-input').addEventListener('change', function(e) {
            let value = parseInt(e.target.value);
            if (value <= 0) {
                value = 100;
                this.value = 100;
            } else if (value > 500) {
                value = 500;
                this.value = 500;
            }
            likeFrequency = value;
            // 只有在当前正在点赞的状态下才重新设置定时器
            if (timeBox && kolento.innerHTML.indexOf('停止') > -1) {
                clearInterval(timeBox);
                timeBox = setInterval(() => {
                    totalNum++;
                    num.innerHTML=totalNum;
                    target[0].click();
                }, likeFrequency);
            }
        });

        kolento.onclick=function(){
            if(kolento.innerHTML.indexOf('开始')>-1){
                console.log('执行点赞脚本')
                kolento.innerHTML='停止<br/>点赞'
                timeBox = setInterval(()=>{
                    totalNum++;
                    num.innerHTML=totalNum;
                    target[0].click();
                }, likeFrequency);
            }else{
                console.log('停止点赞');
                clearInterval(timeBox);
                kolento.innerHTML='开始<br/>点赞'
            }
        }

        // 获取复选框元素
        const autoLikeCheckbox = document.querySelector('.auto-like-checkbox');

        // 从localStorage获取设置,如果没有则默认为true
        const autoLikeEnabled = localStorage.getItem('autoLikeEnabled');
        const shouldAutoLike = autoLikeEnabled === null ? true : autoLikeEnabled === 'true';

        // 设置复选框初始状态
        autoLikeCheckbox.checked = shouldAutoLike;

        // 如果启用了自动点赞,自动开始点赞
        if (shouldAutoLike) {
            kolento.innerHTML = '停止<br/>点赞';
            timeBox = setInterval(() => {
                totalNum++;
                num.innerHTML = totalNum;
                target[0].click();
            }, likeFrequency);
        }

        // 监听复选框变化
        autoLikeCheckbox.addEventListener('change', function(e) {
            localStorage.setItem('autoLikeEnabled', e.target.checked);
        });
})();