Additional Search filter types

First off I’m posting this on my phone so if I am duplicating a request then please delete this.

I like the filter types, like fs and date and other more advanced search capabilities.

I think however it’s missing one: fn (filename)

Example usage:
Default is exact filename - ex:

fn:IMG_1337.JPG

Return should be all matches, this allows the user to do a quick visual inspection, and at least for me would enable the user to download the original size version for printing if they are looking for this.

Alternative usage would be wildcard return and combination of other filters in the event the first example above returns too many hits.

fn:*1337* type:NEF before:2017-08

Regex could be awesome but maybe should be included as a separate filter type ability due to, I’m assuming, your wanting to make this accessible to a wide audience of all technical backgrounds.

Eventually the ability to take an image and use the ML to take an uploaded image and find matches in the library for the same purpose would be amazing (think Google image search).

Use case: Grandma has a photo they downloaded off of Facebook that they’d love an 8x10 of that exact photo but we have no idea what it was named, where we stashed it, what date it was taken, or what camera.

This is actually a perfect use case for image hashes: for now, you can use these info and list tools to calculate the downsampled image hash and search for the original, but it might be nice to support this use case via the web UI was well.

(I guess the tineye UX works pretty well for this, right?)

The pathing must have changed in 1.0 or something, /ps/app is the starting dir when you run docker commands

This seems to help

docker exec -it <container id> ./photostructure list | grep "IMG_1337.JPG"

How would I weaponize this for comparing hashes?

You need to

  1. Compute the “meanHash” of the given image: ./photostructure info --filter imageHash.meanHash path/to/image.jpg
  2. Look for an AssetFile that shares that same meanHash: ./photostructure list --where "AssetFile.meanHash = 'IoYCHwcHD2DdfQnh87LniCaH/jwceDA='"`

As this is a bit onerous, the next version of list will support --looks-like, which does this for you:

  --looks-like <PATH_TO_PHOTO_OR_VIDEO>  Find images that look like the given exemplar.
$ ./photostructure list --looks-like ../../examples/Google_Pixel.jpg 
/home/github-actions/actions-runner/_work/photostructure/photostructure/examples/Google_Pixel.jpg
/media/mrm/4tb/PhotoStructure/2016/2016-12-13/Google_Pixel.jpg
/media/mrm/4tb/PhotoStructure/2016/2016-12-13/Google_Pixel-3.jpg
1 Like