(ruby)(HTTPClientで wgetもどきを作ってみた)
まぁ あくまで ruby ないし rubygemsの勉強ということで
非常に簡単なプログラムを作ってみることにしてみました
今回は rubygems の HTTPClientを利用して
HTTPでファイルをダウンロードする ミニプログラムを作ってみます
要は wgetの超超超簡易版ですね 笑)
HTTPClientのインストールは コマンドプロンプトで
と実行するだけです
今回作ってみるツールの コマンドライン引数に必要な要素としては
第1引数:httpのアドレス
第2引数:書き出すファイル名
第3引数:バイナリモードかどうか
という事になりますよね
バイナリモードかどうかの必要性としては
圧縮ファイルや画像ファイルや実行ファイルのような バイナリファイルは
バイナリモードで書き出さないと不具合が生じますしね
ということで 実際に コーディングしてみると
例えば、 不正なアドレスを指定した場合は
サイズ0のゴミファイルが残ってしまったりします
第3引数に関しては バイナリモードじゃなければ 省略します
バイナリモードの場合だけに 第3引数に 「b」と書くだけですね
使用例
このブログのバナー を d:\get.jpg に保存します
非常に簡単なプログラムを作ってみることにしてみました
今回は rubygems の HTTPClientを利用して
HTTPでファイルをダウンロードする ミニプログラムを作ってみます
要は wgetの超超超簡易版ですね 笑)
HTTPClientのインストールは コマンドプロンプトで
gem install httpclient |
今回作ってみるツールの コマンドライン引数に必要な要素としては
第1引数:httpのアドレス
第2引数:書き出すファイル名
第3引数:バイナリモードかどうか
という事になりますよね
バイナリモードかどうかの必要性としては
圧縮ファイルや画像ファイルや実行ファイルのような バイナリファイルは
バイナリモードで書き出さないと不具合が生じますしね
ということで 実際に コーディングしてみると
#!ruby -Ks require 'httpclient' if (ARGV[0] == nil) puts("htmlのアドレスを指定してください") exit(1) end if (ARGV[1] == nil) puts("出力ファイルを指定してください") exit(1) end if (ARGV[2] == "b") accessmode = "wb" else accessmode = 'w' end hc = HTTPClient.new f = File.open(ARGV[1], accessmode) f.print(hc.get_content(ARGV[0])) f.closeあくまで 勉強のためですし 細かな エラー処理は不完全です
例えば、 不正なアドレスを指定した場合は
サイズ0のゴミファイルが残ってしまったりします
第3引数に関しては バイナリモードじゃなければ 省略します
バイナリモードの場合だけに 第3引数に 「b」と書くだけですね
使用例
gethttp.rb http://d.hatena.ne.jp/images/diary/m/morakana/titleimg.jpg d:\get.jpg b |