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.