概要

  • 1行に1つ URL が書かれたファイルにしたがって該当ファイルをダウンロードする。
  • リストファイルがあるフォルダにダウンロードしたファイルを保存する。
  • アクセス結果を表示するよう変更。(2016-09-12)

ソース

  • fileListDownloader.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
    
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    -
    |
    -
    |
    |
    |
    |
    |
    !
    
    use strict;
    use warnings;
    use utf8;
    use Encode;
    use File::Basename;
    use File::chdir;
    use LWP::UserAgent;
    use HTTP::Request;
     
    my $charsetConsole = $^O eq 'MSWin32' ? 'CP932' : 'UTF-8';
     
    binmode( STDIN,  ":encoding($charsetConsole)" );
    binmode( STDOUT, ":encoding($charsetConsole)" );
    binmode( STDERR, ":encoding($charsetConsole)" );
     
    @ARGV = map { decode( $charsetConsole, $_ ); } @ARGV;
     
    my $charsetFile = 'UTF-8';
    my $ioLayer     = $^O eq 'MSWin32' ? "raw:encoding($charsetFile):crlf" : "encoding($charsetFile)";
    my $listFile    = $ARGV[0] or die("usage: ListDownloader <list file>\n");
    $CWD = dirname( encode( $charsetConsole, $listFile ) );
    open( my $fin, "<:$ioLayer", encode( $charsetConsole, $listFile ) )
        or die("$listFile: $!\n");
    my @lines = <$fin>;
    close($fin);
    chomp(@lines);
    my %listHash = map { $_ => 1 } @lines;
    my @list = sort( keys(%listHash) );
     
    my $ua = LWP::UserAgent->new( keep_alive => 4 );
    $ua->cookie_jar( {} );
     
    my $count = 0;
    my $max   = scalar(@list);
    foreach my $url (@list) {
        ++$count;
        $url =~ m{([^\/]+)$};
        my $filename = $1;
        print "$count/$max\t$filename\n";
        my $res
            = $ua->request( HTTP::Request->new( GET => $url ), encode( $charsetConsole, $filename ) );
        sleep(1);
    }

添付ファイル: fileListDownloader.zip 2件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sun, 14 Jan 2018 10:48:20 JST (3d)