2007-02-25
■ [Pragger] PRaggerだってピザを頼みたい
ですよね!
というわけで notify_demaecan.rb というプラグインを書いてみました。
Notify::Pizzaより高機能な点として、ピザのサイズが選べることが挙げられます(笑)。 例えばconfigに「size: L」のように書いておくと、Lサイズのピザの中からランダムで一つが選ばれます。 これでパーティーの際にも安心。
注意:
- テストしてません(ピザを頼む用事がなかったので)。 多分いけるとは思う。
- エラー処理が適当です。
- まだ寿司には対応してません。(対応は簡単なんだけど、失敗すると\8,000-とかかかるので危ないw)
- townという引数がありますが実装されてません。会員登録のときに住所も登録しておいてください
- 文字コードについて真面目に考えてません。出前館のWebページはSJISです
というわけで、どなたか実際に試していただけると有難いです^^;
require 'rubygems' require 'mechanize' class DemaeCan def initialize(user, pass) @user, @pass = user, pass @agent = WWW::Mechanize.new end def order(type="ピザ", size="L", town="0") #start page = @agent.get("http://demae-can.com/index.php?action=dream_login_index") #login form = page.forms.first form["id"] = @user form["pass"] = @pass page = form.submit unless page.root.to_html.include? "http://demae-can.com/search/shop_list.html\?word=0" raise ArgumentError, "login failed." end #select type page = @agent.get("http://demae-can.com/search/shop_list.html\?word=#{town}") link = page.links.find{|link| link.node.to_html.include?(type)} page = link.click #select shop link = page.links.find{|link| link.href =~ /shopcode/} page = link.click #select size forms = page.forms.find_all{|form| (form.form_node/"td.mini").find{|td| td.inner_text =~ /#{size}サイズ/} } page = forms[rand(forms.size)].submit #select number page = page.forms.first.submit #select time page = page.forms.first.submit #submit!! form = page.forms.first form["pass"] = @pass page = form.submit end end def notify_demaecan(config, data) demae = DemaeCan.new(config["user"], config["password"]) demae.order(config["type"], config["size"]) end =begin - module: notify_demaecan config: user: AABCDEF password: pAssw0rD type: ピザ size: L =end
#将来的にはgem化して
gem install demaecan
とかできると格好いい…かも。
- 149 http://www.google.com/
- 32 http://ruby.g.hatena.ne.jp/garyo/20070225/11724176...
- 18 http://www.lingr.com/room/pragger
- 18 http://ruby.g.hatena.ne.jp/garyo/?word=*[PRagger]
- 16 http://d.hatena.ne.jp/keyword/Ruby?kid=2847
- 14 http://reader.livedoor.com/reader/
- 14 http://ime.nu/mono.kmc.gr.jp/~yhara/d/?date=200702...
- 13 http://garyo.sakura.ne.jp/ruby/pragger/index.php?P...
- 13 http://b.hatena.ne.jp/t/pragger
- 8 http://ruby.g.hatena.ne.jp/garyo/
- 6 http://www.google.co.jp/search?q=pragger&lr=lang_j...
- 6 http://del.icio.us/higeorange/pragger
- 5 http://b.hatena.ne.jp/t/plagger
- 4 https://www.google.co.jp/
- 4 http://www.lingr.com/room/pragger/archives
- 4 http://search.live.com/results.aspx?q=forms
- 4 http://ruby.g.hatena.ne.jp/garyo/20070225
- 4 http://del.icio.us/hides/
- 3 http://www.google.com/reader/view/
- 3 http://www.google.co.jp/search?hl=ja&rlz=1T4GGLJ_e...
- 3 http://search.yahoo.co.jp/search?p=住所 英文変換&ei=UTF-...
- 3 http://b.hatena.ne.jp/t/pragger?sort=eid
- 3 http://b.hatena.ne.jp/add?mode=confirm&title=[Prag...
- 2 https://www.google.com/
- 2 http://www.google.co.jp/search?sourceid=navclient-...
- 2 http://www.google.co.jp/search?q=pragger ピザ&lr=lan...
- 2 http://www.google.co.jp/search?q=ピザ mechanize&lr=l...
- 2 http://www.google.co.jp/search?hl=ja&q=pragger&btn...
- 2 http://seo-cms.sub.jp/data/出前館/index.html
- 2 http://search.yahoo.co.jp/search?p=demae can&sp=1&...
- 2 http://search.yahoo.co.jp/search?p=PASS = kmc&fr=t...
- 2 http://search.yahoo.co.jp/search?p=PASS = kmc&tid=...
- 2 http://search.yahoo.co.jp/search?ei=UTF-8&fr=df-lu...
- 2 http://search.live.com/results.aspx?q=forms&mrt=en...
- 2 http://reader.livedoor.com/subscribe/http://mono.k...
- 2 http://mono.kmc.gr.jp/
- 2 http://d.hatena.ne.jp/keyword/Ruby
- 2 http://d.hatena.ne.jp/keyword/PRagger
- 2 http://b.hatena.ne.jp/keyword/root
- 2 http://b.hatena.ne.jp/keyword/BEGIN
- 2 http://b.hatena.ne.jp/entrylist?sort=hot&of=50&thr...
- 2 http://b.hatena.ne.jp/entrylist?sort=hot&of=150&th...
- 2 http://b.hatena.ne.jp/entry/4058001
- 1 http://yosshi.greenplastic.net/freshreader/feedsho...
- 1 http://www.tushu.cc/word/swatch
- 1 http://www.nofuture.tv/v/read.php?host=pc9.2ch.net...
- 1 http://www.google.pl/search?hl=pl&client=firefox-a...
- 1 http://www.google.hu/search?hl=hu&client=firefox-a...
- 1 http://www.google.fr/search?hl=fr&client=firefox-a...
- 1 http://www.google.com/url?sa=D&q=http://mono.kmc.g...
- 1 http://www.google.com/search?q=pragger ピザ 注文&sourc...
- 1 http://www.google.com/search?q=pragger&lr=lang_ja&...
- 1 http://www.google.com/search?q=pragger&ie=utf-8&oe...
- 1 http://www.google.com/search?q=pragger&hl=ja&lr=&c...
- 1 http://www.google.com/search?q=pragger&hl=ja&clien...
- 1 http://www.google.com/search?q=pragger&hl=ja&clien...
- 1 http://www.google.com/search?q=Pragger&hl=ja&lr=&s...
- 1 http://www.google.com/search?num=50&lr=lang_ja&q=P...
- 1 http://www.google.com/search?num=50&hl=ja&client=o...
- 1 http://www.google.com/search?name=f&hl=en&q=pragge...
- 1 http://www.google.com/search?hl=ja&lr=lang_ja&ie=U...
- 1 http://www.google.com/search?hl=ja&lr=lang_ja&ie=U...
- 1 http://www.google.com/search?hl=ja&lr=&ie=UTF-8&oe...
- 1 http://www.google.com/search?hl=ja&lr=&ie=UTF-8&oe...
- 1 http://www.google.com/search?hl=ja&client=safari&r...
- 1 http://www.google.com/search?hl=ja&client=safari&r...
- 1 http://www.google.com/search?client=safari&rls=ja-...
- 1 http://www.google.com/search?client=safari&rls=ja-...
- 1 http://www.google.com/search?client=safari&rls=en&...
- 1 http://www.google.com/search?client=opera&rls=ja&q...
- 1 http://www.google.com/custom?hl=ja&inlang=ja&clien...
- 1 http://www.google.com.br/search?hl=pt-BR&q=demaeca...
- 1 http://www.google.co.jp/url?sa=t&source=web&cd=12&...
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=pragger&s...
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&s...
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=ピザ頼みたい&so...
- 1 http://www.google.co.jp/url?sa=t&ct=res&cd=7&url=h...
- 1 http://www.google.co.jp/search?sourceid=navclient-...
- 1 http://www.google.co.jp/search?sourceid=navclient-...
- 1 http://www.google.co.jp/search?sourceid=navclient-...
- 1 http://www.google.co.jp/search?sourceid=chrome&ie=...
- 1 http://www.google.co.jp/search?source=ig&hl=ja&q=p...
- 1 http://www.google.co.jp/search?rlz=1C1CHMV_jaJP325...
- 1 http://www.google.co.jp/search?q=pragger to_html&l...
- 1 http://www.google.co.jp/search?q=pragger gem&lr=&i...
- 1 http://www.google.co.jp/search?q=pragger 文字コード&lr=...
- 1 http://www.google.co.jp/search?q=pragger エラー&btnG=...
- 1 http://www.google.co.jp/search?q=pragger&sourceid=...
- 1 http://www.google.co.jp/search?q=pragger&sourceid=...
- 1 http://www.google.co.jp/search?q=pragger&lr=lang_j...
- 1 http://www.google.co.jp/search?q=pragger&lr=lang_j...
- 1 http://www.google.co.jp/search?q=pragger&lr=lang_j...
- 1 http://www.google.co.jp/search?q=pragger&ie=utf-8&...
- 1 http://www.google.co.jp/search?q=pragger&ie=Shift_...
- 1 http://www.google.co.jp/search?q=pragger&hl=ja&rlz...
- 1 http://www.google.co.jp/search?q=pragger&hl=ja&lr=...
- 1 http://www.google.co.jp/search?q=pragger&hl=ja&lr=...
- 1 http://www.google.co.jp/search?q=pragger&hl=ja&cli...
- 1 http://www.google.co.jp/search?q=pragger&hl=en&saf...
- 1 http://www.google.co.jp/search?q=pragger&btnG=Goog...
次の CodeFest のときにでも是非使ってください!
おお、そんな手が…あるのか!?
だって、いつもg新部さんが電話で注文してるし...