天使之路

下注助手,一键操吴妈,一键搞老徐

当前为 2024-12-06 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         天使之路
// @version      1.1.0
// @description  下注助手,一键操吴妈,一键搞老徐
// @author       veip007
// @license      veip007
// @match        http*://*/htm_data/*/23/*
// @match        http*://*/htm_mob/*/23/*
// @grant        none
// @namespace https://greasyfork.org/users/13363
// ==/UserScript==
(function() {
    'use strict';
    // 创建并添加按钮到页面左下角
    function createButtons() {
        const buttonContainer = document.createElement('div');
        buttonContainer.style.position = 'fixed';
        buttonContainer.style.bottom = '10px';
        buttonContainer.style.left = '10px';
        buttonContainer.style.zIndex = '999';
        const settingsBtn = document.createElement('button');
        settingsBtn.textContent = '设置';
        const randomBtn = document.createElement('button');
        randomBtn.textContent = '随机';
        const highBtn = document.createElement('button');
        highBtn.textContent = '高赔';
        const lowBtn = document.createElement('button');
        lowBtn.textContent = '低赔';
        const extractBtn = document.createElement('button');
        extractBtn.textContent = '显示提取内容';
        // 隐藏提取按钮
        extractBtn.style.display = 'none';
        buttonContainer.appendChild(settingsBtn);
        buttonContainer.appendChild(randomBtn);
        buttonContainer.appendChild(highBtn);
        buttonContainer.appendChild(lowBtn);
        buttonContainer.appendChild(extractBtn);
        document.body.appendChild(buttonContainer);
        return {
            settingsBtn,
            randomBtn,
            highBtn,
            lowBtn,
            extractBtn
        };
    }
    // 提取页面中楼主发布的表格信息(通用函数,处理不同页面结构)
    function extractTableInfo() {
        const postContent = document.querySelector('.tpc_content');
        if (!postContent) {
            console.error('未找到楼主发布的内容');
            return;
        }
        const table = postContent.querySelector('table');
        if (!table) {
            console.error('未找到表格元素');
            return;
        }
        const rows = table.querySelectorAll('tr');
        const headerRow = rows[0];
        const headerCells = headerRow.querySelectorAll('td');
        const hasDrawColumn = Array.from(headerCells).some(cell => cell.textContent.includes('平局'));
        const dataRows = Array.from(rows).slice(1);
        const tableData = [];
        dataRows.forEach(row => {
            const cells = row.querySelectorAll('td');
            const rowData = [];
            if (hasDrawColumn) {
                rowData.push(cells[1].textContent.trim(), cells[2].textContent.trim(), cells[3].textContent.trim());
            } else {
                rowData.push(cells[1].textContent.trim(), cells[3].textContent.trim());
            }
            tableData.push(rowData);
        });
        console.log('提取的表格数据:', tableData);
        return tableData;
    }
    // 根据赔率比较获取对应结果(高赔、低赔),赔率相同时随机返回,考虑第三列平局情况参与计算
    function getResultByOdds(tableData, isHighOdds) {
        const result = [];
        tableData.forEach(data => {
            const homeOdds = parseFloat(data[0].match(/\[([\d.]+)\]/)[1]);
            const awayOdds = parseFloat(data[1].match(/\[([\d.]+)\]/)[1]);
            const drawOdds = 1;
            if (homeOdds * drawOdds > awayOdds * drawOdds) {
                result.push(isHighOdds? data[0] : data[1]);
            } else if (homeOdds * drawOdds < awayOdds * drawOdds) {
                result.push(isHighOdds? data[1] : data[0]);
            } else {
                result.push(Math.random() < 0.5? data[0] : data[1]);
            }
        });
        return result;
    }
    // 生成随机选择的结果(修改为随机选择多组不同队伍,处理多页面数据)
    function getRandomResult(tableData) {
        const result = [];
        const numResultsNeeded = tableData.length;
        for (let i = 0; i < numResultsNeeded; i++) {
            const data = tableData[i];
            const randomSelection = Math.random() < 0.5? 0 : 1;
            result.push(data[randomSelection]);
        }
        return result;
    }
    // 显示输出结果到左上角,点击新按钮时清除上一次结果
    function displayResult(result, prefix, betPoints) {
        // 先移除之前可能存在的结果显示 div
        const existingResultDiv = document.querySelector('.result-display');
        if (existingResultDiv) {
            existingResultDiv.remove();
        }
        const resultDiv = document.createElement('div');
        resultDiv.className ='result-display';
        resultDiv.style.position = 'fixed';
        resultDiv.style.top = '10px';
        resultDiv.style.left = '10px';
        resultDiv.style.zIndex = '999';
        resultDiv.style.backgroundColor = 'white';
        resultDiv.style.padding = '20px';
        resultDiv.style.border = '1px solid gray';
        let output = '';
        if (prefix) {
            output += `${prefix}<br>`;
        }
        for (let i = 0; i < result.length; i++) {
            output += `${i + 1}.下注球隊:${result[i]}<br>`;
        }
        output += `下注点数:${betPoints}`;
        resultDiv.innerHTML = output;
        document.body.appendChild(resultDiv);
    }
    // 创建设置弹窗
    function createSettingsPopup() {
        const popup = document.createElement('div');
        popup.style.position = 'fixed';
        popup.style.top = '50%';
        popup.style.left = '50%';
        popup.style.transform = 'translate(-50%, -50%)';
        popup.style.backgroundColor = 'white';
        popup.style.padding = '20px';
        popup.style.border = '1px solid gray';
        popup.style.zIndex = '9999';

        const prefixLabel = document.createElement('label');
        prefixLabel.textContent = '前缀:';
        const prefixInput = document.createElement('input');

        const betPointsLabel = document.createElement('label');
        betPointsLabel.textContent = '下注点数:';
        const betPointsInput = document.createElement('input');

        const saveBtn = document.createElement('button');
        saveBtn.textContent = '保存';

        const closeBtn = document.createElement('button');
        closeBtn.textContent = '关闭';

        popup.appendChild(prefixLabel);
        popup.appendChild(prefixInput);
        popup.appendChild(betPointsLabel);
        popup.appendChild(betPointsInput);
        popup.appendChild(saveBtn);
        popup.appendChild(closeBtn);

        // 添加关闭按钮的事件处理函数
        closeBtn.addEventListener('click', () => {
            popup.remove();
            settingsPopup = null;
        });

        return {
            popup,
            prefixInput,
            betPointsInput,
            saveBtn,
            closeBtn
        };
    }
    // 从本地存储读取设置参数
    function loadSettings() {
        const savedSettings = localStorage.getItem('scriptSettings');
        if (savedSettings) {
            return JSON.parse(savedSettings);
        }
        return { prefix: '', betPoints: '50' };
    }
    // 保存设置参数到本地存储
    function saveSettings(prefix, betPoints) {
        const settings = { prefix, betPoints };
        localStorage.setItem('scriptSettings', JSON.stringify(settings));
    }
    let settings = loadSettings();
    let settingsPopup;
    const {
        settingsBtn,
        randomBtn,
        highBtn,
        lowBtn,
        extractBtn
    } = createButtons();
    // 点击设置按钮显示设置弹窗
    settingsBtn.addEventListener('click', () => {
        if (!settingsPopup) {
            const { popup, prefixInput, betPointsInput, saveBtn, closeBtn } = createSettingsPopup();
            settingsPopup = { popup, prefixInput, betPointsInput, saveBtn, closeBtn };

            // 设置输入框初始值为已保存的设置
            prefixInput.value = settings.prefix;
            betPointsInput.value = settings.betPoints;
            document.body.appendChild(popup);

            // 点击保存按钮处理设置保存逻辑
            saveBtn.addEventListener('click', () => {
                settings.prefix = prefixInput.value;
                settings.betPoints = betPointsInput.value;
                saveSettings(settings.prefix, settings.betPoints);
                popup.remove();
                settingsPopup = null;
            });
        }
    });
    // 高赔按钮点击事件处理函数
    highBtn.addEventListener('click', () => {
        const tableData = extractTableInfo();
        if (tableData) {
            const result = getResultByOdds(tableData, true);
            displayResult(result, settings.prefix, settings.betPoints);
        }
    });
    // 低赔按钮点击事件处理函数
    lowBtn.addEventListener('click', () => {
        const tableData = extractTableInfo();
        if (tableData) {
            const result = getResultByOdds(tableData, false);
            displayResult(result, settings.prefix, settings.betPoints);
        }
    });
    // 随机按钮点击事件处理函数
    randomBtn.addEventListener('click', () => {
        const tableData = extractTableInfo();
        if (tableData) {
            const result = getRandomResult(tableData);
            displayResult(result, settings.prefix, settings.betPoints);
        }
    });
    // 显示提取内容按钮点击事件处理函数
    extractBtn.addEventListener('click', () => {
        const tableData = extractTableInfo();
        if (tableData) {
        const result = [];
        tableData.forEach(row => {
            result.push(...row);
        });
        displayResult(result, '', '');
        }
    });
})();