// ==UserScript== // @name 京东秒杀价格过滤 // @version 0.2.3.6 // @icon https://www.jd.com/favicon.ico // @description 按价格过滤并排序(价格升序)秒杀商品列表 // @author You! // @grant GM_setValue // @grant GM_getValue // @match *://miaosha.jd.com/category.html?cate_id=* // @run-at document-end // @namespace http://tampermonkey.net/ // @downloadURL none // ==/UserScript== /**********************************************************/ //如果要过滤商品名,启用该函数,但是需要自己实现过滤逻辑: // pname 传入商品名 // catId 传入商品分类编号,编号代表的意义自行对照京东秒杀的页面地址 // 命中返回 true, 否侧返回 false /*在行首插入单行注释(//)以启用该商品名过滤函数 function filterPName(pname, catId) { if (catId == 30) { if (pname.match('手机')) { return true; } return false; } return true; } /**********************************************************/ (function() { //扫描页面的间隔频率时间 var timerFreq = 1000; //向页面右下角的浮动工具栏尾部追加价格过滤部件 var uiInit = function() { clearInterval(priceUI); var uiPos = $('#sk_mod_er'); if (uiPos.length > 0) { uiPos.append($( '
' )); $('#fltReload').first().click(function(){ priceMin = getFloat($('#fltPriceMin').first().val()); priceMax = getFloat($('#fltPriceMax').first().val()); setTimeout(function() { GM_setValue("jd_miaosha_price_min", priceMin); GM_setValue("jd_miaosha_price_max", priceMax); }, 0); }); } else priceUI = setInterval(uiInit, timerFreq); }; //对页面执行过滤排序操作 var doFilter = function() { clearInterval(priceFilter); var count = 0; //count += filterGoods($('div.skwrap')); //正在抢购 //count += filterGoods($('div.moregoods')); //更多好货 count += filterGoods($('div.catinfo_seckillnow')); //当天正在秒杀的商品 count += filterGoods($('div.catinfo_startsoon')); //明日秒杀的商品 if (count === 0) priceFilter = setInterval(doFilter, timerFreq); }; //对页面内的一个具体分类执行过滤排序操作 var filterGoods = function(goodsList) { var goods = goodsList.find('li.seckill_mod_goods'); if (goods.length > 0) { var niceGoods = []; goods.each(function(idx){ //按商品名过滤 if (typeof(filterPName) === 'function') { var pname = getProductName(this); if (!filterPName(pname, location.search.split(/[?&=]/)[2])) return; } //按价格过滤 var price = getPrice(this); if (price.now < priceMin || (0 < priceMax && priceMin <= priceMax && priceMax < price.now)) return; //标注优惠力度 var priceOff = price.pre - price.now; var discount = price.now / price.pre; if (discount <= 0.1) { $(this).find('div.seckill_mod_goods_info').attr('title', '1折以下(优惠'+priceOff+')').css('background-color', 'gold'); //1折以下 } else if (discount <= 0.3) { $(this).find('div.seckill_mod_goods_info').attr('title', '3折以下(优惠'+priceOff+')').css('background-color', 'springgreen'); //3折以下 } else if (discount <= 0.5) { $(this).find('div.seckill_mod_goods_info').attr('title', '5折以下(优惠'+priceOff+')').css('background-color', '#BBFFEE'); //5折以下 } else if (discount <= 0.75) { $(this).find('div.seckill_mod_goods_info').attr('title', '75折以下(优惠'+priceOff+')').css('background-color', '#CCEEFF'); //75折以下 } else if ( priceOff >= 90) { $(this).find('div.seckill_mod_goods_info').attr('title', '优惠超过90('+priceOff+')').css('background-color', '#FFEEEE'); //优惠超过90 } //命中 niceGoods.push(this); }); //排序 if (niceGoods.length > 0) { niceGoods.sort(function(g1, g2){ return getPrice(g1).now - getPrice(g2).now; //<-------------------------------------------------如果要降序,修改这里 }); //取消延迟加载 var lazyImgs = $(niceGoods).find('img[data-lazy-img!="done"]'); if (lazyImgs.length > 0) lazyImgs.each(function(idx){ var img = $(this); this.src = img.attr('data-lazy-img'); img.removeAttr('data-lazy-img'); }); } else niceGoods = $('