How it works¶
What each asset gets¶
- Date: the post time. The image files have no date of their own, so Immich's timeline and date search use the time the teacher posted.
- Description: for example
Activity — Ava, Preschool 1. Posted by Sam Lee. "Journaling time." Comments: ... - Tags:
SproutAbout/Child/<name>,SproutAbout/Class/<class>,SproutAbout/Type/<post type>,SproutAbout/AgeGroup/<group>,SproutAbout/Scale/<learning scale>.
Note: to see tags in Immich, turn them on first: Account Settings →
Features → Tags. Then open a photo and press i, or open Tags in the sidebar.
A run, step by step¶
- Log in to Immich and to SproutAbout.
- Read the whole feed (about 10,000 posts take about 90 seconds) and list every photo and video, newest first.
- Work in batches of 100: look up each item in Immich by file name, download the rest, and ask Immich which checksums it already has.
- Upload what is new, then write date, description and tags.
- Without
--full, stop at the first batch with nothing new.
Details¶
- XMP sidecar on upload. After an upload, Immich runs a metadata job that
resets date, description, location and tags from the file. These files
carry none, so sproutpal sends an
.xmpsidecar with each upload. Without it, the job erased tags on about half of the uploads. - Download key per batch. SproutAbout's media download key (Azure SAS) is valid for 10 minutes. sproutpal gets a new one for each batch.
- Largest size only. SproutAbout keeps a 1024-pixel copy of each photo. The full-size originals are gone from their server.
- Missing files. A few old media are gone on SproutAbout's side. Azure
answers them with 404, or with 403 "Signature did not match", the same
error a bad key gets. sproutpal retries them once with a fresh key, then
logs them as
skipand does not count them as failures. A skipped item is not in Immich, so the next run tries it again. - Outages. SproutAbout's gateway returns short bursts of HTTP 502, and during them Azure refuses part of a batch. API calls retry 3 times (5 s, then 10 s apart), and downloads get the retry above. If nothing in a batch downloads at all, the run fails: that points at a broken key or changed storage, not at missing files.
- Shared pictures. The same picture posted to each child's feed has identical bytes, so Immich keeps one asset. sproutpal merges the posts: the asset gets every child's tags, the earliest date, and both descriptions.