]> git.mxchange.org Git - flightgear.git/blob - scripts/perl/web/mkindex.pl
Updates.
[flightgear.git] / scripts / perl / web / mkindex.pl
1 #!/usr/bin/perl
2
3 #
4 # adapted from a script by Bob Hain, 11/30/99
5 #
6
7 #
8 # default values
9 #
10
11 $outfile = "new.index.html";
12
13
14 #
15 # process arguments
16 #
17
18 $use_large = 1;
19 while ( $arg = shift @ARGV ) {
20     if ( $arg eq "--large" ) {
21         $use_large = 1;
22     }
23     if ( $arg eq "--outfile" ) {
24         $outfile = shift @ARGV;
25     }
26 }
27
28
29 #
30 # Generate all images
31 #
32
33 $src = "Source";
34 $ldir = "Large";
35 $sdir = "Small";
36 $mdir = "Movies";
37
38 $columns = 3;
39
40 $wwidth = 170;
41 $sheight = 128;
42
43 $lwidth = 1024;
44 $lheight = 768;
45
46
47 #
48 # Make sure directories exist
49 #
50
51 if ( ! -e $ldir ) {
52     mkdir $ldir, 0755;
53 }
54
55 if ( ! -e $sdir ) {
56     mkdir $sdir, 0755;
57 }
58
59 # return 1 if file1 is newer than rile2
60 sub is_newer {
61     my($file1, $file2) = @_;
62     # print " - $file1 - $file2 - \n";
63
64     ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime1, 
65      $ctime, $blksize, $blocks) = stat($file1);
66     ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime2, 
67      $ctime, $blksize, $blocks) = stat($file2);
68
69     if ( $mtime1 > $mtime2 ) {
70         return 1;
71     } else {
72         return 0;
73     }
74 }
75
76
77 #
78 # Make images (both large and small)
79 #
80
81 @FILES = `ls $src/*.jpg $src/*.JPG $src/*.gif`;
82
83 foreach $file ( @FILES ) {
84     chop $file;
85     $file =~ s/$src\///;
86
87     if ( is_newer( "$src/$file", "$ldir/$file" ) || ! -e "$ldir/$file" ) {
88         print "Updating $ldir/$file\n";
89         system("cp -f $src/$file $ldir");
90         system("mogrify -geometry $lwidth" . "X" .
91                "$lheight -interlace LINE -quality 80 $ldir/$file");
92     }
93
94     if ( is_newer( "$ldir/$file", "$sdir/$file" ) || ! -e "$sdir/$file" ) {
95         print "Updating $sdir/$file\n";
96         system("cp -f $ldir/$file $sdir");
97         system("mogrify -geometry $swidth" . "X" . 
98                "$sheight -interlace LINE -quality 80 $sdir/$file");
99     }
100 }
101
102
103 #
104 # Check for large and small images to remove
105 #
106
107 @FILES = `ls $ldir`;
108 foreach $file ( @FILES ) {
109     chop($file);
110     # print "$file\n";
111     if ( ! -f "$src/$file" ) {
112         print "No matching src file - deleting large image $file ...\n";
113         unlink( "$ldir/$file" );
114     }
115 }
116
117 @FILES = `ls $sdir`;
118 foreach $file ( @FILES ) {
119     chop($file);
120     if ( ! -f "$src/$file" ) {
121         print "No matching src file - deleting small image $file ...\n";
122         unlink( "$sdir/$file" );
123     }
124 }
125
126
127 #
128 # Build image list (for next/previous/first/last links)
129 #
130
131 open( MASTER, "<master.idx" );
132
133 @imagelist = ();
134
135 while ( <MASTER> ) {
136     chop;
137     if ( m/\.jpg$/ || m/\.JPG$/ || m/\.gif$/ ) {
138         push @imagelist, $_;
139     } else {
140         # just ignore everything else
141     }
142 }
143
144 close( MASTER );
145
146
147 #
148 # Prepair $link subdirectory
149 #
150
151 $link = "Link";
152 system("rm -rf $link");
153 mkdir $link, 0755;
154
155
156 #
157 # Assemble index.html
158 #
159
160 $dir = `pwd`;
161 chop($dir);
162 $title = `basename $dir`;
163 chop($title);
164
165 open( MASTER, "<master.idx" );
166 open( OUT, ">$outfile" );
167
168 $j = 1;
169 $in_table = 0;
170
171 while ( <MASTER> ) {
172     chop;
173     if ( m/^#/ ) {
174         # ignore comments
175     } elsif ( m/\.txt$/ ) {
176         # insert text
177
178         if ( $in_table ) {
179             $in_table = 0;
180             print OUT "</TR>\n";
181             print OUT "</TABLE>\n";
182         }
183
184         $file = $_;
185         open( IN, "<$src/$file" );
186         while ( <IN> ) {
187             print OUT $_;
188         }
189         close( IN );
190         print OUT "<P>\n";
191         $j = 1;
192         $in_table = 0;
193     } elsif ( m/\.jpg$/ || m/\.JPG$/ || m/\.gif$/ ) {
194         # insert image in 3 wide tables
195
196         $in_table = 1;
197         $file = $_;
198
199         $i = `basename $file`;
200         chop($i);
201
202         if ( $j == 1 ) {
203             print OUT "<!-- Begin Row -->\n";
204             print OUT "<TABLE ALIGN=CENTER>\n";
205             print OUT "<TR VALIGN=TOP>\n";
206         }
207
208         if ( $i =~ m/\.jpg$/ ) {
209             $linkname = `basename $i .jpg`;
210         } elsif ( $i =~ m/\.JPG$/ ) {
211             $linkname = `basename $i .JPG`;
212         } else {
213             $linkname = `basename $i .gif`;
214         }
215         chop($linkname);
216         # print OUT "<TD WIDTH=220 HEIGHT=160>\n";
217         print OUT "<TD WIDTH=$swidth HEIGHT=$sheight>\n";
218
219         $thumbinfo = `identify $sdir/$i`;
220         ($name, $type, $geom, $junk) = split(/\s+/, $thumbinfo, 4);
221         ($twidth, $theight) = split(/x/, $geom);
222         $theight =~ s/\+.*$//;
223
224         print OUT "<A HREF=\"$link/$linkname.html\">";
225         print OUT "<IMG WIDTH=$twidth HEIGHT=$theight SRC=\"$sdir/$i\" ALT=\"$linkname\">";
226         print OUT "</A>\n";
227
228         if ( -f "$src/$linkname.txt" ) {
229             if ( $twidth < $swidth ) {
230                 print OUT "<BR>\n";
231             }
232             print OUT "<FONT SIZE=-1 id=\"fgfs\">\n";
233             open( IN, "<$src/$linkname.txt" );
234             while ( <IN> ) {
235                 print OUT $_;
236             }
237             close( IN );
238             print OUT "</FONT>\n";
239         } else {
240             if ( $twidth < $swidth ) {
241                 print OUT "<BR>\n";
242             }
243             print OUT "<FONT SIZE=-1 id=\"fgfs\">\n";
244             print OUT "$linkname\n";
245             print OUT "</FONT>\n";
246         }
247
248         print OUT "</TD>\n";
249
250         if ( $j == $columns ) {
251             $in_table = 0;
252             print OUT "</TR>\n";
253             print OUT "</TABLE>\n";
254         }
255
256         if ( ++$j > $columns ) {
257             $j = 1;
258         }
259     } elsif ( m/\.AVI$/ || m/\.mpg$/ || m/\.mov$/ ) {
260         # insert image in 3 wide tables
261
262         $in_table = 1;
263         $file = $_;
264
265         $i = `basename $file`;
266         chop($i);
267
268         if ( $j == 1 ) {
269             print OUT "<!-- Begin Row -->\n";
270             print OUT "<TABLE ALIGN=CENTER>\n";
271             print OUT "<TR VALIGN=TOP>\n";
272         }
273
274         if ( $i =~ m/\.AVI$/ ) {
275             $linkname = `basename $i .AVI`;
276         } elsif ( $i =~ m/\.mpg$/ ) {
277             $linkname = `basename $i .mpg`;
278         } elsif ( $i =~ m/\.mov$/ ) {
279             $linkname = `basename $i .mov`;
280         } else {
281             die "unknown movie type\n";
282         }
283         chop($linkname);
284         # print OUT "<TD WIDTH=220 HEIGHT=160>\n";
285         print OUT "<TD WIDTH=$swidth HEIGHT=$sheight>\n";
286
287         $thumbinfo = `identify $mdir/$linkname.jpg`;
288         ($name, $type, $geom, $junk) = split(/\s+/, $thumbinfo, 4);
289         $geom =~ s/\+.*//;
290         ($twidth, $theight) = split(/x/, $geom);
291         print "movie thumb geom = $geom  $twidth  $theight\n";
292
293         print OUT "<A HREF=\"$mdir/$i\">";
294         print OUT "<IMG WIDTH=$twidth HEIGHT=$theight SRC=\"$mdir/$linkname.jpg\" ALT=\"$linkname\">";
295         print OUT "</A>\n";
296
297         if ( -f "$mdir/$linkname.txt" ) {
298             if ( $twidth < $swidth ) {
299                 print OUT "<BR>\n";
300             }
301             print OUT "<FONT SIZE=-1 id=\"fgfs\">\n";
302             open( IN, "<$mdir/$linkname.txt" );
303             while ( <IN> ) {
304                 print OUT $_;
305             }
306             close( IN );
307             print OUT "</FONT>\n";
308         } else {
309             if ( $twidth < $swidth ) {
310                 print OUT "<BR>\n";
311             }
312             print OUT "<FONT SIZE=-1 id=\"fgfs\">\n";
313             print OUT "$linkname\n";
314             print OUT "</FONT>\n";
315         }
316
317         print OUT "</TD>\n";
318
319         if ( $j == $columns ) {
320             $in_table = 0;
321             print OUT "</TR>\n";
322             print OUT "</TABLE>\n";
323         }
324
325         if ( ++$j > $columns ) {
326             $j = 1;
327         }
328     } else {
329         # just pass along the rest as is
330
331         $j = 1;
332
333         if ( $in_table ) {
334             $in_table = 0;
335             print OUT "</TR>\n";
336             print OUT "</TABLE>\n";
337         }
338         print OUT "$_\n";
339     }
340 }
341
342
343 #
344 # Generate Links
345 #
346
347 # @FILES = `ls $src/*.jpg $src/*.JPG $src/*.gif`;
348
349 $first = $imagelist[0];
350 if ( $first =~ m/\.jpg$/ ) {
351     # print "  ext = jpg\n";
352     $firstname = `basename $first .jpg`;
353 } elsif ( $first =~ m/\.JPG$/ ) {
354     # print "  ext = JPG\n";
355     $firstname = `basename $first .JPG`;
356 } else {
357     # print "  ext = gif\n";
358     $firstname = `basename $first .gif`;
359 }
360 chop($firstname);
361
362 $last = $imagelist[$#imagelist];
363 if ( $last =~ m/\.jpg$/ ) {
364     # print "  ext = jpg\n";
365     $lastname = `basename $last .jpg`;
366 } elsif ( $last =~ m/\.JPG$/ ) {
367     # print "  ext = JPG\n";
368     $lastname = `basename $last .JPG`;
369 } else {
370     # print "  ext = gif\n";
371     $lastname = `basename $last .gif`;
372 }
373 chop($lastname);
374
375 for ($i = 0; $i <= $#imagelist; $i++) {
376     $file = $imagelist[$i];
377     # print "'$file'\n";
378
379     if ( $i > 0 ) {
380         $prev = $imagelist[$i - 1];
381     } else {
382         $prev = "null";
383     }
384
385     if ( $i < $#imagelist ) {
386         $next = $imagelist[$i + 1];
387     } else {
388         $next = "null";
389     }
390
391     if ( $file =~ m/\.jpg$/ ) {
392         $linkname = `basename $file .jpg`;
393         $ext = "jpg";
394     } elsif ( $file =~ m/\.JPG$/ ) {
395         $linkname = `basename $file .JPG`;
396         $ext = "JPG";
397     } else {
398         $linkname = `basename $file .gif`;
399         $ext = "gif";
400     }
401     chop($linkname);
402     $nice_name = $linkname;
403     $nice_name =~ s/\_/ /g;
404
405     if ( $prev =~ m/\.jpg$/ ) {
406         # print "  ext = jpg\n";
407         $prevname = `basename $prev .jpg`;
408     } elsif ( $prev =~ m/\.JPG$/ ) {
409         # print "  ext = JPG\n";
410         $prevname = `basename $prev .JPG`;
411     } else {
412         # print "  ext = gif\n";
413         $prevname = `basename $prev .gif`;
414     }
415     chop($prevname);
416     
417     if ( $next =~ m/\.jpg$/ ) {
418         $nextname = `basename $next .jpg`;
419     } elsif ( $next =~ m/\.JPG$/ ) {
420         $nextname = `basename $next .JPG`;
421     } else {
422         $nextname = `basename $next .gif`;
423     }
424     chop($nextname);
425     
426     $outfile = "$link/$linkname.html";
427
428     open( OUT, ">$outfile" );
429     print OUT <<EOF;
430
431 <HTML>
432
433 <HEAD>
434   <TITLE>$linkname.$ext</TITLE>
435 </HEAD>
436
437 <!-- <BODY BGCOLOR="#000000" ALINK="#000000" VLINK="#000000" LINK="#000000" TEXT="#FFFFFF"> -->
438 <BODY>
439
440 <A HREF="$firstname.html">[First]</A>
441 EOF
442
443     if ( $prevname ne "null" ) {
444         print OUT "<A HREF=\"$prevname.html\">[Previous]</A>\n";
445     } else {
446         print OUT "[Previous]\n";
447     }
448
449     if ( $nextname ne "null" ) {
450         print OUT "<A HREF=\"$nextname.html\">[Next]</A>\n";
451     } else {
452         print OUT "[Next]\n";
453     }
454
455     print OUT <<EOF;
456 <A HREF="$lastname.html">[Last]</A>
457
458 <TABLE ALIGN=CENTER>
459   <TR>
460   <TD ALIGN=CENTER>
461   <FONT SIZE=+1>
462   $nice_name
463   </FONT>
464   </TD>
465   </TR>
466
467   <TR>
468   <TD ALIGN=CENTER>
469   <FONT SIZE=-1>
470 EOF
471
472     if ( -f "$src/$linkname.txt" ) {
473         # print OUT "<BR>\n";
474         open( IN, "<$src/$linkname.txt" );
475         while ( <IN> ) {
476             print OUT $_;
477         }
478         close( IN );
479     }
480
481     print OUT <<EOF;
482   </FONT>
483   </TD>
484   </TR>
485  
486 </TABLE>
487
488 Click on the image for the full size version.
489  
490 <TABLE ALIGN=CENTER>
491   <TR>
492   <TD ALIGN=CENTER>
493   <A HREF="../$src/$linkname.$ext">
494 EOF
495
496     if ( $use_large ) {
497         print OUT "  <IMG SRC=\"../$ldir/$linkname.$ext\">\n";
498     } else {
499         print OUT "  <IMG SRC=\"../$src/$linkname.$ext\">\n";
500     }
501
502     print OUT <<EOF;
503   </TD>
504   </A>
505   </TR>
506 </TABLE>
507
508 </BODY>
509 </HTML>
510 EOF
511
512     close( OUT );
513 }
514