Edited at

【配送手数料1000円なんて高すぎる!!】UberEATSで安く注文する〜全てはタピオカのために〜


UberEATS CHEAPER


TL; DR


  • UberEatsでタピオカミルクティーを頼みたい

  • 配送料が高い

  • 配送料が安いタイミングを知れるようにした

GitHub


背景

私はタピオカミルクティーが好きです。正しくは、タピオカ抹茶ティーが大好きです。

口が寂しい時にタピオカミルクティーは丁度良いです。

糖分は取れるし、腹持ちいいし。

オフィスから歩いてタピオカミルクティーを買えるお店はありません。

なのでいつも UberEATSを利用させて頂いております。

しかし、いつも思うのです。

頼みたい時ってだいたい昼下がりの時間なんですけど、結構な頻度で

配送料高っっっっっっっっっっっっっ!!!!!!!!!!

と。

なので、配送料が安くなった時に通知してくれるプログラム作りました。

demo.gif


概要

Rubyツールです。

アクセス負荷がかからないくらいで5分おきにデータを取得し、安くなったかどうかを判断しています。

通知方法はSlackMacの通知センターの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 UberEATSのお店のUberURL




  • 引数4 希望配送手数料


    • 数字を入力してください。ここで入力した数字よりも配送手数料が低くなったら通知がきます。




  • 引数5 Slackのwebhook url


    • https://www.sejuku.net/blog/74471

    • こちらを参考に、webhook urlを取得してください。一応このwebhook urlは後々削除されるとのことなので、反響があれば後々新しい方に切り替えようと思います。




コマンド例

bundle exec ruby mainubereats_cheaperrb 'slack' 

1070062 '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/'
1000 'https://hooks.slack.com/services/hoge1/hoge2/hoge3'

なお、bundle exec ruby ubereats_cheaper.rbだけで実行すると、macで、自分が最近よくいる南青山へ、大好きな渋谷のジ アレイ(有名なタピオカミルクティーのお店)の配送手数料が1000円(1000円より安くなることが割と少ない)よりも安くなった時に通知が来るようになっています。


インストール


  1. cloneしてください

    $ git clone git@github.com:nochiraaa/ubereats_cheaper.git


  2. 次にbundlerをインストールしましょう

    $ gem install bundler

    bundleを最新のバージョンにしておきましょう。

    $ bundle update

    $ bundle exec install


  3. 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@

    • Twitter



  • API的に動くようにする

  • firefox, IE, Edge, Safariにも対応する

  • アメリカでも使えるようにする


  • seleniumを使わず処理する