imgup (now with SmugMug as the image upload backend)

· 3 min read · 469 words
This post is more than 1,000 days old.

I finished up the initial SmugMug version of imgup today.

There are some things I’d like to add, but it’s good enough to stick in Docker and run locally as a drop-in replacement for the Cloudflare edition I’ve been using.

The basic workflow of the tool is:

![this is alt text, which will show up for people using screen-readers](https://photos.smugmug.com/photos/i-g2xggWq/0/20655d2f/X2/i-g2xggWq-X2.jpg)

Why? Because I get better control of the quality of images I share (SmugMug wants them to look nice at a variety of sizes and compresses/resizes accordingly), I’d like to move to having permanent URLs for images in posts (and I think I’m a SmugMug lifer now), and I’d eventually like to save the messy scattering of copies of images made just for sharing then discarded.

Because SmugMug has a pretty nice ecosystem of plugins, uploaders, and apps, there’s more I mean to do. For instance, it’s possible to just shoot an image straight from Lightroom CC on an iPad to SmugMug. There’s also a good desktop Mac uploader that can snarf up things saved to a specific folder. So if I just pick up the habit of adding title and caption metadata in Lightroom, it’ll show up in anything else I do with imgup. Uploading, ultimately, will not be something I do a lot with this tool as I build the parts where I can get back recent uploads and get easy sharing snippets.

Still on the list of things to do with this:

In the process of debugging oAuth, I ended up building a manual solution to the problem of keeping an oAuth session alive after restarting the app: Once you do a SmugMug auth with the app, there’s a /tokens page that tells you enough to stick your oAuth access token and secret in an environment variable. In the development environment it pulls this stuff from a .env file. You can use the app without doing this at all, at the cost of having to re-auth the app with SmugMug each time you restart it.

Previously: