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.