/[swish]/trunk/spider/progspider
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/spider/progspider

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 63 by dpavlin, Fri Feb 6 13:29:39 2004 UTC revision 81 by dpavlin, Sat Aug 28 22:15:59 2004 UTC
# Line 1  Line 1 
1  #!/usr/local/bin/perl -w  #!/usr/bin/perl -w
2  use strict;  use strict;
3  use File::Find;  use File::Find;
4  use Getopt::Long;  use Getopt::Long;
# Line 25  require "$basedir/filter.pm"; Line 25  require "$basedir/filter.pm";
25    
26  my $pdftotext = which('pdftotext');  my $pdftotext = which('pdftotext');
27    
28    select(STDERR); $|=1;
29    select(STDOUT); $|=1;
30    
31  print STDERR "using $pdftotext to convert pdf into html\n" if ($pdftotext && $verbose);  print STDERR "using $pdftotext to convert pdf into html\n" if ($pdftotext && $verbose);
32    
33  find({ wanted => \&file,  find({ wanted => \&file,
# Line 32  find({ wanted => \&file, Line 35  find({ wanted => \&file,
35          no_chdir => 1          no_chdir => 1
36  }, $dir);  }, $dir);
37    
38    sub dump_contents($$$) {
39            my ($contents,$mtime,$path) = @_;
40    
41            return if (! $contents);        # don't die on empty files
42    
43            use bytes;
44            my $size = length $contents;
45    
46            print STDERR " [$size]" if ($verbose);
47    
48            # Output the document (to swish)
49            print <<EOF;
50    Path-Name: $path
51    Content-Length: $size
52    Last-Mtime: $mtime
53    Document-Type: html*
54    
55    EOF
56            print $contents;
57    
58    }
59    
60  sub file {  sub file {
61    
62          my $path = $_;          my $path = $_;
# Line 41  sub file { Line 66  sub file {
66    
67                  print STDERR "$path {converting}" if ($verbose);                  print STDERR "$path {converting}" if ($verbose);
68    
69                  open(F,"$pdftotext -htmlmeta $path - |") || die "can't open $pdftotext with '$path'";                  open(F,"$pdftotext -htmlmeta \"$path\" - |") || die "can't open $pdftotext with '$path'";
70                  my $html;                  my $html;
71                  while(<F>) {                  while(<F>) {
72                          # XXX why pdftotext barks if I try to use this is beyond me.                          # XXX why pdftotext barks if I try to use this is beyond me.
# Line 51  sub file { Line 76  sub file {
76                  }                  }
77                  close(F);                  close(F);
78    
79                  $contents = "<!-- html from $path -->\n$html\n";                  return if (! $html);
80    
81                    my ($pre_html,$pages,$post_html) = ('<html><head><title>$path :: page ##page_nr##</title></head><body><pre>',$html,'</pre></body></html>');
82    
83                    ($pre_html,$pages,$post_html) = ($1,$2,$3) if ($html =~ m/^(<html>.+?<pre>)(.+)(<\/pre>.+?)$/si);
84    
85                    if ($collection) {
86                            $pre_html =~ s/<title>(.+?)<\/title>/<title>$collection :: page ##page_nr##<\/title>/si;
87                    } else {
88                            $pre_html =~ s/<title>(.+?)<\/title>/<title>$1 :: page ##page_nr##<\/title>/si;
89                    }
90    
91                    my $page_nr = 1;
92                    foreach my $page (split(/\f/s,$pages)) {
93                            print STDERR " $page_nr" if ($verbose);
94                            my $pre_tmp = $pre_html;
95                            $pre_tmp =~ s/##page_nr##/$page_nr<\/title>/s;
96                            dump_contents($pre_tmp . $page . $post_html,time(), $path) if ($page !~ m/^\s*$/s);
97                            $page_nr++;
98                    }
99    
100          } else {          } else {
101    
102                  return if (! -f $path || ! m/\.html*$/i);                  return if (! -f $path || ! m/\.(html*|php|pl|txt|info|log|text)$/i);
103    
104                  # skip index files                  # skip index files
105                  return if (m/index_[a-z]\.html*/i || m/index_symbol\.html*/i);                  return if (m/index_[a-z]\.html*/i || m/index_symbol\.html*/i);
# Line 68  sub file { Line 112  sub file {
112                  $contents .= "\n\n";                  $contents .= "\n\n";
113    
114                  $contents = filter($contents,$collection);                  $contents = filter($contents,$collection);
         }  
   
 #       die "zero size content in '$path'" if (! $contents);  
         return if (! $contents);        # don't die on empty files  
   
         my $mtime = time;  
         use bytes;  
         my $size = length $contents;  
   
         print STDERR " [$size]\n" if ($verbose);  
115    
116          # add optional components to path                  # add optional components to path
117          $path .= " $path_add" if ($path_add);                  $path .= " $path_add" if ($path_add);
118    
119          # Output the document (to swish)                  dump_contents($contents,time(), $path);
120          print <<EOF;          }
 Path-Name: $path  
 Content-Length: $size  
 Last-Mtime: $mtime  
 Document-Type: HTML  
121    
122  EOF          print STDERR "\n" if ($verbose);
123          print $contents;  #       die "zero size content in '$path'" if (! $contents);
124    
125  }  }
126    

Legend:
Removed from v.63  
changed lines
  Added in v.81

  ViewVC Help
Powered by ViewVC 1.1.26