BONNOH FRACTION 14

世の中に寝るより楽はなかりけり
浮世の馬鹿は起きて働く

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

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

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

(0..10).each do |i|
  page = sprintf('%3d', i)
  url = "http://www.fraction.jp/#{page}.jpg"
  referrer = "http://www.fraction.jp/#{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使ったことなかったんですよ!

仕様

  • 連番となっているファイルをダウンロードする。
  • ダウンロードするファイルのURLとリファラー元を偽装する際のURLを指定する。
  • ユーザエージェントを偽装する。
  • 保存先のディレクトリを指定できる。
  • 実際のダウンロードはwgetを使用する。

開発環境

  • Mac OS X 10.5.1
  • Xcode 3
  • ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0]

プロジェクトの作成

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に続く

© 2004-2011 fraction.jp & Yuanying

This website was created with Webby