diff --git a/TOOLING.md b/TOOLING.md index dfc1e89..f5ba2ae 100644 --- a/TOOLING.md +++ b/TOOLING.md @@ -332,7 +332,7 @@ the old names with a pointer rather than a bare error. | mode | cadence | cost | why | |---|---|---|---| | `stories` | daily | ~6 requests | stories expire in 24h and **cannot be backfilled**; this is the only run that loses content if skipped | -| `profiles` | monthly | ~40-60 requests | every surface, `--abort 50` — stops enumerating a profile once it reaches content already held. Catches everything **new** | +| `profiles` | weekly, randomized day | ~40-60 requests | every surface, `--abort 50` — stops enumerating a profile once it reaches content already held. Catches everything **new** | | `full-sweep` | rarely, by hand | **~420 requests** | no abort; walks every profile to the end. The only run that notices posts **edited** after we archived them (test case 15) | The skip-archive means an infrequent `profiles` run costs barely more than a frequent diff --git a/docs/gallery-dl.md b/docs/gallery-dl.md index b389ee5..7380eff 100644 --- a/docs/gallery-dl.md +++ b/docs/gallery-dl.md @@ -358,7 +358,7 @@ means an infrequent full sync costs barely more than a frequent one, because it only fetches what is new. ``` -# monthly, everything +# weekly, everything gdl-sync.py --index --staging ~/gdl/staging \ --publish @: --archive-db ~/gdl/artms.db \ --urls-file artms_account_links.txt --execute diff --git a/scripts/gdl-cron.sh b/scripts/gdl-cron.sh index a73cc5a..20dc081 100755 --- a/scripts/gdl-cron.sh +++ b/scripts/gdl-cron.sh @@ -2,7 +2,7 @@ # Unattended wrapper around gdl-sync.py. One argument: the run mode. # # stories daily ~6 requests; the only surface that cannot be backfilled -# profiles monthly every surface, --abort 50: stops enumerating a profile +# profiles weekly every surface, --abort 50: stops enumerating a profile # once it reaches content already held, so it costs # ~40-60 requests and catches everything NEW # full-sweep rarely every surface, no abort: walks each profile to the end diff --git a/scripts/systemd/gdl-sync@profiles.timer b/scripts/systemd/gdl-sync@profiles.timer index 131573c..e085a2a 100644 --- a/scripts/systemd/gdl-sync@profiles.timer +++ b/scripts/systemd/gdl-sync@profiles.timer @@ -1,9 +1,17 @@ [Unit] -Description=Monthly Instagram profile sync (all surfaces, --abort 50) +Description=Weekly Instagram profile sync (all surfaces, --abort 50) [Timer] -OnCalendar=*-*-03 04:00:00 -RandomizedDelaySec=45m +# Weekly, but deliberately not pinned to a day: OnCalendar anchors to Monday +# 00:00:00 and RandomizedDelaySec spreads the actual fire up to 6 days later, +# so which day it lands on varies week to week -- same "don't look like a +# machine" reasoning as the stories timer's 45m jitter, just applied to the +# day instead of the minute. See TOOLING.md's healthchecks.io section: the +# matching instagram-archiver-posts check uses Simple Schedule (period + +# grace) rather than Cron Schedule for exactly this reason -- a fixed cron +# day/time would fight this jitter instead of tolerating it. +OnCalendar=weekly +RandomizedDelaySec=6d Persistent=true [Install]