Thanks for helping. This tool started as one photographer's Lightroom→Resolve migration and is deliberately small so it's easy to reason about and extend.
lr2resolve/
config.py # valid Resolve values + default mappings (all overridable)
extract.py # calls exiftool (JSON), resolves sidecar-vs-embedded -> MediaRecord
mapping.py # pure functions: MediaRecord -> Resolve CSV rows (+ warnings)
csvwriter.py # writes proper comma-delimited UTF-8
cli.py # argparse front-end + stats
mapping.py is pure (no I/O) on purpose — it's the easiest place to
contribute and is fully unit-tested.
git clone https://github.com/Paulo-Ink/lr2resolve
cd lr2resolve
pip install -e ".[dev]"
pytest -qThe test suite mocks exiftool, so it runs in CI without it installed.
- More label mappings / languages. Non-English Lightroom stores label text in
the local language (e.g.
Grün,Rouge). Add entries or ship example config JSONs underexamples/. - More raw formats in
DEFAULT_MEDIA_EXTENSIONS. - Reverse mode: read a Resolve metadata CSV export and write XMP sidecars (Resolve → Lightroom/Bridge).
- Keyword hierarchy → Resolve keyword groups, if a sensible mapping exists.
- A tiny GUI (drag a folder, get a CSV) for non-CLI users.
- Version-matrix notes: confirm the import dialog wording/fields across Resolve 18 / 19 / 20 / 21 and the free vs Studio editions.
- Keep
mapping.pypure and covered by tests. - Don't reproduce Adobe or Blackmagic proprietary data in the repo.
- Be honest in docs about what's novel vs. what already exists elsewhere.
- New behaviour → a test. Bug fix → a regression test.
Include: OS, Resolve version + edition, exiftool version, a redacted --stats
output, and (if a mapping issue) the exact xmp:Label text from one file:
exiftool -G1 -a -s -XMP:Label -XMP:Rating /path/to/one.xmp