Jump to content

Users little helper (not to be confused with the old Stones song)


Recommended Posts

With this post I would like to ask you to describe what additional utilities or correction programs you use. So add your ideas or descriptions here.

All my small programs are written with Python and are specifically designed for my catalog and file name syntax. There is no UI either, but everything is "hardwired" into the program code. The most reports are part of the daily backup procedure automatically started in the late  evening


01 Program to create customs tags for linked items

I create links between the original item (in the most cases a RAW photo) and the developed photos (TIFF/JPG) for photobooks etc. based on the RAW. In Daminion one can use the Link Panel to see the links but you can’t adjust them in one step. In the Link Panel you can see all linked files, but you can't edit them together, for example to adjust tags. The custom tag allows that. As with other hierarchical tags, you can select the custom tag and all items in the hierarchy will be displayed in the Thumbnail Window and can therefore be edited together.
This program runs every day 10PM together with the backup of the catalogs. It reads the table of linked items (mediaitem_link) and fills a custom table.




02 Program to create customs tags for grouped items

Works in the same way as described for the linked items above.


03 check if „developed items“ are unlinked

All photos (TIF/JPG) used e.g. in photo books have been developed from an "original photo". This can be the RAW photos or also clippings or screenshots from files of other formats. In any case they must be linked. So if I forgot to link the photos, this report will show me the items that still need to be linked.


04 check if linked items have the same tags

I use the DamScan.py report written by Juha to check if linked items have the same tag.


05 check if file is in the catalog and CreationDateTime in the catalog is equal to the file name

I use the following syntax for the file names: YYYMMDD_HHMMSS-ms.ext or YYYMMDD_HHMMSS-nnn.ext. First it is checked if all files of the folders on the hard disk that should be in the catalog are in the catalog. In the past it often happened that the date and time of the file name did not match the entry in the catalog. To check both I have created this report

06 check if Keyword Tags are equal in all corresponding tags

There is the problem that e.g. the tag Exif:XPKeyword is not updated. So if I change keywords in the Properties panel, this change is not applied to Exif:XPKeyword. Other programs that evaluate keyword tags therefore create wrong keywords. The report lists the differences, which I then clean up with the action "Open with..." and the following ExifTool command:

-overwrite_original -m -sep ";" "-exif:XPKeywords<xmp:HierarchicalSubject" "-IPTC:Keywords<xmp:HierarchicalSubject" "-xmp-pdf:Keywords=" {Filename}

or with sidecar files:

-overwrite_original -m -sep ";" "-exif:XPKeywords<xmp:HierarchicalSubject" "-IPTC:Keywords<xmp:HierarchicalSubject" "-xmp-pdf:Keywords=" {FilenameWithoutExt}.xmp


07 program to backup all links existing in the catalog

Daminion does not write all information in the catalog as well as in the metadata of the file. So if at some point you are forced to build a new catalog and a restore is not possible, then the links present in the old catalog are lost. To avoid this, I create a CSV file containing all linked items every evening as part of the automatic backup procedure. This file can then be used in the new catalog to restore all previously existing links. It may be necessary to modify the CSV file if the folder structure has changed, but that's not a problem. A user here in the forum could already be helped with it, when he changed from the local to the shared catalog. For grouped items I don't see the need for me, because I use grouping only for panoramas and all panoramas contain the keyword "Panorama" and are therefore easy to find and regroup.

08 Open with… - write Scanner model into the metadata

The flat bed scanner doesn’t write Exif metadata. I use this command line in the „Open with…“ action:

-Exif:Make="Canon" -Exif:Model="CanoScan LiDE 700F" -XMP:Make="Canon" -XMP:Model="CanoScan LiDE 700F" -overwrite_original {Filename}


09 Thumbnail for „unknown“ mediatype

I use the program „dam_thumbnails.py“ written by Wilfried to „overlay“ unknown mediatypes with predefined thumbnail icons.


10 various ExifTool commands to write metadata


11 check program: GPS metadata equal in the RAW and XMP file


Edited by Uwe
list point 11 added
Link to comment
Share on other sites

On 2/1/2022 at 11:48 PM, Uwe said:

With this post I would like to ask you to describe what additional utilities or correction programs you use. So add your ideas or descriptions here.

Great idea Uwe!
Thanks to @lintujuh and his DamScan I learned two facts a while ago:

  • Users can access Daminion catalogs with SQL, if they have the appropriate knowledge,
  • Python, an easy to learn programming language, free of charge for non-commercial usage, can be used to employ those SQL statements.

Since I do have some basic knowledge of SQL and always did some programming since 40 years (never professional and never on Windows), learning Python was not a huge task. So I ended up creating a bunch of tools for my own usage. Same as Uwe said, most of my tools do not have a graphical user interface, but can be controlled by command line parameters and/or configuration files, but I'm afraid it may not be easy to use them in different Daminion environments, although I am willing to share the code, if somebody is interested.

