毎月請求書をダウンロードするのが面倒くさい
PDFの請求書を毎月毎月取りに行くのは面倒くさい。
しかも忘れやすい。送られてくるのとは違い、ログインしてクリックして、条件絞り込んでダウンロードしてPDFを取得してチェック
PDFを取得スルだけで満足しちゃう
大事なのは、PDFに書かれている内容のチェックなのに、PDFを保存しただけで満足しちゃう。
請求書PDFを保存するスクリプト作った。→softbank.rb
ファイルはGistにも起きました softbank.rb
#!/usr/bin/env ruby #coding: utf-8 require 'rubygems' if RUBY_VERSION.to_f < 1.9 require 'pp' module BillScraper class MySoftbank attr_accessor :m def initialize( id=nil, password=nil ) require 'mechanize' @m = Mechanize.new @@id = id @@password = password end def go_to_top m.get "https://my.softbank.jp/msb/d/top" end def login(id=nil,password=nil) id ||= @@id password ||= @@password m.get 'https://my.softbank.jp/msb/d/top' m.submit m.page.forms[0], m.page.forms[0].buttons[0] m.page.forms[0].fields[0].value= id m.page.forms[0].fields[1].value= password m.page.forms[0].submit end def latest_meisai @m.page.links_with( :text=>"ご請求書(内訳)の確認").first.click #リダイレクト・クッションページ @m.page.forms[0].submit #請求内訳 year_month = @m.page.search('form p.current span').text.strip #取得可能な請求書 #一括請求 button = @m.page.forms[0].buttons_with( :name=> "doPrintSbmAll").first form = @m.page.forms[0] @m.submit form, button return { "file_name"=>"ソフトバンク請求書-#{year_month}.pdf", "body"=>m.page.body} end def latest_meisai_for_this_number @m.page.links_with( :text=>"ご請求書(内訳)の確認").first.click #リダイレクト・クッションページ @m.page.forms[0].submit #請求内訳 year_month = @m.page.search('form p.current span').text.strip #取得可能な請求書 #一括請求 #button = @m.page.forms[0].buttons_with( :name=> "doPrintMsn").first #電話番号 button = @m.page.forms[0].buttons_with( :name=> "doPrintSbmAll").first form = @m.page.forms[0] @m.submit form, button return { "file_name"=>"ソフトバンク請求書-#{year_month}.pdf", "body"=>m.page.body} end end end if $0 == __FILE__ then # my_soft_bank = BillScraper::MySoftbank.new "0809999999","password" # my_soft_bank.login # ret = my_soft_bank.latest_meisai_for_this_number # open(ret["file_name"], "w"){|f| f.print ret["body"] }
実行サンプル
#!/usr/bin/env ruby #coding:utf-8 $KCODE = 'u' require 'rubygems' $:.unshift "/usr/local/lib/site_ruby/1.9.1/local/scrapers/lib/" require "scrapers" require "scrapers/softbank" my_soft_bank = BillScraper::MySoftbank.new "080xxxx","zxxxxx" my_soft_bank.login ret = my_soft_bank.latest_meisai_for_this_number # ⇐一括明細がソフトバンクのエラーででないので、表紙だけ out_path = ret["file_name"] open(ret["file_name"], "w"){|f| f.print ret["body"] } name = File.basename out_path, ".pdf" gem "mail" , "< 2.5.3 " require 'mail' options = { :address => "smtp.gmail.com", :port => 587, :user_name => 'takuya@xxxx.xxxx', :password => '****', :authentication => 'plain', :enable_starttls_auto => true } Mail.defaults do delivery_method :smtp, options end mail = Mail.new do from 'takuya@xxxx.xxx' to 'takuyaxxxx@m.evernote.com' subject "ソフトバンク料金 [#{name}] #アカウント" body "メール経由。" add_file :filename => out_path, :content => File.read(out_path) end mail.deliver! File.unlink out_path puts :end