UberEATS CHEAPER
(間違って記事削除してしまったので再掲してます...)
TL; DR
UberEats
でタピオカミルクティーを頼みたいのに配送料が高すぎる
配送料が安くなったタイミングを通知できるようにした
背景
私はタピオカミルクティーが好きです。正しくは、タピオカ抹茶ティーが大好きです。
口が寂しい時にタピオカミルクティーは丁度良いです。
糖分は取れるし、腹持ちいいし。
オフィスから歩いてタピオカミルクティーを買えるお店はありません。
なのでいつも UberEATSを利用させて頂いております。
しかし、いつも思うのです。
頼みたい時ってだいたい昼下がりの時間なんですけど、結構な頻度で
配送料高っっっっっっっっっっっっっ!!!!!!!!!!
と。頼むにしてはギリギリを超える手数料。
なので、配送料が安くなった時に通知してくれるプログラム作りました。
概要
Ruby
ツールです。
アクセス負荷がかからないくらいで5分おきにデータを取得し、安くなったかどうかを判断しています。
通知方法はSlack
とMac
の通知センターの2つに対応しています
(他のサービス、Windows
などは反響があれば作ろうかなと思います。)
技術的内容
selenium
で操作しながら情報を取得しています。
UberEats
では、まずブラウザにお届け先の住所のデータをCookie
で持つ必要があります。
その上で、お店の配送手数料や配送時間、そもそも配送可能かどうかが分かるようになります。
そのため、selenium
を利用しました。
一度お届け先の郵便番号を入力し、住所候補が出てきます。
出てきた住所候補をクリックしてCookie
に住所情報を保持します。
その状態でお店のページに遷移します。
そうすると、住所を元に配送手数料が表示されます。
(色々調べたら緯度・経度を元にしていました。詳しくは別記事で書こうと思います。)
html要素はcssセレクター、xpathで取得していますが、html構造が変わったらこの
ツールは使えなくなるかもしれません。ご了承くださいませ。
使い方
$ bundle exec ruby ubereats_cheaper.rb [通知方法] [郵便番号] [希望配送手数料] [UberEATSのお店のURL] [Slack webhook url オプション引数]
- 引数1 通知方法
mac
(デフォルト)・・・mac
の通知センターから通知を送ります。画面右上からぴょこっと出てきます。
slack
・・・Slack
の特定のチャンネルに通知を送ります。引数5にてslack webhook url
が必要になります。
- 引数2 郵便番号
[0-9]{6}のフォーマットで入力してください。
- 引数3 希望配送手数料
数字を入力してください。ここで入力した数字よりも配送手数料が低くなったら通知がきます。
- 引数4
UberEATS
のお店のURL
ここにはお店の個別ページのURLを入力してください。
例:https://www.ubereats.com/ja-JP/tokyo/food-delivery/%E3%82%B7-%E3%82%A2%E3%83%AC%E3%82%A4-%E6%B8%8B%E8%B0%B7246%E5%BA%97-the-alley-shibuya-246/C7X1V9lWQ5KIoPq7YYLc4A/
- 引数5
Slack
のwebhook url
https://www.sejuku.net/blog/74471
こちらを参考に、webhook url
を取得してください。一応このwebhook url
は後々削除されるとのことなので、反響があれば後々新しい方に切り替えようと思います。
コマンド例
bundle exec ruby ubereats_cheaper.rb 'slack'
1070062 1000 'https://www.ubereats.com/ja-JP/tokyo/food-delivery/%E3%82%B7-%E3%82%A2%E3%83%AC%E3%82%A4-%E6%B8%8B%E8%B0%B7246%E5%BA%97-the-alley-shibuya-246/C7X1V9lWQ5KIoPq7YYLc4A/' 'https://hooks.slack.com/services/hoge1/hoge2/hoge3'
なお、bundle exec ruby ubereats_cheaper.rb
だけで実行すると、mac
で、自分が最近よくいる南青山へ、大好きな渋谷のジ アレイ(有名なタピオカミルクティーのお店)の配送手数料が1000円(1000円より安くなることが割と少ない)よりも安くなった時に通知が来るようになっています。
インストール
- このリポジトリをcloneしてください
$ git clone git@github.com:nochiraaa/ubereats_cheaper.git
-
$ bundle install --path vendor/bundle
を実行 -
Chromeドライバをインストール。以下のURLより取得できます。
https://sites.google.com/a/chromium.org/chromedriver/downloads
もしくはHomebrewを使っている方は下記でもインストールができます。
$ brew install chromedriver
Homebrewが入っていない方はこちらから
http://brew.sh/index_ja.html
Chromeドライバのバージョンは最新のものであれば問題なく動くと思います。
動作確認はChromeDriver 76.0.3809.68 (420c9498db8ce8fcd190a954d51297672c1515d5-refs/branch-heads/3809@{#864})
で行っています。
今後の展開
シンプルな内容で作りましたが、下記の改善も検討中です!
- 配送時間にも対応する
- オススメのお店をレコメンド
- 他に安いお店をレコメンド
- 他に早く届くお店をレコメンド
- 他のプラットフォームにも対応する
- LINE@
- API的に動くようにする
- firefox, IE, Edge, Safariにも対応する
- アメリカでも使えるようにする
- seleniumを使わず処理する