Greasy Fork 支持简体中文。

500.com 小助手

500.com足彩小助手,页面内显示交战双方历史和赔率信息,无需跳转页面,方便选择

// ==UserScript==
// @name         500.com 小助手
// @namespace    https://greasyfork.org/zh-CN/users/252532-markiiiiiiii
// @version      0.0.6
// @description  500.com足彩小助手,页面内显示交战双方历史和赔率信息,无需跳转页面,方便选择
// @author       kumits
// @match        https://trade.500.com/jczq/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=500.com
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/layer.min.js
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @run-at       document-end
// @license      MIT
// ==/UserScript==

// 移除广告层
function removeAdDiv() {
    GM_addStyle('#recommendAtionContainerID{display:none !important}'); // 移除专家推荐层
    GM_addStyle('#floatLayerContainerID{display:none !important}'); //移除浮动app下载层
    GM_addStyle('#popupContainerID{display:none !important}'); //移除遮罩顶层
}

//添加信息图标并绑定动作
function addInfoBtn(){
    //添加图标
    $('td[class="td td-team"] > div[class="team"] > span[class="team-l"]').each((k,v)=>{
        $(v).before('<i class="fa fa-info-circle" aria-hidden="true" style="color:#ff5721"></i>');
    });
   //监听图标点击动作
   $('.fa.fa-info-circle').on({
       click:function(){
        //关闭之前所有的弹窗
        layer.closeAll();
       var targetUrl = $(this).parent().parent().parent().find('.td.td-data > a:first').attr('href');
       var urlArr = getPageArray(targetUrl)
       getMatchInfo(urlArr[0])
       getLottoInfo(urlArr)

   },
       mouseover:function(){
        layer.tips('查看', $(this), {
        tips: [2,'#78BA32'],
        time:2000
    })}
     });
}

//显示低赔率比赛
function showLowOdds(){
    //清除背景图
    $('.betbtn').css('background','none');
$('.betbtn').each((k,v)=>{
   var o = $(v).find('span').text()
   switch(true){
       case(o <= 1.2):
           $(v).css({'background-color':'#711DB0','color':'#fff'});
           break;
       case(1.2< o && o <= 1.3 ):
           $(v).css({'background-color':'#C21292','color':'#fff'});
           break;
       case(1.3< o && o <= 1.4 ):
           $(v).css({'background-color':'#EF4040','color':'#fff'});
           break;
       case(1.4< o && o <= 1.5 ):
           $(v).css({'background-color':'#FFA732','color':'#fff'});
           break;
        case(1.5< o ):
           break;
   }
    })
}

//获取数据页面组
function getPageArray(pageUrlStr){
       //获取页面正则
       var pattern = /(\w+)(\.\w+)+(?!.*(\w+)(\.\w+)+)/
      //获取页面名
       var pageName = pageUrlStr.match(pattern)[0]
       //页面组
       var pageArray = ['shuju','youliao','touzhu','ouzhi','rangqiu','yazhi','daxiao','bifen','zoushi','stat']
       //url前缀
       var pageUrlPrefix = 'https://odds.500.com/fenxi/'
       var allUrlArr = []
       pageArray.map((item,index)=>{
           allUrlArr.push(pageUrlPrefix+item+'-'+pageName)
       })
    return allUrlArr
}
//获取比赛信息生成弹窗
async function getMatchInfo(urlpath){
    let matchCont = await getMatch(urlpath)
    InfoDiv('主客数据','lt',matchCont);
}
//获取欧赔,亚盘,大小球信息生成弹窗
async function getLottoInfo(urlArr) {
    let oupeiCont = await getOupei(urlArr[3])
    let yapanCont = await getYazhi(urlArr[5])
    let daxiaoCont = await getDaxiao(urlArr[6])
    lottoDatasTabDiv('rt',oupeiCont,yapanCont,daxiaoCont)
}
//获取欧赔
function getOupeiData(urlPath){
   return new Promise((resolve,reject)=>{
       GM_xmlhttpRequest({
        method: "GET",
        responseType:'blob',
        url: urlPath,
        onload: function (res) {
            let reader = new FileReader()
            reader.readAsText(res.response,"gb2312")
            reader.onload=function(e){
                let domObj= e.target.result;
               resolve(getLottoTableDiv(domObj))
            }
        }
    })
       })
}
async function getOupei(urlpath){
    return await getOupeiData(urlpath)
}
//获取亚盘
function getYazhiData(urlPath){
    return new Promise((resolve,reject)=>{
        GM_xmlhttpRequest({
        method: "GET",
        responseType:'blob',
        url: urlPath,
        onload: function (res) {
            let reader = new FileReader()
            reader.readAsText(res.response,"gb2312")
            reader.onload=function(e){
                let domObj= e.target.result;
                resolve(getLottoTableDiv(domObj))
            }
        }
    })
    })
}
async function getYazhi(urlpath){
    return await getYazhiData(urlpath)
}
//获取大小球
function getDaxiaoData(urlPath){
    return new Promise((resolve,reject)=>{
        GM_xmlhttpRequest({
        method: "GET",
        responseType:'blob',
        url: urlPath,
        onload: function (res) {
            let reader = new FileReader()
            reader.readAsText(res.response,"gb2312")
            reader.onload=function(e){
                let domObj= e.target.result;
                resolve(getLottoTableDiv(domObj))
            }
        }
    })
    })
}
async function getDaxiao(urlpath){
    return await getDaxiaoData(urlpath)
}
// 获取队伍信息
function getMatchData(urlpath) {
    return new Promise((resolve,reject)=>{
    GM_xmlhttpRequest({
        method: "GET",
        responseType:'blob',
        url: urlpath,
        onload: function (res) {
            let reader = new FileReader()
            reader.readAsText(res.response,"gb2312")
            reader.onload=function(e){
               let domObj= e.target.result;
               let tmp = historyDiv(domObj)
                tmp +=bankingDiv(domObj)
                tmp +=recordDiv(domObj)
                tmp +=integralDiv(domObj)
                resolve(tmp)
            }
        }
    })
    })
}
async function getMatch(urlpath){
    return await getMatchData(urlpath)
}
//交战历史层
function historyDiv(dom){
    var filterTabel = $(dom).find('.mar_b.history.M_box')
    filterTabel.find('.M_content>.pub_table>tbody>tr').each(
        function(index,item){
            if(index == 0){
                $(item).find('th:gt(4)').remove()
            }else{
                $(item).find('td:gt(4)').remove()
            }
        }
    );
    filterTabel.find('.M_content>.pub_table>colgroup>col:gt(4)').remove()
    filterTabel.find('.M_content_t').remove();
    filterTabel.find('.M_title>span').remove();
    return filterTabel[0].innerHTML
}

