Importer CLI
List of Starsky Projects
- By App documentation database photo index & import index project
- starsky web api application / interface
- clientapp react front-end application
 
- starskyImporterCli import command line interface
- starskyGeoCli gpx sync and reverse 'geo tagging'
- starskyWebHtmlCli publish web images to a content package
- starskyWebFtpCli copy a content package to a ftp service
- starskyAdminCli manage user accounts
- starskySynchronizeCli check if disk changes are updated in the database
- starskyThumbnailCli speed web performance by generating smaller images
- Starsky Business Logic business logic libraries (.NET)
- starskyTest mstest unit tests (for .NET)
 
- starsky web api application / interface
- starsky-tools nodejs tools to add-on tasks
- Starsky Desktop Desktop Application
- Download Desktop App Windows and Mac OS version
 
- Changelog Release notes and history
Importer CLI Options
To automatically copy files from for example a SD-card to the photo library. It could copy a single file, a directory with only the direct child files or a recursive directory. It automatically sort on the photos creation date. The 'importer Cli' could handle local imports, and in the 'Starsky web interface' there is a web import available.
To recursive (-r) import from the sdcard
./starskyimportercli -r -p "/Volumes/sdcard/"
Config file (appsettings.json)
For more information about the appsettings.json configuration
Structure configuration:
The default structure in appsettings.json is:
{
  "App": {
    "ThumbnailTempFolder": "/data/photodirectory/temp",
    "StorageFolder": "/data/photodirectory/storage",
    "DatabaseType": "sqlite",
    "DatabaseConnection": "Data Source=data.db",
    "Structure": {
        "DefaultPattern": "/yyyy/MM/yyyy_MM_dd*/yyyyMMdd_HHmmss_{filenamebase}.ext"
    },
    "ReadOnlyFolders": ["/2015","/2018"],
    "ExifToolImportXmpCreate": "true"
  }
}
Structure configuration change in version 0.7.0
In versions older than 0.7.0 the Structure was set to: This changed is changed in version 0.7.0
{
    "Structure": "/yyyy/MM/yyyy_MM_dd*/yyyyMMdd_HHmmss_{filenamebase}.ext" // legacy
}
Appsettings Notes
- Structure uses slash as directory separator for Linux and Windows
- The settings: ExifToolPath,ThumbnailTempFolderandStorageFolderuses the system path directory separators
- The AddMemoryCachesetting is ignored in the console/cli applications
- The setting: ExifToolImportXmpCreateis used to create at import time a xmp file based on the raw image (default: false)
Structure configuation options:
- dd* The day of the month, from 01 through 31.
- MM* The month, from 01 through 12.
- yyyy* The year as a four-digit number.
- HH* The hour, using a 24-hour clock from 00 to 23.
- mm* The minute, from 00 through 59.
- ss* The second, from 00 through 59.
- \\* (double escape sign or double backslash); to escape dd use this: \\d\\d
- /* (slash); is split in folder (Windows / Linux / Mac)
- .ext* (dot ext); extension for example: .jpg
- {filenamebase}* use the orginal filename without extension
- ** (asterisk); match anything
- *starksy** Match the folder match that contains the word 'starksy'
Check for more date conversions: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings
To get help:
./starskyimportercli --help
The StarskyImporterCli --Help window:
Starksy Importer Cli ~ Help:
--help or -h == help (this window)
--path or -p == parameter: (string) ; full path
                can be an folder or file, use '-p' for current directory
                for multiple items use dot comma (;) to split and quotes (") around the input string
--move or -m == delete file after importing (default false / copy file)
--recursive or -r == Import Directory recursive (default: false / only the selected folder)
--structure == overwrite appsettings with filedirectory structure based on exif and filename create datetime
--index or -i == parameter: (bool) ; indexing, false is always copy, true is check if exist in db, default true
--clean or -x == true is to add a xmp sidecar file for raws, default true
--colorclass == update colorclass to this number value, default don't change
--verbose or -v == verbose, more detailed info
  use -v -help to show settings:
Structure Examples
There are examples of how to manually configure the structure setting. This is all based on the creation date of the image or if the 'exif tag' (data inside the photo) is missing there is a filename structure is used.
Good examples
In the main folder
 input: /yyyyMMdd_HHmmss.ext
 output: /20180731_215100.jpg
In the subfolder 2018
 input: /yyyy/yyyyMMdd_HHmmss.ext
 output: /2018/20180731_215100.jpg
Using orginal name
  input: /yyyy/{filenamebase}.ext
  output: /2018/example.jpg
Complete with Asterisk
With an Asterisk the folder with be autocompleted
  input: "/\\te\\s\\t*/{filenamebase}.ext"
  output:  /test/example.jpg
Escape characters parsed
  input: "/\\te\\s/{filenamebase}.ext"
  output: /tes/example.jpg
Only an asterix
Gets the first folder of the list or default
  input: /*/yyyyMMdd_HHmmss.ext
  output: /default/example.jpg
  or output: /first/example.jpg
Bad examples
Exception due missing starting slash
  input: yyyy/yyyyMMdd_HHmmss.ext
  output: (Exception dus missing starting slash)
Exception due missing extension
  input: yyyy/yyyyMMdd_HHmmss
  output: (Exception dus missing missing extension)