Skip to content

videre export

Writes the labels you built in videre into standard .xmp sidecar files next to your photos, so other tools (digiKam, Lightroom, darktable) can read them. This is how videre stops being an island: the work you invested in naming faces, rating and labelling travels with your library instead of living only in hashes.db.

Opt-in and non-custodial: it only ever writes a .xmp sidecar beside the file, and never modifies the original.

Terminal window
videre export --xmp # every file with something to write
videre export --xmp --path 2024 # just one subfolder
videre export --xmp --person "Ayşe" # just photos of one person
videre export --xmp --dry-run # list what would be written
videre export --jsonl # snapshot the scan inventory to .videre/hashes.jsonl

videre export --jsonl writes one JSON object per file to .videre/hashes.jsonl, replacing any previous snapshot atomically. It is the composability handoff: one line per file straight into jq, awk or a spreadsheet, with no SQLite dependency. See JSONL output for the format and what it leaves out. --xmp and --jsonl are mutually exclusive, and it is a scan-inventory snapshot, not an annotations or embeddings backup.

For each selected photo, videre writes the labels it owns into one sidecar, using the standard fields the other tools already read:

videre data XMP field
Named faces (confirmed) MWG face regions (mwg-rs:Regions), name plus box
Resolved location name Iptc4xmpCore:Location
Tags dc:subject keywords
Star rating xmp:Rating
Colour label xmp:Label

Face regions are written as normalized MWG areas, the format digiKam and Lightroom use for face tags, so a name you assigned in videre shows up as a named face region there. Picks and likes have no portable standard and stay in videre’s database.

The category videre classify gives a photo is not exported either. It is recomputed whenever you classify again, and a scan reads every dc:subject keyword back as a tag, so writing it there would turn it into a tag you never added. Versions before 0.50.0 did write it: the next full export rewrites the keywords from your tags alone, so the old category keyword disappears from the sidecar, while keywords another app added stay, because scan has already imported them as tags.

A file with nothing to write gets no sidecar. If it already has one, videre’s fields are removed from it, so a label you took away since the last export does not linger there.

If a sidecar already exists (for example one Lightroom wrote), videre merges: it replaces only the fields it owns and preserves everything else in the file verbatim, including another tool’s keywords and develop settings. Re-exporting is safe and idempotent.

The selection flags narrow the library exactly as videre search does: --path, --person, --date/--after/--before, --location/--radius, --type, --ext, --mime, --category, --has, --missing, and the mark/tag filters --rating, --pick, --label, --like, --tag, and --query for OR and NOT (a query, filters only). See scoping a run. With no selection, every file with something to write gets a sidecar.

A run prints N of M, so a filter matching nothing is distinguishable from an empty library.

Flag Effect
--xmp Write XMP sidecars (currently the only export format; required)
--dry-run List the sidecars that would be written, write nothing
--library <dir> Select a different library instead of the current directory
--silent Suppress the summary line

videre reads standard XMP on videre scan, so labels other tools wrote can come back into videre too. The --xmp precedence rule (which side wins) is documented on the scan page. Continuous export while you work in another tool is available as an opt-in watch stage.