NAME
digitaglinktree - Export tag structure of photos in digikam to the
filesystem.
SYNOPSIS
digitaglinktree
-l taglinkdir | -A archivedir
-d database
[-r rootdir]
[-H|-f|-a|-v|-C]
DESCRIPTION
digitaglinktree will create a linktree for all photos in a digikam
database that have tags set on them. Tags (like eg. "family", "events",
...) are used in digikam to create virtual folders containing images
that all have one or more tags assigned. Please note: Photos that have
no tags at all assigned are silently ignored by this script. The
program will not modify or even touch your original photos managed by
digikam.
The script can be used in two ways: If you call it using Option -l
taglinkdir the script will create the user specified directory
taglinkdir and inside this directory it will create sub directories for
digikam tags set on the photos. Inside these subdirectories it will
finally place symbolic or hard links (see -H) to photos having the
tags in question. As a result you will see the tags of your photos as
folders and in these folders you will find links to your original
photos.
In this way you can access the collection of all images that share a
certain tag by changing directory to the folder with the tags name
created by this script. This allows you e.g. to run JAlbum a photo
album software that needs to find the pictures to be put into a web
album in the filesystem because JAlbum cannot access digikams virtual
folders directly.
The second way of calling this script is the so called archive-mode by
setting option -A archiveDir.
Archive mode is thought for people who want to archive tagged photos
independently of digikams root directories and the photos therein.
This way you can put your photos and their tag structure in eg. a tar
archive and send it to a friend, who can look at the photos via their
tag structure. In this mode the script creates the directory given as
parameter to -A and in this directory two more subdirectories. One
named Photos and a second named Tags. The Photos directory contains
hard links to your original photos, and the Tags directory contains a
subdirectory for each Tag used by any of your photos. Inside this
subdirectory there are links (either symbolic or hard links) to the
files in the Photos directory. This way the archive directory needs
nearly no additional space on your harddisk and you have an archive
that allows you or a friend to easily look at the photos tag
structure.
Another benefit from using this script is that you have kind of a
backup of your tag settings for all of your photos. The backup is
simply the directory structure containing links to the original images
that wear the tags. This could become important if for whatever reason
the digikam.db file gets corrupted or even lost.
COMMAND-LINE OPTIONS
-l taglinkdir
Parameter taglinkdir denotes a directory in which the tag
structure of all your photos stored in rootdir will be exported
to by creating subdirectories for each tag and placing symbolic
links in these subdirectories that point to the original photo
wearing the tags. If calling the script with option -l
taglinkDir you also have to specify options -r rootdir as well
as -d database.
-A archivedirectory
archivedirectory denotes a directory into which the script will
export the photos and their tag structure. -A has to be used
together with option -r rootdir if using digikam version <
0.10, as well as -d database else the script will terminate.
Inside the archive directory the script will create a Photos
and a Tags directory. It will put hard links in the Photos
directory that point to your original photos. By using hard
links you are independent of changes in your digikam root
directory but on the other hand you are limited to one
filesystem. So the directory given by -r rootdir and the
directory specified for -A archivedir have to be one the same
filesystem. If using digikam in version >= 0.10 you cannot
specify -r rootdir . Instead the root paths of all albums are
taken from digikams database directly. However still the
requirement holds, that archivedir has to be on the same
filesystem like all the root directories containing photos you
defined in digikam. If one of digikams root directories is on
another filesystem this one will not be processed, since
hardlinking the photos inside the Photos directory would not
work in this case! The Tags subdirectory will contain links to
the files in the Photos directory. This way you have one archive
directory that is completely self contained. You can tar it,
send it to a friend or just put it somewhere for archivel or
backup purposes. Usually only those photos will be archived that
have a digikam tag set on them. By using option -C however you
can perform a complete archive. See -C for more infos.
-d database
database is the complete path including the filename to digikams
photo database which usually can be found in digikams root
directory. The files name is usually digikam.db .
-r rootdir
rootdir denotes the digikam base directory containing all your
photos if you are using digikam in a version before 0.10. If you
are using digikam 0.10 or newer you must not use this option. If
you do it anyway you will see a hint that the option given will
be ignored because digikams version 0.10 database contains the
root directories of all albums defined in digikam.
-C When the script is called with option -A archivedir only those
photos will be archived (by placing links) in the Photos
subdirectory of archivedir that have at least one digikam tag
set. By setting option -C all photos will be archived to
archivedir no matter if they have a tag set or not. Note: This
only changes the contents of the Photos subdirectory not of the
Tags subdirectory in the archivedir directory.
-a By default the script will try to create relative symbolic links
from the directory taglinkdir set by option -l to the photo
files under rootdir given by option -r. Using this option will
result in absolute symbolic links beeing created instead of
relative ones.
-H By default the script will create soft (symbolic) links from the
Tag-Tree to the photos. By setting option -H the script will use
hard links instead. Please note that hard links can only be
created inside one filesystem. So your photos and the Tag tree
have to be one the same filesystem. If not you will see a
warning about this problem and the script will not run.
-f In digikam photos can have hierachical tags (tags that have
subtags). In this case digitaglinktree would by default add a
directory for the tag and a subdirectory for each of the subtags
of this tag. By setting -f a subtag is treated like a regular
tag just as its parent tag so digitaglinktree will create all
subdirectories for tags and subtags at the same level
independent of the tag - subtag hierarchy.
-v Prints the scripts version number and exits.
CONFIGURATION
By default this script will run with all photo databases created by
digikam version 0.10 as well as older version like 0.9 and 0.8. If you
still have digikam version 0.7 then you have to reconfigure the script
itself.
You have to reconfigure the script by setting the path to the sqlite
binary that is used by the script to query the digikam database
digikam.db. Since very old digikam version use sqlite in version 2, but
later digikam versions need sqlite version 3 you have to take care to
install the correct version of sqlite for the installed digikam version
and to set the path to the correct sqlite executable in the scripts
head:
Choose
$SQLITE="/usr/bin/sqlite3";
for digikam version 0.8x and 0.9x and 0.10x
$SQLITE="/usr/bin/sqlite";
for digikam version 0.7x.
EXAMPLE
A call to digitaglinktree is shown below:
digiTagLinktree -l /home/user/tags -d
/home/user/photos/digikam.db
In this example we assume that you are running digikam version 0.10 or
higher so that no option -r was used to specify the photo root dir.
Instead this information will automatically be fetched from digikams
database.
In case you want to run the script on a digikam database that was
created by digikam version 0.9 or earlier you have to use -r to specify
the root directory where you keep all your photos that are managed by
digikam:
digiTagLinktree -r /home/user/photos -l /home/user/tags -d
/home/user/photos/digikam.db
In this example digikams photo root denoted by -r is /home/user/photos.
Option -l /home/user/tags tells the script that all the subdirectories
and symbolic links will be placed in the directory /home/user/tags. The
folder was chosen so that the tags-directory is not under digikams
photo root. You may put the tags folder inside digikams photoroot but
this is not the preferred method. Because the link directory contains
only links this tag structure does hardly need any additional space on
your harddisk.
AUTHORS
digitaglinktree was written by Rainer Krienke <krienke at uni-
koblenz.de>
16 Aug 2006 digitaglinktree(1)