3 ###APPAUTHOR: xiaoranzzz
4 ###APPDATE: Fri Sep 28 12:31:18 2007
6 ###APPDESC: Download URLS,using simdo
7 ###APPUSAGE: [OPTIONS...] [Task Name]
8 ###APPEXAMPLE: cat url.lst | batchget
9 ###APPOPTION: -m:Max number of simultanous tasks|-n:Task name|-a:Auto rename|-d:Create directories|-e:extension name for autorename|-w:Working directory|-r:Refer URL|-h:Display this text|-b:cookie|-L:Logging programe|-i:Auto rename by index
12 use lib
$ENV{XR_PERL_MODULE_DIR
};
15 #BEGIN {srand(time());}
18 getopts
('hm:n:ade:w:r:L:b:i',\
%opts);
19 exit(system("formathelp",$0,"-n")) if($opts{"h"});
22 my $createdir = $opts{"d"} ?
$opts{"d"} : 0;
23 my $muldown = $opts{"m"} ?
$opts{"m"} : $def_mul;
24 my $taskname = $opts{"n"} ?
$opts{"n"} : "";
25 my $autoname = $opts{"a"} ?
$opts{"a"} : 0;
26 my $extname = $opts{"e"} ?
$opts{"e"} : "";
27 my $workdir = $opts{"w"} ?
$opts{"w"} : "";
28 my $refer = $opts{"r"} ?
$opts{"r"} : "";
29 my $logger = $opts{"L"} ?
$opts{"L"} : "";
30 my $cookie = $opts{"b"} ?
$opts{"b"} : "";
31 my $number = $opts{"i"} ?
$opts{"i"} : "";
32 $autoname="true" if($number);
34 $taskname = shift unless($taskname and @ARGV);
35 $taskname = "" unless($taskname);
36 $muldown = 1 if( $muldown<1);
39 mkdir $workdir unless(-d
$workdir);
40 $workdir .= "/" unless($workdir =~ /\
/$/);
50 # print STDERR ("\r$count URLS enqueued... ");
53 exit 0 unless($count);
60 my $max = 10000000000;
61 my $n1 = int (rand($max));
62 my $n2 = log($max / $n1)/log(10);
63 my $result=$n1 . "0"x
$n2 . $ext;
64 return $result unless(-f
$result);
65 return Uniqname
($ext);
67 sub GetFilename_Auto
{
72 #($ext=$URL) =~ s/^.*\.([^\.]*)$/.$1/ unless($ext);
73 #$result=$num ? "$num$ext" : Uniqname($ext);
75 $result =~ s/^.*:\/\///;
80 $dirname =~ s/^.*:\/*[^\/]*\
///;
81 $dirname =~ s/\/[^\/]*//;
82 $dirname .= "/" if($dirname);
83 $result = $dirname . $result;
87 sub GetFilename_NoAuto
{
90 $result =~ s/^.*:\/*[^\/]*\
///;
98 sub pushArgPair
(\@
$$) {
104 push @
{$DARG},$value;
109 system("mkcookie '$cookie' >download.cookie");
110 $cookie="download.cookie";
114 my @DARGS=("-c","-u","-nb","-nf","-lc",10,"-ll",5,"-U","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)","-Tc",20,"-t",2);#,"-Tl",15,"-Tc",20);
115 push @DARGS,"-P",$workdir if($workdir);
116 #open FO,"|-","puf",@DARGS,"-i","-" or die("$!\n");
117 print STDERR
"Batchget enqueuing tasks...\n";
118 foreach my $URL(@URLS) {
120 my $curname= $taskname ?
"[$taskname $index/$count]" : "[$index/$count]";
121 my $stridx = "0" x
(length($count)-length($index)+1) . $index if($number);
122 my $filename= $autoname ? GetFilename_Auto
($URL,$stridx) : GetFilename_NoAuto
($URL);
123 print STDERR
"\renqueue $curname : $URL";
125 # print FO "$URL\n" if($URL);
128 print STDERR
"Batchget starting download(puf used)...\n",$workdir ?
"$workdir>\n" : "";