docs: add worked --help examples to gdl-sync.py
One example per way of selecting what to fetch (urls-file, --profile, --all, --post-url), plus the routine/stories/full-sweep pacing choices, so the flags don't have to be reverse-engineered from the arg list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011qAds5qr7nZRq5R4yAuxUk
This commit is contained in:
+59
-1
@@ -23,10 +23,68 @@ the one that would touch the archive.
|
|||||||
|
|
||||||
Run it from the host whose public IP matches the browser the cookie came from;
|
Run it from the host whose public IP matches the browser the cookie came from;
|
||||||
using the cookie from elsewhere is what session-hijack detection looks for.
|
using the cookie from elsewhere is what session-hijack detection looks for.
|
||||||
|
|
||||||
|
See `--help` for every flag, with worked examples for each way of selecting
|
||||||
|
what to fetch.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
EXAMPLES = """\
|
||||||
|
examples:
|
||||||
|
|
||||||
|
Routine incremental sync of the tracked profiles (what gdl-cron.sh runs) --
|
||||||
|
--abort 50 stops enumerating each profile once it reaches content already
|
||||||
|
held, so a run that has seeded once costs ~40-60 requests, not a full walk:
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py --index https://instaarchive.ergosteur.com \\
|
||||||
|
--staging /var/tmp/gdl --publish user@host:/path/to/archives \\
|
||||||
|
--urls-file artms_account_links.txt --archive-db /var/tmp/gdl.db \\
|
||||||
|
--abort 50 --dry-run
|
||||||
|
# ...then swap --dry-run for --execute once the plan looks right.
|
||||||
|
|
||||||
|
Cheapest possible run -- stories only, the one surface that expires in 24h
|
||||||
|
and cannot be backfilled, so it is worth doing often:
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py --index https://instaarchive.ergosteur.com \\
|
||||||
|
--staging /var/tmp/gdl --publish user@host:/path/to/archives \\
|
||||||
|
--urls-file artms_account_links.txt --only stories --execute
|
||||||
|
|
||||||
|
One profile, by name, without a urls-file:
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py --index /path/to/archives --staging /var/tmp/gdl \\
|
||||||
|
--publish /path/to/archives --profile some_account --execute
|
||||||
|
|
||||||
|
Every profile the archive already knows about (no urls-file, no --profile):
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py --index /path/to/archives --staging /var/tmp/gdl \\
|
||||||
|
--publish /path/to/archives --all --execute
|
||||||
|
|
||||||
|
An arbitrary single post or reel from an account NOT otherwise tracked --
|
||||||
|
e.g. a link someone shared. Filed under its owner like any other post; no
|
||||||
|
--index needed, since there is no profile list to plan against:
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py --staging /var/tmp/gdl --publish user@host:/path \\
|
||||||
|
--post-url https://www.instagram.com/p/SHORTCODE/ --execute
|
||||||
|
|
||||||
|
Full sweep -- no --abort, walks every profile to the end. The only run that
|
||||||
|
notices a carousel edited after it was archived, and by far the most
|
||||||
|
expensive thing here (~420 requests for six profiles). Read docs/gallery-dl.md
|
||||||
|
and TOOLING.md before running this one:
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py --index https://instaarchive.ergosteur.com \\
|
||||||
|
--staging /var/tmp/gdl --publish user@host:/path/to/archives \\
|
||||||
|
--urls-file artms_account_links.txt --execute
|
||||||
|
|
||||||
|
Hand-paced caution after a scraping warning (roughly double the defaults;
|
||||||
|
see docs/gallery-dl.md for where these numbers come from):
|
||||||
|
|
||||||
|
./scripts/gdl-sync.py ... --sleep-request 12 20 --sleep 5 10 --rate 500K
|
||||||
|
|
||||||
|
Always --dry-run first (the default): it prints the plan and the rsync
|
||||||
|
command that would publish, without spending a single Instagram request.
|
||||||
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
import json
|
import json
|
||||||
@@ -703,7 +761,7 @@ def main() -> int:
|
|||||||
sys.stdout.reconfigure(line_buffering=True)
|
sys.stdout.reconfigure(line_buffering=True)
|
||||||
sys.stderr.reconfigure(line_buffering=True)
|
sys.stderr.reconfigure(line_buffering=True)
|
||||||
|
|
||||||
ap = argparse.ArgumentParser(description=__doc__,
|
ap = argparse.ArgumentParser(description=__doc__, epilog=EXAMPLES,
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||||
ap.add_argument("--index",
|
ap.add_argument("--index",
|
||||||
help="existing archive listing: a local root, or the "
|
help="existing archive listing: a local root, or the "
|
||||||
|
|||||||
Reference in New Issue
Block a user