2021/01/03 追記
queue
が自分で打っててめんどうだったのでls
に変えました
というわけでクロネコヤマトから情報を取ってくるツールを書きました。kuronekocatという名前です。
ほしかったthinkpadが届くまでひたすらクロネコヤマトの追跡ページをリロードしてたのでツールにしました。完全に自分が使う様です。
クロネコヤマトの追跡をするコマンドかいた pic.twitter.com/76ya6yfcPA
— 八雲アナグラ (@AnaTofuZ) 2020年12月29日
いますぐ
brewからとりましょう!!
$brew install anatofuz/kuronekocat/kuronekocat
使い方
基本的にはkuronekocat get <追跡番号>
で情報が見れます。
+ikoma+anatofuz$ kuronekocat get 301905465514 +--------------+---+------------+-------+-------+------------------------+--------------+ | 伝票番号 | # | 荷物状況 | 日 付 | 時 刻 | 担当店名 | 担当店コード | +--------------+---+------------+-------+-------+------------------------+--------------+ | 301905465514 | ↓ | 荷物受付 | 12/28 | 18:50 | 新東京法人営業支店 | 036600 | + +---+------------+-------+-------+------------------------+--------------+ | | ↓ | 発送 | 12/28 | 18:50 | 新東京法人営業支店 | 036600 | + +---+------------+-------+-------+------------------------+--------------+ | | ↓ | 作業店通過 | 12/28 | 20:53 | 羽田クロノゲートベース | 032990 | + +---+------------+-------+-------+------------------------+--------------+ | | ↓ | 作業店通過 | 12/29 | 04:05 | 羽田空港ベース店 | 419990 | + +---+------------+-------+-------+------------------------+--------------+ | | □ | 配達完了 | 12/30 | 11:17 | 中城センター | 098161 | +--------------+---+------------+-------+-------+------------------------+--------------+
伝票番号いちいち覚えてられないので、add
でキューに追加できます。
追加時はオプションとして説明文をexplain
に続いて入力できます。
$kuronekocat add --number 301905465514 --explain thinkpad
キューの一覧はqueue
で確認できます。
$ kuronekocat queue +--------------+--------------+ | 品物 | 追跡番号 | +--------------+--------------+ | 624158714325 | 624158714325 | | thinkpad | 301905465514 | +--------------+--------------+
キューに入ってるものはgetコマンドから打ちで表示されます。
+ikoma+anatofuz$ kuronekocat get +--------------+--------------+---+----------------------------+-------+-------+----------------------------------+--------------+ | 品物 | 伝票番号 | # | 荷物状況 | 日 付 | 時 刻 | 担当店名 | 担当店コード | +--------------+--------------+---+----------------------------+-------+-------+----------------------------------+--------------+ | 624158714325 | 624158714325 | ↓ | 発送 | 12/28 | 16:21 | 長田センター | 098123 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | ↓ | 陸・海上切替え | 12/28 | 16:37 | 長田センター | 098123 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | ↓ | 依頼受付(日・時間帯変更) | 12/28 | 19:13 | 新宮城主管支店 サービスセンター | 113005 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | □ | 陸・海上切替え | 12/29 | 22:37 | 沖縄ベース | 098990 | +--------------+--------------+---+----------------------------+-------+-------+----------------------------------+--------------+ | thinkpad | 301905465514 | ↓ | 荷物受付 | 12/28 | 18:50 | 新東京法人営業支店 | 036600 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | ↓ | 発送 | 12/28 | 18:50 | 新東京法人営業支店 | 036600 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | ↓ | 作業店通過 | 12/28 | 20:53 | 羽田クロノゲートベース | 032990 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | ↓ | 作業店通過 | 12/29 | 04:05 | 羽田空港ベース店 | 419990 | + + +---+----------------------------+-------+-------+----------------------------------+--------------+ | | | □ | 配達完了 | 12/30 | 11:17 | 中城センター | 098161 | +--------------+--------------+---+----------------------------+-------+-------+----------------------------------+--------------+
受け取った場合はreceive
でキューから消します。伝票番号でも商品名でもokです。
+ikoma+anatofuz$ kuronekocat queue +--------------+--------------+ | 品物 | 追跡番号 | +--------------+--------------+ | 624158714325 | 624158714325 | | thinkpad | 301905465514 | +--------------+--------------+ $ kuronekocat receive thinkpad $ kuronekocat queue +--------------+--------------+ | 品物 | 追跡番号 | +--------------+--------------+ | 624158714325 | 624158714325 | +--------------+--------------+
くりかえし
brewにも登録しています。どうぞお使いください。
$brew install anatofuz/kuronekocat/kuronekocat
実装について
自分が作る前にあるものを使うと楽なので、GitHubを探しました。 見たところ1件それっぽいのがヒットしました。
しかしこれはpython実装となっていて、いくつかのライブラリをinstallする必要があります。 作業環境をmacOSから変更しようとしてたこともあり、シングルバイナリでの再実装を検討しました。
となってくるとRustかgolangですが、どうせHTTPを叩く必要があるのでそこまで速度も必要なさそうなので、golangを今回選択しました。 あとはCLIツールを使うならおなじみcobraを使ってエイヤで書きました。
内部は単純にクロネコヤマトの追跡ページにpostして、それをパースする感じです。 追跡ページはGoogle検索の結果出てくるページと、ヤマトのCGIのページの2種類あるのですが、前者の方はgetでいけるもののクエリパラメータによくわからんキーが入っていたので断念しました。その為素朴にpostしています。この際Shift-JisでHTMLが返ってくるので、気合でutf8に変換するなどをしています。
かなりやっつけで書いたので色々と雑な実装すが、まぁ使う分には問題ないので...
今回はGitHub releaseを使ったりhomebrewで配布をしたかったのですが、Twitterで教えてもらったgoreleaserを利用しています。かなりぱぱっと出来て便利でした。
というわけでどうぞお使いください。READMEは後ほど書きます