2008年11月21日 00:15 [Edit]
perl - LWP::UserAgentで進捗表示しつつダウンロード
#!/usr/local/bin/perl # # $Id: lwp-callback-example.pl,v 0.1 2008/11/20 15:16:48 dankogai Exp dankogai $ # use strict; use warnings; use LWP::UserAgent; use File::Basename; my $uri = shift || die "$0 http://example.com/big.iso [filename]"; my $filename = shift || basename($uri); open my $wfh, '>', $filename or die "$filename:$!"; my $res = LWP::UserAgent->new->get( $uri, ':content_cb' => sub { my ( $chunk, $res, $proto ) = @_; print $wfh $chunk; my $size = tell $wfh; if (my $total = $res->header('Content-Length')){ printf "%d/%d (%f%%)\r", $size, $total, $size/$total*100; }else{ printf "%d/Unknown bytes\r", $size; } } ); close $wfh; print "\n", $res->status_line, "\n"; unlink $filename unless $res->is_success;
id:cho45の例よりちょっとだけ使いやすくしてみました(i.e. URIをコマンドラインから取るなど)。
Enjoy!
Dan the Perl Monger
Posted by dankogai at 00:15│Comments(0)│TrackBack(3)
この記事へのトラックバックURL
この記事へのトラックバック
LWP::UserAgentのgetメソッドの引数にコールバック関数を渡せるのを知らなかったのでメモ。
perl - LWP::UserAgentで進捗表示しつつダウンロード - 404 Blog Not Found
ついでにHTMLエンティティ化されたURLに対応させて、ActivePerlでも動くようにしました。
lwp...
Perlだけでwget【にひりずむ::しんぷる】at 2008年11月22日 17:05
HECon前の前菜に最適だったので。 404 Blog Not Found:perl - LWP::UserAgentで進捗表示しつつダウンロード というかHECon1は参加条件緩めたしまだあと10名程来れるので是非是非きて下さい。発表枠も1-2枠くらい余ってます。Shibuya.pmの前夜祭的な参加もおkす。 で、何をや...
HTTP::Engine で進捗表示しつつアップロード【YappoLogs】at 2008年11月26日 12:05
HECon前の前菜に最適だったので。 404 Blog Not Found:perl - LWP::UserAgentで進捗表示しつつダウンロード というかHECon1は参加条件緩めたしまだあと10名程来れるので是非是非きて下さい。発表枠も1-2枠くらい余ってます。Shibuya.pmの前夜祭的な参加もおkす。 で、何をや...
HTTP::Engine で進捗表示しつつアップロード【YappoLogs】at 2008年11月26日 12:06