[Bins] A quick and easy way of creating basic albums
Adrian Rossiter
adrian_r at teleline.es
Thu Nov 18 15:00:31 GMT 2004
Hi
I have been trying to streamline album creation and management, and
thought I would mention what I am doing in it is of interest.
I build a dirctory tree of image albums as normal, but in each album
directory I create an include_images.txt file containing a list of the
album images in the order I want them. I get bins to only consider
the images in the include_images.txt files by setting the excludeFiles
parameter in binsrc to exclude all files (.*).
I then add comment lines to the include_images.txt files which I
process with a basic Perl script (below) to set up the album. At the
beginning I add the album details, then after each image I add the
title and description. The Perl script simply calls the bins_edit
program with the various details as arguments.
This is working out reasonably well as I can easily change the
album, image text, order of images, etc just by editing one
text file.
I've included the script below (with some minimal instructions!)
Adrian.
--
Adrian Rossiter
Email: adrian_r at teleline.es
Web Site: http://www.terra.es/personal/adrian_r
Here is an example include_images.txt file for a one image album -
#Some Album Title (1 line)
#Long description of Some Album
#(can be many
#lines)
#|Short description of Some Album (starts after the pipe symbol)
#can be many lines, then put another pipe symbol and this is followed
#by the sample album image)
#|some_image.gif
some_image.gif
#Some Image Title (1 line)
#Description of Some Image
#can be many lines
#and include html <BR>
#but you may have to escape certain symbols for the command line e.g.
#<A HREF=\"http://www.somesite.com\">Some Site</A>
I call the script bins_addtext. It just takes a list of directories
where it looks for include_images.txt and processes it. You can
use a different file by passing the name with the -f option. e.g
Process include_images.txt in the current directory -
bin_addtext ./
Process album_desc.txt in directories some_album1 and some_album2
bin_addtext -f album_desc.txt some_album1 some_album2
#!/usr/bin/perl -w
sub process_file {
my ($dir, $file, $title, $desc) = @_;
chomp $desc;
#print "File: $file\n\tTitle: $title\n\tDesc: $desc\n";
#print "\n$file\n";
if($file eq "album") {
($longdesc, $shortdesc, $sample) = split /\|/, $desc;
if($sample) {
$cmd_str = "bins_edit -a -m --sample \"$sample\" $dir";
print "$cmd_str\n";
`$cmd_str`;
}
if($shortdesc) {
$cmd_str = "bins_edit -a -m --shortdesc \"$shortdesc\" $dir";
print "$cmd_str\n";
`$cmd_str`;
}
if($longdesc) {
$cmd_str = "bins_edit -a -m --longdesc \"$longdesc\" $dir";
print "$cmd_str\n";
`$cmd_str`;
}
#print "\t$cmd_str\n";
$cmd_str = "bins_edit -a -m --title \"$title\" $dir";
print "$cmd_str\n";
`$cmd_str`;
}
else {
$cmd_str = "bins_edit -m -t \"$title\" $dir/$file";
print "$cmd_str\n";
`$cmd_str`;
#print "\t$cmd_str\n";
$cmd_str = "bins_edit -m -d \"$desc\" $dir/$file";
print "$cmd_str\n";
`$cmd_str`;
#print "\t$cmd_str\n\n";
}
}
$inc_file = "include_images.txt";
for($i=0; $i<=$#ARGV; $i++) {
$dir = $ARGV[$i];
if($dir eq "-f" && $i<$#ARGV ) {
$i++;
$inc_file=$ARGV[$i];
next;
}
open(FILE, "$dir/$inc_file") or die "Could not open: $dir/$inc_file";
$title = "";
$desc = "";
$img_file = "album";
$section = 1;
while(<FILE>)
{
chomp;
$line=$_;
if(substr($line, 0 , 1) eq "") {
next;
}
if(substr($line, 0 , 1) ne "#") {
process_file($dir, $img_file, $title, $desc);
$img_file = $line;
$title = "";
$desc = "";
$section = 1;
}
else {
if ($section == 1) {
$title = substr($line, 1);
$section++;
}
elsif ($section == 2) {
$desc .= substr($line, 1)."\n";
}
}
}
if($section) {
process_file($dir, $img_file, $title, $desc);
}
close(FILE) ;
}
More information about the Bins
mailing list