UNPKG

rsshub

Version:
73 lines (65 loc) 2.46 kB
import { Route } from '@/types'; import utils from './utils'; export const route: Route = { path: '/track/:number/:id/:phone?', categories: ['other'], example: '/kuaidi100/track/shunfeng/SF1007896781640/0383', parameters: { number: '快递公司代号', id: '订单号', phone: '手机号后四位(仅顺丰)' }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, name: '快递订单追踪', maintainers: ['NeverBehave'], handler, description: `快递公司代号如果不能确定,可通过下方快递列表获得。 ::: warning 1. 构造链接前请确认所有参数正确:错误\`快递公司 - 订单号\`组合将会缓存信息一小段时间防止产生无用查询 2. 正常查询的订单在未签收状态下不会被缓存:请控制查询频率 3. 订单完成后请尽快取消订阅,避免资源浪费 :::`, }; async function handler(ctx) { // number is shorthand for company // id is ticket number // phone for shunfeng :) const { number, id, phone } = ctx.req.param(); // I am doing these to avoid invaild request. // First, check if code is vaild const { status, message, company } = await utils.checkCode(number, id, phone); let data; let query; const time = new Date().toString(); if (status) { query = await utils.getQuery(number, id, phone); data = query.status === '200' ? query.data : [ { context: query.message, time, }, ]; } else { throw new Error(`[本地]信息有误,请检查后重试:${message}`); } // Maybe we can look into isCheck, condition, and state :) // But I just want to make it work for now. return { title: `快递 ${company.name}-${id}`, link: 'https://www.kuaidi100.com', description: `快递 ${company.name}-${id}`, item: data.map((item) => ({ title: item.context, description: item.context, guid: new Date(item.time || item.ftime).toUTCString(), pubDate: new Date(item.time || item.ftime).toUTCString(), link: 'https://www.kuaidi100.com', })), }; }