Skip to main content

Digikam database query tool

Project description

digikuery is a script to perform queries in digikam (photo manager) database.

It can

  • Query albums which contains tags matching a given regex
  • Query most used tags and corresponding albums
  • Print other tags present in matching albums
  • List digikam database structure
  • Provide an interactive python shell for manual queries

Usage

usage: digikuery.py [-h] [-d DBPATH] [-F] [-R ROOT] [-T [FILTER_TAGS]] {shell,schema,album,tag,stats} ...

digikuery - Digikam database query tool - v20230529

positional arguments:
  {shell,schema,album,tag,stats}
    shell                       spawn ipython shell to explor digikam database
    schema                      dump digikam database schema
    album               [album] list tags for one or all albums
    tag                 [tag]   list all tags or query single tag
                        -C      sort by result count
                        -I      show image details
    stats                       show digikam database statistics (default)

options:
  -h, --help            show this help message and exit
  -d DBPATH, --dbpath DBPATH
                        database path
  -F, --full-tagname    display full tag name
  -R ROOT, --root ROOT  restrict query to this root album
  -T [FILTER_TAGS], --filter-tags [FILTER_TAGS]
                        show and filter tags for displayed albums

examples:
List albums when tag 'Paquerette' is present, together with other tags of this album
$ digikuery tag Paquerette

Install

$ pip install digikuery

Example: Query which albums contain given tag expression

Bellow we look for the "semaphore" name in all tags.

The query returns 2 tags "TagCommunication/Semaphore/Bleu" and "TagAlphabet/Semaphore", listing for each tag the albums containing tagged pictures.

$ digikuery tag semaphore
  3 TagCommunication/Semaphore/Bleu
      album_albanie
      album_france
      album_grece
  1 TagAlphabet/Semaphore
      album_photos_19e_siecle

Providing -I option would list the picture names.

Let's just sort them by picture count:

$ digikuery tag -C semaphore
  3 TagCommunication/Semaphore/Bleu
      3 album_france
      2 album_grece
      2 album_albanie
  1 TagAlphabet/Semaphore
      19 album_photos_19e_siecle

For each matching album we can show if it contains other tags, for example tags maching "access"

$ digikuery -T access tag semaphore
  3 TagCommunication/Semaphore/Bleu
      album_france
        TagAccess/Walking (9), TagAccess/Train(1)
      album_grece
		TagAccess/Car(6), TagAccess/Walking (3)
      album_albanie
		TagAccess/Walking (5)

Interactive shell in database

$ digikuery shell
Interactive mode help:
   available objects
      dk.session
         dk.session.query(Album).count()
         dk.session.query(AlbumRoot).all()
         dk.session.query(Image).filter(Image.name == 'example.png').all()
         dk.session.query(Album, Tag, sqlalchemy.func.count(Tag.name)).join(imagetag).join(Image).join(Album)
      dk.engine
         access sqlalchemy engine
      dk.metadata
         access sqlalchemy metadata
   available functions
      help()
         print this message
      dk.query_album(album)
      dk.query_tag(tag)
      dk.schema()
      dk.stats()
running ipython...

In [1]:

Internals

digikuery uses sqlalchemy to map digikam database to python objects.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

digikuery-20230529.post2.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

digikuery-20230529.post2-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file digikuery-20230529.post2.tar.gz.

File metadata

  • Download URL: digikuery-20230529.post2.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for digikuery-20230529.post2.tar.gz
Algorithm Hash digest
SHA256 475c1fe80a58a50bf7516cb0fa86056619fd69ee8cf2375a8a32ab878a505e4f
MD5 0ed037a0cac2cbb71de8bb35ea6a2ba7
BLAKE2b-256 903a24527dff32f73c8f4a176bc6d11066324a90323e12743d1059d1933e6d6d

See more details on using hashes here.

File details

Details for the file digikuery-20230529.post2-py3-none-any.whl.

File metadata

File hashes

Hashes for digikuery-20230529.post2-py3-none-any.whl
Algorithm Hash digest
SHA256 5b5dc5b9d11b75e24e45285ef1fd38456e9a3705117843a162c367c1edcf3725
MD5 b2ee11aeaea8761d84733525179057d0
BLAKE2b-256 b3e187734793633aaaf6991aacc46f0e41b5487af2888e9aa9a8aa8466a09094

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page