Starting with the easiest based on a single SQL SELECT:
    Number of Requests from cloud vision for AI Labels this month
If you use "Auto Tags" from Google Cloud Vision, you might want to make sure to stay below the monthly limit of 1,000 requests. Immediatles after the Daminion server submitted a request you see the monthly usage with this SQL:
You should see the same number by checking Google's Billing Reports (https://console.cloud.google.com/billing/...), but they update the number several hours later and meanwhile, you might have exceeded the free limit.

I also created a file with a collection of SQL SELECT statements, which can be used to find certain pieces of information in a Daminion catalog without writing a program.

The following scripts, I usually start from a Python development environment (PyCharm Community Edition) and I daily if there are new photos:

Compares tags in Daminion catalog with embedded XMP, EXIF or IPTC metadata, check for missing of offline files and more. The script reads all media items in a Daminion catalog within two dates and compares the tags in Daminion catalog with embedded metadata using Phil Harvey's ExifTool. The "date" can be the creation date or the last change date (maintained by Daminion.)

I tag most of my pictures in the Daminion catalog with collection 'Alben\Google (Picasa)\xxx', where xxx is the name of one of my albums in Google Photos. The script first lists all of my albums (many!) and then allows me to select one, for which it checks if all of the images tagged in Daminion are really part of the album and vice versa.

Originally only a function to be called by the above script, but since Google changed it pricing policy last year, I can use it directly for an additional purpose, namely to verify if Google Photos contains duplicates of my images, which can happen easily, if you use Google drive to synchronize photos.

The two scripts above envolve using a Google REST API with appropriate credentials to access your own pictures!

Over time, I added several external tools to the Daminion "Open with" option. The most useful:

    ExifTool with selected arguments
Unlike Daminion's "Show all Metadata", it shows only a subset of information provided by the ExifTool, i.e. those I am frequently interested in, but are not recorded in the Daminion catalog, such as image count (number of shots taken by this camera so far), Focal Length, Focus Distance, White Balance, HDR Setting, Battery Level and some more:
The complete arguments are:

-k -charset DOSLatin1 -ExifToolVersion -filename -Directory -ImageNumber -DateTimeCreated -FileModifyDate -InternalSerialNumber -ImageCount -NumberOfImages -ShutterCount  -ElectronicFrontCurtainShutter -SequenceFileNumber -FocalLength35efl -FocusDistance2 -HyperfocalDistance -ISOSetting -FlashStatus -FlashLevel -FlashMode -FlashExposureComp -WhiteBalance -WhiteBalanceFineTune -ExposureMode -ExposureCompensation -ExposureProgram -MultiFrameNoiseReduction -ReleaseMode -DriveMode -HDR -HDRLevel -HDRSetting -BatteryLevel -ShotNumberSincePowerUp -Name -ProcessingSoftware -LensCorrectionSettings -UserComment -dateTimeOriginal -GPSImgDirection  {Filename}

And the definition of the external tool:
This is the first external tool in my list, so I can start it most easily by selecting a thumbnail and pressing the 'V' key. Trying to avoid mouse clicks as much as possible, I start the following tools by a right mouse click, then 'O' and then the underlined character in the list of tools.

    Show URLs in &Browser (open_url_from_thumbnail.py)
Calls a Python script. I wrote this before Daminion implemented the custom tag of type 'link', to allow URLs to be stored in in certain tags and by starting the tool, it will open browser or if more than on URL was found show a menu to select. In addition the tool checks my Google Photos for a matching file name and allows to open that also.

I might add more later ....

Link to comment
Share on other sites

Another tool, I forgot to mention above:
PeakVisor is a free web site (or payable Android app for outdoors) which allows you to identify mountain peaks, you can see from a given geographical point at the horizon. Since most of my images are geo-tagged, I wrote open_PeakVisor.py,  a little Python script, I can start via Daminion's 'open with' capability. It does two things:
- Construct the URL for PeakVisor including the parameters for longitude, latitude and altitude and launches the site in my standard browser, for example: https://peakvisor.com/panorama.html?lat=42.7848725499983&lng=12.7123186000466&alt=302.94
- It also copies the full path to the image file onto the clipboard
The PeakVisor page shows the 360° horizon visible from that point. Obviously you can only partially see it and need to shift the view to see the complete horizon. You can either do so manually to find the peaks visible on your image or upload the image to match the skyline on the web site to the one on the image. To do the latter, I only need to paste the path, my script already placed on th clipboard. The PeakVisor generated horizon appears now as an overlay over my photo and I can slide and/or change the scale until the artificial horizon matches the on the photo. At that point, I can either read the mountain names or generate a combined png image, similar to the one below:


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...