This project is a command line application which keeps folders from a source windows folder in sync with Albums on the photo sharing service SmugMug using their SmugMug API 1.3.0.
- Upload and sync file changes from local folders to remote SmugMug Galleries
- Process Keywords for Images and Videos up to SmugMug, splitting up keyword trees
- Simple use - Run program (no params) for full sync of any new folders/galleries
- Any image updates (keywords, new files, removed files) need to sync to SmugMug
- Syncing must persist regardless of SmugMug Organize App changes (moving folder in SmugMug, settings, etc)
- Changes that happen to images in SmugMug (rotating, new keywords) should reverse sync back to local system
This project started in 2012 as I had many folders and wanted to sync them in a no hassle manner. I found the following workflow and have used it to this day:
- Work on photos in Adobe Lightroom, Export JPG output files to a local folder
- Use a separate tool (custom) to add captions to each file, and format the filenames
- Use another tool to apply tags to the files
- Copy the finished folder to my network drive in with a nice foldername, in a folder by year.
- Run the SmugMugSync tool, which transfers any new folders to SmugMug in a private gallery for me to review
- In SmugMug Organizer, apply template, select feature image(s) and move folder to final gallery location.
This may seem like a number of steps, but this SmugMug Sync tool, removes the hassle with any image updates after the initial changes, and it also has special processing to split tags and can pull tags associated with videos (on Windows).
Overall, I have 50k files, and this tool will in about 30s minus the new folder syncing (which is variable based on images/videos being uploaded).
2012 - App initially written with .Net 4.6. + various years of tweaks
2023-09 - App was rewritten to use .Net Core 7.0, VS Code, and includes full unit testing. Integration tests for the core library, and Moq testing for the primary application. Split out the secrets and made it more shareable.
- Request a developer key for your app SmugMug Application Keys
- Put your new keys in appsettings.json (apikey/apisecret) or Environment Variables
- Build and run "SmugMugCoreSync GENERATEKEYS" to generate your user keys to use with your app.
- Put your user keys into the appsettings.json file or Environment Variables.
- Settings to drive app are all in appsettings.json, instructions will be coming shortly.
Environment Variables for User and API Keys (these will override the appsettings file values, restart VSCode after adding)
SmugMugCoreSync::ApiKey
SmugMugCoreSync::ApiSecret
SmugMugCoreSync::UserAuthToken
SmugMugCoreSync::UserAuthSecret
- Move from the 1.3 API to 2.0 API
- Setup Extensions: C#, C# Dev Kit, .NET Install Tool, Code Spell Checker, Coverage Gutters
- Install the Microsoft .NET SDK 9.X (should be triggered via VS Code)
- A task exists to run tests, which includes coverage.
- TestSmugmugCoreSync is the core application, dependencies are mocked.
- TestSmugmugCoreNetAPI will validate key Smugmug APIs, this will require your User / API keys to be setup (see above) and will use your Smugmug Account to run APIs (creating and cleaning up what it works with).
- For coverage details (if you want something more than Test Manager Coverage already): dotnet tool install -g dotnet-reportgenerator-globaltool Command to use: task Generate Coverage Report