#!/usr/bin/perl -- use strict; use Getopt::Std; use vars qw/ %opt /; my $opt_string = 'd:c:'; getopts($opt_string, \%opt ); if(!$opt{d}) { die "At least, asshole, give me a dir where to search for your files"; } my ($no_columns, $no_lines); if(!$opt{c}) { $no_columns = 4; } else { $no_columns = $opt{c}; } my $no_of_files = "ls -1 $opt{d} | grep -i .*jpg | wc -l"; $no_of_files = `$no_of_files`; my $file_names_exec = "ls -1 $opt{d} | grep -i .*jpg"; my @file_names = split(/\n/, `$file_names_exec`); $no_lines = ($no_of_files % $no_columns) == 0 ? "ient($no_of_files, $no_columns) : "ient($no_of_files, $no_columns) + 1; &make_dir(&make_qualified($opt{d}, "tmb")); &make_dir(&make_qualified($opt{d}, "big")); my $counter = 0; my $i = 0; my $output_thumb; my $output_big; $output_thumb .= &build_html_header; $output_big .= &build_html_header; $output_thumb .= "\n"; $output_big .= "
\n"; while($counter < $no_of_files) { $output_thumb .= "\n"; for($i = 0; $i < $no_columns && $counter < $no_of_files; $i++, $counter++) { &make_thumb($opt{d}, $file_names[$counter], &make_qualified($opt{d}, "tmb")); $output_thumb .= &build_html_column($file_names[$counter], "tmb/" . &get_thumb_name($file_names[$counter])); &make_big($opt{d}, $file_names[$counter], &make_qualified($opt{d}, "big")); $output_big .= "\n"; $output_big .= &build_html_column_big( &get_big_name($file_names[$counter])); $output_big .= "\n"; } $output_thumb .= "\n"; } $output_thumb .= "
\n"; $output_thumb .= &put_copywright; $output_thumb .= &build_html_end; $output_big .= "\n"; $output_big .= &put_copywright; $output_big .= &build_html_end; &write_to_file(&make_qualified($opt{d}, "index.html"), $output_thumb); &write_to_file(&make_qualified($opt{d}, "big/index.html"), $output_big); sub quotient { my $n = shift; my $d = shift; my $r = $n; my $q = 0; while ($r >= $d) { $r = $r - $d; $q = $q + 1; } return $q; } sub make_qualified { my $file_dir = shift; my $file_name = shift; my $qualified; if($file_dir !~ /\/$/) { $qualified = $file_dir . "/" . $file_name; } else { $qualified = $file_dir . $file_name; } } sub get_thumb_name { my $file_name = shift; my @split_file_name = split(/\./, $file_name); $split_file_name[0] . "_tmb.jpg"; } sub get_big_name { my $file_name = shift; my @split_file_name = split(/\./, $file_name); $split_file_name[0] . "_big.jpg"; } sub make_dir { my $dir = shift; system("mkdir " . $dir) unless(-d $dir); } sub make_thumb { my $source_dir = shift; my $file_name = shift; my $target_dir = shift; my $convert_line = "convert -size 120x120 " . &make_qualified($source_dir, $file_name) . " -resize 120x120 +profile '*' " . &make_qualified($target_dir, &get_thumb_name($file_name)); system($convert_line); } sub make_big { my $source_dir = shift; my $file_name = shift; my $target_dir = shift; my $convert_line = "convert " . &make_qualified($source_dir, $file_name) . " -resize 600x600 +profile '*' " . &make_qualified($target_dir, &get_big_name($file_name)); system($convert_line); } sub build_html_column { my $file_name = shift; my $tmb_file_name = shift; my $output; $output = "\n"; } sub build_html_column_big { my $file_name = shift; my $output; $output = "\n"; } sub build_html_header { my $output; $output .= "\n"; $output .= "\n"; } sub build_html_end { my $output; $output .= "\n"; $output .= "\n"; } sub put_copywright { "
Generated with Cosmin's simple tool
"; } sub write_to_file { my $html_file_name = shift; my $output = shift; open(OUTPUT_HTML_FILE, ">$html_file_name"); print OUTPUT_HTML_FILE $output; close(OUTPUT_HTML_FILE); }