mirror of
https://github.com/shufflewzc/faker2.git
synced 2025-04-20 03:48:04 +08:00
134 lines
4.6 KiB
TypeScript
134 lines
4.6 KiB
TypeScript
/**
|
|
* 京东快递更新通知
|
|
* cron: 0 0-23/4 * * *
|
|
*/
|
|
|
|
import * as path from "path"
|
|
import {sendNotify} from './sendNotify'
|
|
import {existsSync, mkdirSync, readFileSync, writeFileSync} from "fs"
|
|
import USER_AGENT, {get, requireConfig, exceptCookie, wait, o2s} from "./TS_USER_AGENTS"
|
|
import {pushplus} from "./utils/pushplus";
|
|
|
|
let cookie: string = '', UserName: string, allMessage: string = '', res: any = ''
|
|
|
|
!(async () => {
|
|
let cookiesArr: string[] = await requireConfig()
|
|
let except: string[] = exceptCookie(path.basename(__filename))
|
|
let orders: any = {}, pushplusArr: { pt_pin: string, pushplus: string }[], pushplusUser: string[] = []
|
|
try {
|
|
pushplusArr = JSON.parse(readFileSync('./utils/account.json').toString())
|
|
} catch (e) {
|
|
console.log('utils/account.json load failed')
|
|
}
|
|
for (let user of pushplusArr) {
|
|
if (user.pushplus)
|
|
pushplusUser.push(decodeURIComponent(user.pt_pin))
|
|
}
|
|
if (existsSync('./json')) {
|
|
if (existsSync('./json/jd_track.json')) {
|
|
orders = JSON.parse(readFileSync('./json/jd_track.json').toString() || '{}')
|
|
} else {
|
|
writeFileSync('./json/jd_track.json', '{}')
|
|
}
|
|
} else {
|
|
mkdirSync('./json')
|
|
writeFileSync('./json/jd_track.json', '{}')
|
|
}
|
|
for (let [index, value] of cookiesArr.entries()) {
|
|
cookie = value
|
|
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
|
|
console.log(`\n开始【京东账号${index + 1}】${UserName}\n`)
|
|
|
|
if (except.includes(encodeURIComponent(UserName))) {
|
|
console.log('已设置跳过')
|
|
continue
|
|
}
|
|
|
|
let message: string = '', markdown: string = '', i: number = 1
|
|
|
|
let headers: object = {
|
|
'authority': 'wq.jd.com',
|
|
'user-agent': USER_AGENT,
|
|
'referer': 'https://wqs.jd.com/',
|
|
'cookie': cookie
|
|
}
|
|
|
|
res = await get(`https://wq.jd.com/bases/orderlist/list?order_type=2&start_page=1&last_page=0&page_size=10&callersource=mainorder&t=${Date.now()}&sceneval=2&_=${Date.now()}&sceneval=2`, headers)
|
|
await wait(1000)
|
|
|
|
for (let order of res.orderList) {
|
|
let orderId: string = order.orderId
|
|
let orderType: string = order.orderType
|
|
let title: string = order.productList[0].title
|
|
let t: string = order.progressInfo?.tip || null
|
|
let status: string = order.progressInfo?.content || null
|
|
let shopName: string = order.shopInfo.shopName
|
|
|
|
res = await get(`https://wq.jd.com/bases/wuliudetail/dealloglist?deal_id=${orderId}&orderstate=15&ordertype=${orderType}&t=${Date.now()}&sceneval=2`, headers)
|
|
await wait(1000)
|
|
let carrier: string = res.carrier, carriageId: string = res.carriageId
|
|
|
|
if (t && status) {
|
|
if (status.match(/(?=签收|已取走|已暂存)/))
|
|
continue
|
|
if (!pushplusUser.includes(UserName)) {
|
|
console.log(`<${shopName}>\t${title}`)
|
|
console.log('\t', t, status)
|
|
console.log()
|
|
} else {
|
|
console.log('隐私保护,不显示日志')
|
|
}
|
|
if (!Object.keys(orders).includes(orderId) || orders[orderId]['status'] !== status) {
|
|
if (pushplusUser.includes(UserName)) {
|
|
console.log('+ pushplus')
|
|
markdown += `${i++}. ${title}\n\t- ${carrier} ${carriageId}\n\t- ${t} ${status}\n`
|
|
} else {
|
|
console.log('+ sendNotify')
|
|
message += `<${shopName}>\t${title}\n${carrier} ${carriageId}\n${t} ${status}\n\n`
|
|
}
|
|
}
|
|
orders[orderId] = {
|
|
user: UserName, shopName, title, t, status, carrier, carriageId
|
|
}
|
|
}
|
|
}
|
|
|
|
if (message) {
|
|
message = `【京东账号${index + 1}】 ${UserName}\n\n${message}`
|
|
allMessage += message
|
|
}
|
|
if (markdown) {
|
|
markdown = `#### <${UserName}>\n${markdown}`
|
|
await pushplus('京东快递更新', markdown, 'markdown')
|
|
}
|
|
await wait(1000)
|
|
}
|
|
|
|
|
|
let account: { pt_pin: string, remarks: string }[] = []
|
|
try {
|
|
account = JSON.parse(readFileSync('./utils/account.json').toString())
|
|
} catch (e) {
|
|
console.log('utils/account.json load failed')
|
|
}
|
|
|
|
// 删除已签收
|
|
Object.keys(orders).map(key => {
|
|
if (orders[key].status.match(/(?=签收|已取走|已暂存)/)) {
|
|
delete orders[key]
|
|
}
|
|
if (pushplusUser.includes(orders[key].user)) {
|
|
orders[key].title = '******'
|
|
}
|
|
})
|
|
|
|
// 替换通知中的用户名为备注
|
|
orders = JSON.stringify(orders, null, 2)
|
|
for (let acc of account) {
|
|
orders = orders.replace(new RegExp(decodeURIComponent(acc.pt_pin), 'g'), acc.remarks ?? acc.pt_pin)
|
|
}
|
|
writeFileSync('./json/jd_track.json', orders)
|
|
if (allMessage)
|
|
await sendNotify('京东快递更新', allMessage)
|
|
})()
|