iTunes ConnectからSalesを取得するスクリプト
売り上げ推移を毎日記録しておきたいなぁと思ったので、iphoneアプリで稼げるのかさんで公開されているRubyスクリプトベースで、iTunes ConnectからSalesを取得するRubyスクリプトを自分用に作り直してみました。
AppSales-Mobileで見やすくiPhoneでチェックできるのですが、まぁ、自己満足みたいなものです。
特徴としては、
- 今のiTunes Connectの今(2010/01/11)の構成に対応
- リストからすべてのDaily/Weeklyのレポートをいったん取得
- ダウンロード済みのファイルと内容の差異を確認して、異なればファイルに保存
するようにしたので、毎日実行しなくても大丈夫なはず。
require 'rubygems' require 'mechanize' #################### #itunes conncetアカウント $id = 'foo' $pass = 'bar' #################### def login(agent) login_page = agent.get("https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa") login_form = login_page.forms[0] login_form['theAccountName'] = $id login_form['theAccountPW'] = $pass home = agent.submit(login_form) end def checkAndSave(filename, body) original = String.new filename i = 1 while true do if(File.exist?(filename)) then f = open filename s = f.read f.close if(s == body) then return end filename = "#{original}.#{i}" i += 1 else f = open(filename, "wb") f.write body f.close end end end def download(agent) sales_page = agent.get("https://itts.apple.com/cgi-bin/WebObjects/Piano.woa") sales_form = sales_page.forms[1] sales_form['11.9']='Summary' sales_form['11.11'] = 'Daily' sales_form['hiddenSubmitTypeName'] = 'ShowDropDown' download_page = agent.submit(sales_form) download_form = download_page.forms[1] download_form.field_with(:name => '11.13.1').options.each do |option| download_form['11.9']='Summary' download_form['11.11'] = 'Daily' download_form['11.13.1'] = option.value download_form['hiddenSubmitTypeName'] = 'Download' download_form['download'] = 'Download' filename = "#{option.text.gsub('/', '_').downcase}.txt" body = agent.submit(download_form).body checkAndSave(filename, body) end sales_page = agent.get("https://itts.apple.com/cgi-bin/WebObjects/Piano.woa") sales_form = sales_page.forms[1] sales_form['11.9']='Summary' sales_form['11.11'] = 'Weekly' sales_form['hiddenSubmitTypeName'] = 'ShowDropDown' download_page = agent.submit(sales_form) download_form = download_page.forms[1] download_form.field_with(:name => '11.15.1').options.each do |option| download_form['11.9']='Summary' download_form['11.11'] = 'Weekly' download_form['11.15.1'] = option.value download_form['hiddenSubmitTypeName'] = 'Download' download_form['download'] = 'Download' filename = "#{option.text.gsub('/', '_').downcase}.txt" body = agent.submit(download_form).body checkAndSave(filename, body) end end agent = WWW::Mechanize.new login agent download agent
$id = 'foo', $pass = 'bar'に自分のアカウントを設定し、事前に保存対象のディレクトリにcdして使ってください。また、事前にgemでMechanizeをインストールする必要があります。手元のWindows(Cygwin), Mac環境で動作しました。