Introducing FSpot::DbTool!
F-Spot is a pretty neat photo management application which comes with the Gnome desktop. I have been using it for a few years to manage my photos, and by now I have over 23,000 photos in it! It has lots of handy features: tagging, versions, dates… but there are a few things it doesn’t do so well: moving files from one location to another (not all your files, just a sub-section), compacting the database, and I’m sure some more will come to mind! The database it uses is SQLite – the perfect application for this kind of database!
I’m getting into Moose (a post-modern object system for Perl 5), so this weekend I put together a neat interface to the FSpot database: FSpot::DbTool. It comes with a command line tool fspot-tool.
Usage:
fspot-tool.pl [options]
Options:
--action
move_dir
Requires: from, to Optional: merge, rename
replace_path
Requires: from, to
find_lost
Requires: path find_orphans
clean_trailing_slashes
tag_no_description
backup_db
check_db
compact_db
--from Path from
--to Path to
--path It's a path!
--merge Do a merge
--rename Rename files if necessary
Actions:
move_dir:
Move pictures from one directory to another. Does the move on the
filesystem, and the corresponding move of the path in the FSpot database
afterwards
replace_path:
Useful if you have already moved files in your filesystem (e.g. moved
your entire photo folder to a new location. Will replace all instances
of a path with a new path
e.g.
from = /home/clarkero/my_pictures
to = /home/rcl/pictures/processed
clean_trailing_slashes:
Clean trailing slashes off the end of paths in the database
find_lost:
Find files which exist in the filesystem, but do not exist in the
database
find_orphans:
Find orphaned files (files which exist in in the database, but not on
the filesystem)
tag_no_description:
Tag all photos which do not yet have a description
check_db:
Confirms you have the correct database version for this script to work
with
backup_db:
Make a backup of the database This is carried out automatically for
move_dir, replace_path and compact_db actions.
compact_db:
Carries out the SQLite compact function (VACUUM) on the database.
By using Moose::Roles I’ve paved the way for easily adding additional tools for the database – just add them into the lib/FSpot/DbTools directory!
I hope you have fun with FSpot, and find a use for the DbTool.