Greasy Fork

Greasy Fork is available in English.

淘宝搜索页自动勾选排序筛选

自动按照你想要的设置排序,省去了点点点和刷新的烦人操作,支持自动勾选双十一与设置价格区间

当前为 2016-11-12 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         淘宝搜索页自动勾选排序筛选
// @namespace    https://coding.net/u/BackRunner/p/GreaseMonkey-JS/git
// @version      1.2
// @description  自动按照你想要的设置排序,省去了点点点和刷新的烦人操作,支持自动勾选双十一与设置价格区间
// @author       BackRunner
// @include      *://s.taobao.com/search?*
// @grant        unsafeWindow
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_info
// @license      MIT
// ==/UserScript==

// ========================
//         更新日志
// ========================
// 2016.11.12 - 1.2
// 去除双十一相关代码
// 添加变量的储存检测(设置脚本的方式扔为手动修改代码)
// ========================
// 2016.11.5 - 1.1
// 更新一些新的可自动勾选的选项
// 更严格的判断条件
// 修改默认设置
// ========================
//          Tips
// ========================
// 请在详细阅读脚本描述和代码内的注释后使用本脚本
// 请根据脚本内的注释并根据您的自身需求进行相应的修改
// 请勿修改功能区和主执行区内的代码
// 请不要修改脚本加载位置,保持默认
// 本脚本仅在进入搜索页/手动刷新搜索页时执行,执行后页面搜索页会刷新一次
// ========================
(function() {
    //=======================
    //      变量定义区
    //=======================
    var baoyou = false;
    var sale = false;
    var renqi = false;
    var credit = false;
    var priceasc = false;
    var tmall = false;
    var reserveprice = false;
    var zhengpin = false;
    var huodaofukuan = false;
    var yunfeixian = false;

    //存储变量相关
    var s_value = "检测到变量更改:\n";
    var isValueChanged = false;
    //=======================
    //以下变量请您根据需要修改
    //排序功能只能开启一个
    //开启请将等号后面的值改为true,关闭请改为false
    //=======================
    //自动勾选包邮(默认开启)
    var addbaoyou = true;
    //自动勾选按销量排序(默认开启)
    var addsale = true;
    //自动勾选按人气排序(默认关闭)
    var addrenqi = false;
    //自动勾选按信用排序(默认关闭)
    var addcredit = false;
    //自动勾选按价格从低到高排序(默认关闭)
    var addpriceasc = false;
    //自动勾选天猫(默认关闭)
    var addtmall = false;
    //自动勾选正品保障(默认关闭)
    var addzhengpin = false;
    //自动勾选货到付款(默认关闭)
    var addhuodaofukuan = false;
    //自动勾选赠送运费险(默认关闭)
    var addyunfeixian = false;

    //自动设置价格区间(默认关闭),开启请照注释修改后面两个变量
    var addreserveprice = false;
    //请将等号后的数值修改为价格下限
    var lowestprice = 0;
    //请将等号后的数值修改为价格上限
    var highestprice = 0;
    //=======================
    //       主执行区
    //=======================
    //避免二次弹出对话框
    if (GM_getValue("lastLocaiton") !== window.location.href){
        console.warn('淘宝搜索页商品自动排序 by BackRunner : 正在检查用户设置');
        checkValue();  
    }
    console.warn('淘宝搜索页商品自动排序 by BackRunner : 正在执行');
    splitURL();
    modURL();
    //惰性
    console.warn('淘宝搜索页商品自动排序 by BackRunner : 正在执行惰性脚本');
    window.onload=function(){
        splitURL();
        modURL();          
    };
    //=======================

    //=======================
    //        功能区
    //======================= 
    function splitURL(){
        var url = location.search.toString();
        var part = url.split('&');
        for (var i=0;i<part.length;i++){
            judge(part[i]);
        }
    }
    function judge(string){
        if (string.indexOf('baoyou=1') != -1){
            baoyou = true;
        }
        if (string.indexOf('sale-desc') != -1){
            sale = true;
        }
        if (string.indexOf('renqi-desc') != -1){
            renqi = true;
        }
        if (string.indexOf('credit-desc') != -1){
            credit = true;
        }
        if (string.indexOf('price-asc') != -1){
            priceasc = true;
        }
        if (string.indexOf('filter_tianmao=tianmao') != -1){
            tmall = true;
        }
        if (string.indexOf('reserve_price') != -1){
            tmall = true;
        }
        if (string.indexOf('user_type=1') != -1){
            zhengpin = true;
        }
        if (string.indexOf('support_cod=1') != -1){
            huodaofukuan = true;
        }
        if (string.indexOf('auction_tag%5B%5D=385') != -1){
            yunfeixian = true;
        }
    }
    function modURL(){
        var search = location.search;
        //判断
        if (!baoyou){
            if (addbaoyou){
                search += '&baoyou=1';
            }
        }
        if (!sale){
            if (addsale){
                search += '&sort=sale-desc';
            }
        }
        if (!renqi){
            if (addrenqi){
                search += '&sort=renqi-desc';
            }
        }
        if (!credit){
            if (addcredit){
                search += '&sort=credit-desc';
            }
        }
        if (!priceasc){
            if (addpriceasc){
                search += '&sort=price-asc';
            }
        }
        if (!tmall){
            if (addtmall){
                search += '&filter_tianmao=tmall';
            }
        }
        if (!zhengpin){
            if (addzhengpin){
                search += '&user_type=1';
            }
        }
        if (!huodaofukuan){
            if (addhuodaofukuan){
                search += '&support_cod=1';
            }
        }
        if (!yunfeixian){
            if (addyunfeixian){
                search += '&auction_tag%5B%5D=385';
            }
        }
        if (!reserveprice){
            if (addreserveprice){
                if (highestprice >= lowestprice){
                    search += '&filter=reserve_price%5B'+ lowestprice + '%2C' + highestprice + '%5D';
                }
            }
        }

        //执行
        if (search !== location.search){
            location.search = search;
            GM_setValue ("lastLocation",window.location.href);
        }
    }
    //检查存储的变量
    function checkValue(){
        var version = GM_getValue("version");
        var isUpdated = false;
        if (version !== GM_info.script.version){
            if (version === undefined){
                version = "未知";
            }
            s_value = "脚本版本已经从 " + version + " 更改为 " + GM_info.script.version+"\n\n";
            isUpdated = true;
            GM_setValue("version",GM_info.script.version);            
        }
        valueProcess("addbaoyou",addbaoyou);
        valueProcess("addsale",addsale);
        valueProcess("addrenqi",addrenqi);
        valueProcess("addcredit",addcredit);
        valueProcess("addtmall",addtmall);
        valueProcess("addzhengpin",addzhengpin);
        valueProcess("addyunfeixian",addyunfeixian);
        if (isValueChanged){
            if (isUpdated){
                s_value += "\n点击确定则将使用默认设置\n点击取消后请您手动编辑脚本还原设置";
            } else {
                s_value += "\n点击确定使用当前设置覆盖储存的设置\n点击取消后请您手动编辑脚本还原设置";
            }
            if (window.confirm(s_value)){
                replaceStored();
            }
        } else {
            if (isUpdated){
                s_value += "\n您将继续使用默认设置\n";
                window.alert(s_value);
            }
        }
    }
    //储存变量处理
    function valueProcess(key,variable){
        var value = GM_getValue(key,variable);
        var isBool = false;
        var isNum = false;
        var type;
        var current;
        var stored;
        switch (key){
            case "addbaoyou":
                type = "自动勾选包邮";
                isBool = true;
                break;
            case "addsale":
                type = "自动勾选按销量排序";
                isBool = true;
                break;
            case "addrenqi":
                type = "自动勾选按人气排序";
                isBool = true;
                break;
            case "addcredit":
                type = "自动勾选按信用排序";
                isBool = true;
                break;
            case "addpriceasc":
                type = "自动勾选按价格从低到高排序";
                isBool = true;
                break;
            case "addtmall":
                type = "自动勾选天猫";
                isBool = true;
                break;
            case "addzhengpin":
                type = "自动勾选正品保障";
                isBool = true;
                break;
            case "addhuodaofukuan":
                type = "自动勾选货到付款";
                isBool = true;
                break;
            case "addyunfeixian":
                type = "自动勾选运费险";
                isBool = true;
                break;
            case "addreserveprice":
                type = "自动添加价格区间";
                isBool = true;
                break;
            case "lowestprice":
                type = "价格区间最低价";
                isNum = true;
                break;
            case "highestprice":
                type = "价格区间最高价";
                isNum = true;
                break;
        }
        if (isBool){
            if (variable){
                current = "开启";
            } else {
                current = "关闭";
            }
            if (value){
                stored = "开启";
            } else {
                stored = "关闭";
            }
            if (value === undefined){
                isValueChanged = true;
                s_value += type+" 未检测到,已自动储存设置为:" + current + "\n";
            } else {
                if (value !== variable){
                    isValueChanged = true;
                    s_value += type + " 设置改变,当前设置为:"+current+",原设置为:"+stored+"\n";
                }
            }
        }
        if (isNum){
            if (value === undefined){
                isValueChanged = true;
                s_value += type+" 未检测到,已自动储存设置为:" + variable + "\n";
            } else {
                if (value !== variable){
                    isValueChanged = true;
                    s_value += type + " 设置改变,当前设置为:"+variable+",原设置为:"+value+"\n";
                }
            }
        }
    }
    //覆盖储存
    function replaceStored(){
        GM_setValue("addbaoyou",addbaoyou);
        GM_setValue("addsale",addsale);
        GM_setValue("addrenqi",addrenqi);
        GM_setValue("addcredit",addcredit);
        GM_setValue("addtmall",addtmall);
        GM_setValue("addzhengpin",addzhengpin);
        GM_setValue("addyunfeixian",addyunfeixian);
        GM_setValue("addreserveprice",addreserveprice);
        GM_setValue("lowestprice",lowestprice);
        GM_setValue("highestprice",highestprice);
    }
    //=======================
})();