携帯メールで散財.com
予告通り、散財.comにメールで投稿できるようにした。
ただ、来年の2月のアップデータで携帯に対応されるらしいので、適当に作ってある。
どう適当かと言うと、品名と値段しか登録できない。添付画像ができたり、ジャンル・カテゴリが選べたりしたら楽しいとは思うけど、面倒なのでパス。
設置方法
http://howdyworld.org/junk/3zai.rb
何らかの方法で、メール受信時にこのプログラムに渡すようにする。
自分は、mailfilterで、次のようにしている。
cc "| ruby /home/mzp/3zai.rb"
自前で設置できない人や、面倒な人のために、3zai@howdyworld.orgに設置してあります。
ただ、mzpにパスワードがばれるので、あまりお勧めしません。
ソースコード
#! /opt/local/bin/ruby # -*- mode:ruby; coding:utf-8 -*- # # 3zai.rb - # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2007/12/06 21:50:32 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Ruby itself. # require 'rubygems' require 'mechanize' require 'kconv' class Sanzai def initialize(user,passwd) @agent = WWW::Mechanize.new login(user,passwd) end def login(user,passwd) page = @agent.get 'http://www.3zai.com' form = page.forms.with.name('loginForm').first form.user_id = user form.password = passwd @agent.submit form end def account(option) page = @agent.get 'http://www.3zai.com/manage/account/' form = page.forms.with.name('account_create_form').first count = form.start_item_count option.each{|key,value| form["#{key}#{count}"] = value } @agent.submit form end end def parse(lines) option = { :account_genre_seq => '11', :account_category_seq => '85' } head,body = lines.split("\n\n",2) subject = head.find{|item| item =~ /\ASubject:/i } if subject =~ /\ASubject:\s+(\S+)\s+(\S+)\Z/i username = $1 password = $2 end item,price = body.toutf8.to_a.first.split(' ',2) option[:item_name] = item option[:unit_price]= price [username,password,option] end username,password,option = parse(ARGF.read) if username == nil or password == nil then raise 'invalid username/password' end sanzai = Sanzai.new username,password sanzai.account option