煩悩分画
: O. Yuanying

RubyCocoa でダウンローダを作ってみる その1

なんとなくRubyCocoaを勉強したくなったので前にRubyで書き捨てていた画像一括ダウンロード用のスクリプトをGUIで使えるようにしてみる。

元となったスクリプトはこれ。

(0..10).each do |i|
  page = sprintf('%3d', i)
  url = "/#{page}.jpg"
  referrer = "/#{page}.html"
  directory = '/Users/yuanying/download'
  user_agent =  'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10'
  command = "/opt/local/bin/wget #{url} --referer=#{referrer} -P #{directory} --user-agent='#{user_agent}'"
    
  `#{command}`
  sleep(3)
end

連番で指定してある画像をwgetでダウンロード。まあこのくらいcurlでやれよって話だけど、curl使ったことなかったんですよ!

仕様

開発環境

プロジェクトの作成

Xcodeを起動してプロジェクトを作成する。

rubycocoa01.png

プロジェクト名は適当。今回はPictGetとかいう名前にしてみた。

ユーザインタフェースの作成

早速ユーザインタフェースを作ってみる。

rubycocoa02.png

Cocoaではnibファイルとかいうのがユーザインタフェースを実装しているファイルらしいので、nibファイルを選択してダブルクリックしてみる。そうするとユーザインタフェースを編集するためにInterface Builderが起動する。

rubycocoa03.png

最初からすでに開かれているウィンドウにぽぽーんとパレットから部品を選んでドラッグアンドドロップしてやる。

これでユーザインタフェースは完成。ちょー簡単。

コントローラの作成

rubycocoa04.png

プロジェクトのClassesを選択して、新規ファイルを追加する。

rubycocoa05.png

作るのは Ruby NSObject subclass。ここでファイル名=クラス名なので、AppController.rbというファイル名で保存してやる。

エディタでAppController.rbを開き、以下のように編集。

require 'osx/cocoa'

class AppController < OSX::NSObject

	ib_outlet :first_page_text
	ib_outlet :last_page_text
	ib_outlet :format_text
	ib_outlet :url_text
	ib_outlet :referrer_text
	ib_outlet :user_agent_combo
	ib_outlet :path_text

	ib_action :browse do
	end
	
	ib_action :download do
	end
	
end

ib_outletで参照するコントロールを宣言。ib_actionで実際に実行するアクションを宣言する。ただし、まだこの時点ではどの宣言がどのコントロールを指すのかまだ指定していないため、その接続を具体的に指定してやる必要がある。

その2に続く