查快递的包又来啦xto - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XadillaX
V2EX    Node.js

查快递的包又来啦xto

  •  
  •   XadillaX 2015-02-02 16:03:50 +08:00 6253 次点击
    这是一个创建于 3909 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好久之前发过的包,不过那个时候初学 node,包括回调设计、API 设计方面都是乱来的。

    最近想把最近初学 node 的时候不科学的包重新理一遍,就从这个 `xto` 入手了。

    首先是包的 Repo 地址:

    > https://github.com/XadillaX/xto

    ## 安装

    安装很简单,直接

    ```sh
    $ npm install xto --save
    ```

    就好了。

    > 为什么叫 XTO 呢?因为咱国内的很多快递都叫**x通**,然后英文名都叫 `zto`、`gto`、`sto` 等,于是我这个包就叫 `xto` 了。

    ## 使用

    直接 `require` 进来调用 `query` 方法即可。

    ```Javascript
    var xto = require("xto");

    xto.query(NUMBER, COMPANY_NAME, function(err, express) {
    //... Do something
    });
    ```

    > `NUMBER` 就是运单号,然后 `COMPANY_NAME` 是快递公司名、短名以及公司标识其中之一。对照表在[这里](https://github.com/XadillaX/xto#companies-supported)。

    然后 `callback` 的 `express` 对象的格式结构大概是:

    ```json
    {
    "message": "ok",
    "nu": "1000****4443",
    "ischeck": "1",
    "com": "yuantong",
    "updatetime": "2015-02-02 15:57:18",
    "status": "200",
    "condition": "F00",
    "data": [
    {
    "time": "2014-11-06 18:32:19",
    "location": "",
    "context": "浙江省宁波市科技园区公司 已签收",
    "ftime": "2014-11-06 18:32:19"
    },
    {
    "time": "2014-11-06 09:14:58",
    "location": "",
    "context": "浙江省宁波市科技园区公司 派件中",
    "ftime": "2014-11-06 09:14:58"
    },
    {
    "time": "2014-11-06 09:04:52",
    "location": "",
    "context": "浙江省宁波市科技园区公司 已收入",
    "ftime": "2014-11-06 09:04:52"
    },
    {
    "time": "2014-11-06 05:31:40",
    "location": "",
    "context": "宁波转运中心公司 已发出",
    "ftime": "2014-11-06 05:31:40"
    },
    {
    "time": "2014-11-06 05:16:43",
    "location": "",
    "context": "宁波转运中心公司 已收入",
    "ftime": "2014-11-06 05:16:43"
    },
    {
    "time": "2014-11-06 00:21:40",
    "location": "",
    "context": "杭州转运中心公司 已打包",
    "ftime": "2014-11-06 00:21:40"
    },
    {
    "time": "2014-11-06 00:20:37",
    "location": "",
    "context": "杭州转运中心公司 已收入",
    "ftime": "2014-11-06 00:20:37"
    },
    {
    "time": "2014-11-05 20:35:27",
    "location": "",
    "context": "浙江省杭州市文三路公司 已收件",
    "ftime": "2014-11-05 20:35:27"
    }
    ],
    "state": "3"
    }
    ```

    其中 `"state"` 字段是快递状态,可以通过 `xto.stateToText` 进行转化成可读的中文状态,比如 `3` 转化后就是 `"已签收"`。

    ## 其它

    XTO 目前支持 446 家快递公司的查询,具体的快递公司已在上方连接中列出。
    21 条回复    2015-02-03 01:14:12 +08:00
    program2000
        1
    program2000  
       2015-02-02 16:21:32 +08:00
    楼主加油,这东西听起来不错
    binux
        2
    binux/strong>  
       2015-02-02 16:23:35 +08:00
    这种有时效性的包,放在包管理器里好吗?
    typcn
        3
    typcn  
       2015-02-02 16:30:57 +08:00
    @binux 放哪都无所谓吧,装的人也会看更新时间的
    而且又不只是作者更新,也许有“热心网友”帮忙更新
    XadillaX
        4
    XadillaX  
    OP
       2015-02-02 16:34:08 +08:00
    @binux 这个是我 13 年写的(没记错的话

    反正一直到现在没有失效过,我重写只是因为代码太 2 了,于是用现在的能力不改变太多的情况下修改了一遍。
    XadillaX
        5
    XadillaX  
    OP
       2015-02-02 16:34:31 +08:00
    @binux 期间我一直有更新快递公司库。
    qiukun
        6
    qiukun  
       2015-02-02 16:41:28 +08:00 via Android
    Orz
    XadillaX
        7
    XadillaX  
    OP
       2015-02-02 16:43:40 +08:00
    @qiukun 哎唷,好久不见。
    f0rger
        8
    f0rger  
       2015-02-02 16:45:14 +08:00
    果然是kuaidi100的link
    xiashali
        9
    xiashali  
       2015-02-02 16:47:14 +08:00 via Android
    宁波人啊,这里小港的
    run2
        10
    run2  
       2015-02-02 16:48:25 +08:00
    快递100的API wrapper?
    从http://baidu.kuaidi100.com/query 采集?
    XadillaX
        11
    XadillaX  
    OP
       2015-02-02 17:00:19 +08:00
    @xiashali 啊咧?不是已经改成杭州了么
    dgsrz
        12
    dgsrz  
       2015-02-02 18:04:30 +08:00
    Orz
    akfish
        13
    akfish  
       2015-02-02 18:21:10 +08:00
    建议加个命令行脚本,然后install时-g,查快递时就可以
    ```
    xto 快递单号
    ```
    XadillaX
        14
    XadillaX  
    OP
       2015-02-02 19:01:09 +08:00
    @akfish 这个可以有。
    xiashali
        15
    xiashali  
       2015-02-02 19:14:55 +08:00 via Android
    @XadillaX 快递信息
    XadillaX
        16
    XadillaX  
    OP
       2015-02-02 19:16:05 +08:00
    @xiashali 哦,这个不是我的信息。
    invite
        17
    invite  
       2015-02-02 21:38:24 +08:00
    LZ 自己直接从官网搞吧.
    ETiV
        18
    ETiV  
       2015-02-02 21:40:18 +08:00
    帖子太长没细看...

    能做成 快递100 那种, 输入单号自动解析出快递公司么?
    XadillaX
        19
    XadillaX  
    OP
       2015-02-02 23:21:58 +08:00 via Android
    @ETiV 几乎每个公司的 object 都有个单号的正则,你自己可以遍历去 test。
    akfish
        20
    akfish  
       2015-02-02 23:48:17 +08:00   1
    @XadillaX

    根据下图的逻辑:


    接下来@ETiV 是不是应该说:
    sudo 能做成 快递100 那种, 输入单号自动解析出快递公司么?
    ETiV
        21
    ETiV  
       2015-02-03 01:14:12 +08:00
    @akfish 这么用法不对啊...

    应该去银行:

    sudo give me 9,999,999 dollars now
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2734 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:52 PVG 22:52 LAX 07:52 JFK 10:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86