您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
将所有跳转到比赛页面的链接替换成365盘口走势链接,显示365每一个盘口的持续时间和升跌,移除所有滚球走势。
// ==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); } } } })();