BetsAPIodds

将所有跳转到比赛页面的链接替换成365盘口走势链接,显示365每一个盘口的持续时间和升跌,移除所有滚球走势。

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         BetsAPIodds
// @namespace    http://dol.freevar.com/
// @version      0.1
// @description  将所有跳转到比赛页面的链接替换成365盘口走势链接,显示365每一个盘口的持续时间和升跌,移除所有滚球走势。
// @author       Dolphin
// @run-at       document-idle
// @match        https://cn.betsapi.com/*
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    function processTables() {
        const tables = document.querySelectorAll('table.table-sm');
        tables.forEach((table, tableIndex) => {
            // 移除第一个单元格不为空的行
            Array.from(table.querySelectorAll('tr')).forEach(tr => {
                const firstTd = tr.querySelector('td:first-child');
                if (firstTd && firstTd.textContent.trim() !== '') tr.remove();
            });

            // 处理时间差
            const trs = Array.from(table.querySelectorAll('tr'));
            for (let i = 0; i < trs.length - 1; i++) {
                const currentTr = trs[i];
                const nextTr = trs[i + 1];
                const currentDt = currentTr.querySelector('[data-dt]').dataset.dt;
                const nextDt = nextTr.querySelector('[data-dt]').dataset.dt;

                const diffMs = new Date(currentDt) - new Date(nextDt);
                const days = Math.floor(diffMs / 864e5);
                const hours = Math.floor((diffMs % 864e5) / 36e5);
                const minutes = Math.round((diffMs % 36e5) / 6e4);

                let timeStr = [];
                if (days > 0) timeStr.push(`${days}日`);
                if (hours > 0 || days > 0) timeStr.push(`${hours}时`);
                timeStr.push(`${minutes}分`);

                nextTr.querySelector('td:nth-child(2)').textContent = timeStr.join('');
            }

            // 处理第二个表格的颜色
            if (tableIndex === 1) {
                const colorTrs = Array.from(table.querySelectorAll('tr'));
                for (let i = 0; i < colorTrs.length - 1; i++) {
                    const currentTr = colorTrs[i];
                    const nextTr = colorTrs[i + 1];
                    const currentTd3 = currentTr.children[2];
                    const nextTd3 = nextTr.children[2];
                    const currentTd5 = currentTr.children[4];
                    const nextTd5 = nextTr.children[4];

                    // 处理第三列
                    const val3 = parseFloat(currentTd3.textContent);
                    const nextVal3 = parseFloat(nextTd3.textContent);
                    if (val3 > nextVal3) currentTd3.style.backgroundColor = '#fcc';
                    else if (val3 < nextVal3) currentTd3.style.backgroundColor = '#cfc';

                    // 处理第五列
                    const val5 = parseFloat(currentTd5.textContent);
                    const nextVal5 = parseFloat(nextTd5.textContent);
                    if (val5 > nextVal5) currentTd5.style.backgroundColor = '#fcc';
                    else if (val5 < nextVal5) currentTd5.style.backgroundColor = '#cfc';
                }
            }
        });
    }

    if (location.pathname.includes('/rs/bet365/'))processTables();

    if (location.pathname.includes('/ciz/soccer') || location.pathname.includes('/ce/soccer') || location.pathname.includes('/cs/soccer') || location.pathname.includes('/l/')) {
        const links = document.getElementsByTagName('a');
        // 遍历每个a标签
        for (let link of links) {
            let href = link.getAttribute('href');
            // 检查href是否存在且以'/r/'开头
            if (href && href.startsWith('/r/')) {
                // 替换路径中的'/r/'为'/rs/bet365/'
                const newHref = href.replace('/r/', '/rs/bet365/');
                link.setAttribute('href', newHref);
            }
        }
    }
})();