updated git and svn scripts
[xrzperl.git] / book_download
blob6eae01426ef3ecd1387875714e38d3421f097964
1 #!/usr/bin/perl
2 ###APPNAME: book_download.pl
3 ###APPAUTHOR: xiaoranzzz
4 ###APPDATE: Tue Mar 11 04:58:02 2008
5 ###APPVER: 0.1
6 ###APPDESC: download html using book_parser
7 ###APPUSAGE: indexURL [directory]
8 ###APPEXAMPLE: book_download http://book.sina.com.cn/nzt/lit/wodemingzijiaohong/index.shtml src
9 use strict;
10 use XML::Simple;
11 use Data::Dumper;
12 $ARGV[0]="-h" unless(@ARGV);
13 foreach(@ARGV){
14 exit(system("plhelp",$0,@ARGV)) if($_ eq "-h" || $_ eq "--help");
17 sub buildURL($$) {
18 my $base=shift;
19 my $href=shift;
20 return "$base\/$href" if($href =~ /^[^\/]/);
21 $base =~ s/(http:\/\/[^\/]*)\/.*$/\1/;
22 return "$base$href";
25 my $url=shift;
26 my $saveto=shift;
27 open FI,"-|","book_parser '$url'";
28 my $data = join("",<FI>);
29 my $book = XMLin($data,SuppressEmpty=>1,NoAttr=>1,KeyAttr=>[]);
30 close FI;
32 my $base = $url;
33 $base =~ s/\/[^\/]*$//g;
34 my $name = $url;
35 $name =~ s/\/$//g;
36 $name =~ s/^.*\///g;
39 #print Dumper($book);
40 $book->{title}=$name unless($book->{title});
42 if(!$saveto) {
43 if($book->{author}) {
44 $saveto=$book->{author} . "/" . $book->{title};
45 if(! -d $book->{author}) {mkdir $book->{author} or die("$!\n");}
47 else {
48 $saveto=$book->{title};
50 if(! -d $saveto) {mkdir $saveto or die("$!\n");}
51 $saveto .= "/src";
54 if(! -d $saveto) {
55 mkdir $saveto or die("$!\n");
57 chdir $saveto;
59 open fO,">","bookinfo.xml";
60 print fO $data;
61 close fO;
63 open fO,"|-","batchget -n '$book->{title}' -r '$url'";
64 print fO $url,"\n";
65 if($book->{pages}) {
66 for(my $i=0;$i<@{$book->{pages}};$i++) {
67 print fO buildURL($base,$book->{pages}->[$i]->{url}),"\n";
70 close fO;
71 print STDERR "Task done! Saved in $saveto\n";