Greasy Fork is available in English.

快手小店库

自用

Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta // @require https://update.greasyfork.org/scripts/454059/1111652/%E5%BF%AB%E6%89%8B%E5%B0%8F%E5%BA%97%E5%BA%93.js

// ==UserScript==
// @name         快手小店库
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  自用
// @author       Mr Liu
// @match        *
// @grant        none
// ==/UserScript==
 
function copy() {
    let a = ''
    for (let i = 0; i < $('.ant-select-selection__choice').length; i++) {
        let value = $('.ant-select-selection__choice').eq(i).text().replace(/[-]/g, "\t")
        a += value + '\r\n'
    }

    GM_setClipboard(a)
    alert('复制成功,共复制' + (a.split("\r\n").length - 1) + '个地区')
}

async function getUpdate() {
    const e = await fetch("https://s.kwaixiaodian.com/rest/app/tts/ks/express/template/list?offset=0&limit=20&searchUsed=true", {
        "method": "GET",
    })
    const v = await e.json()
    if (v.data.total) {
        let date = new Date(v.data.content[0].updateTime).toLocaleString().replace(/[/]/g, '-')
        return date
    }
}

function arrangement(area) {//处理手动输入的屏蔽地区
    area = area.split("\r\n")
    area = [... new Set(area)]//去重
    let adr = area.map(e => {
        let v = e.split("\t")
        return {
            province: v[0],
            city: v[1] || "",
            area: v[2] || ""
        }
    })
    // area = area.replace(/[,,.。]/g, '、')//替换标点
    // area = area.replace(/[\n\r]/g, '、')//替换换行符
    // let adr = area.split('、')//变成数组
    // adr = adr.filter(function (s) {//去空值
    //     return s && s.trim();
    // });

    // adr = adr.map(v => v.replace(/(().+())/g, ''))//去括号
    return adr
}

function getvalue(data, area) {//计算屏蔽id 返回对象{aid:包邮地区,Id:屏蔽地区}
    const code = data.map(e => e.code)
    let list = [], del_list = [];
    list = arrangement(area)
    console.log("list", list)
    console.log("data", data)
    let list1 = list.filter(e => e.area == "" && e.city == "")
    console.log("list1", list1)
    let id = []
    for (let e of list1) {
        if (data.some((v) => v.name.includes(e.province))) {
            const a = data.find(v => v.name.includes(e.province))
            id.push(a.code)
            console.log("删除", a)
            data.splice(data.indexOf(a), 1)
            del_list.push(e)
        }
    }
    if (del_list.length) {
        list = list.filter(e => !del_list.includes(e))
        del_list = []
    }
    let list2 = list.filter(e => e.area == "" && e.city != "")
    console.log("id", id)
    console.log("list1", list1)
    console.log("list", list)
    console.log("data", data)
    console.log(2222222222222222222)

    let data_children = data.map(e => e.children).flat()//把市提取出来
    console.log("data_children", data_children)
    console.log("list2", list2)
    for (let e of list2) {
        if (data_children.some(v => v.name.includes(e.city))) {
            const a = data_children.find(v => v.name.includes(e.city))
            id.push(a.code)
            console.log("删除", a)
            data_children.splice(data_children.indexOf(a), 1)
            del_list.push(e)
        }
    }
    if (del_list.length) {
        list = list.filter(e => !del_list.includes(e))
        del_list = []
    }
    let list3 = list.filter(e => e.area != "")
    console.log("id", id)
    console.log("list2", list2)
    console.log("list", list)
    console.log("data_children", data_children)

    console.log(33333333333333333)
    let data_children_children = data_children.map(e => e.children).flat()//把市提取出来
    console.log("data_children", data_children)
    console.log("list3", list3)
    for (let e of list3) {
        if (data_children_children.some(v => v.name.includes(e.area))) {
            const a = data_children_children.find(v => v.name.includes(e.area) && data.find(r => r.children.find(t => t.children.find(y => y == v))).name.includes(e.province))
            if (a) {
                id.push(a.code)
                console.log("删除", a)
                data_children_children.splice(data_children_children.indexOf(a), 1)
                del_list.push(e)
            }
        } else if (["区", "县", "市"].includes(e.area.slice(-1))) {
            const b = data.find(v => v.name.includes(e.province))
            const c = b && b.children.find(v => v.name.includes(e.city))
            const a = c && c.children.find(v => v.name.includes(e.area.slice(0, -1)))
            if (a) {
                id.push(a.code)
                console.log("删除111111111111111111", a)
                data_children_children.splice(data_children_children.indexOf(a), 1)
                del_list.push(e)
            }
        }
    }
    if (del_list.length) {
        list = list.filter(e => !del_list.includes(e))
        del_list = []
    }
    console.log("id", id)
    console.log("list3", list2)
    console.log("list", list)
    console.log("data_children_children", data_children_children)

    let aid = code.filter(e => ![...new Set(id.map(v => v.slice(0, 2)))].includes(e))
    console.log("aid", aid)

    return {
        'aid': aid,
        'Id': id,
        'adr': list
    }

}

async function save() {
    let area = prompt('输入要屏蔽的地区')
    if (area) {
        let value = getvalue(await getData(), area)
        if (!value.adr.length) {
            console.log('全部添加完成')
            if (confirm('已匹配所有地区,点击确定开始保存')) {
                go(value)
            }
        } else {
            let data = String(value.adr.map(e => e.province + "\t" + e.city + "\t" + e.area + "\r\n")).replace(/[,]/g, "")
            console.log(data)
            GM_setClipboard(data)
            if (confirm('未匹配成功的地区:\n' + data + '\n点击确定开始保存')) {
                go(value)
            }
        }

    }
    async function go(value) {
        let key = await getKey()
        let cookie = await getCookie(key)
        let detail = await get_detail(cookie, key)
        fet(cookie, key, detail, value)
    }
}