//排名层
function bankingDiv(dom){
    var homeTeamName =$(dom).find('.M_box>.M_sub_title>div:first')[0].innerText
    var awayTeamName =$(dom).find('.M_box>.M_sub_title>div:last')[0].innerText
    var homeTeamTable = $(dom).find('.M_box>.M_content>.team_a')
    homeTeamTable.find('table').wrap('<div><h4>主:'+homeTeamName+'</h4></div>');
    var awayTeamTable =$(dom).find('.M_box>.M_content>.team_b')
    awayTeamTable.find('table').wrap('<div><h4>客:'+awayTeamName+'</h4></div>');
    return $(homeTeamTable)[0].innerHTML+$(awayTeamTable)[0].innerHTML
}
//近期战绩层
function recordDiv(dom){
   var homeTeamTable = $(dom).find('.M_box.record>.odds_zj_tubiao.module_cur>.team_a>form>.M_content')
   homeTeamTable.find('.bottom_info').remove()
   homeTeamTable.find('table').wrap('<div><h4>主队战绩</h4></div>');
   var awayTeamTable = $(dom).find('.M_box.record>.odds_zj_tubiao.module_cur>.team_b>form>.M_content')
   awayTeamTable.find('.bottom_info').remove()
   awayTeamTable.find('table').wrap('<div><h4>客队战绩</h4></div>');
   return $(homeTeamTable)[0].innerHTML+$(awayTeamTable)[0].innerHTML
}

//未来赛事层
function integralDiv(dom){
   var homeTeamTable = $(dom).find('.M_box.integral>.M_content>.team_a')
   homeTeamTable.find('table').wrap('<div><h4>主队未来赛事</h4></div>');
   var awayTeamTable = $(dom).find('.M_box.integral>.M_content>.team_b')
   awayTeamTable.find('table').wrap('<div><h4>客队未来赛事</h4></div>');
   return $(homeTeamTable)[0].innerHTML+$(awayTeamTable)[0].innerHTML
}
//获取欧赔、亚盘、大小球数据层
function getLottoTableDiv(dom){
    var lottoTable = $(dom).find('.table_cont').parent()
    return $(lottoTable)[0].innerHTML
}

//左弹出层
function InfoDiv(title,offset,contents) {
    layer.open({
        type:1,
        title: title,
        offset:offset,
        shadeClose: true,
        shade: false,
        area: ['610px', '800px'],
        content: contents
    });
}
//右弹出层
function lottoDatasTabDiv(offset,cont1,cont2,cont3) {
    layer.tab({
        offset:offset,
        area: ['610px', '800px'],
        shade: false,
        tab:[{
        title:'百家欧赔',
        content: cont1
        },{
        title:'亚盘对比',
        content: cont2
        },{
        title:'大小指数',
        content: cont3
        }]
    });
}

//添加css
function addCss() {
    $(document.body).append('<link href="https://cdn.bootcdn.net/ajax/libs/layer/3.5.1/theme/default/layer.min.css" rel="stylesheet">');
    $(document.body).append('<link href="https://www.500cache.com/odds/css/odds_new.css?v=2020-10-22" rel="stylesheet">');
    $(document.body).append('<link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.2.1/css/all.min.css" rel="stylesheet">');
}

//主函数
function MainFunc() {
    addCss();
    removeAdDiv();
    addInfoBtn();
    showLowOdds();
}

MainFunc(); //主函数执行