dcimport
dcimport copies photos and videos from an iPhone to a local folder over USB. It reads directly from the device without iCloud and installs nothing on the phone.
Imports are incremental. A local database tracks completed files, so later runs copy only new or changed media. Interrupted imports continue when you run the same command again.
Installation
Requires Python 3.11+.
uv tool install dcimport
# or: pip install dcimport
Install the optional HEIC converter with uv tool install "dcimport[heic]".
Quick start
Connect the iPhone by USB, unlock it, and tap Trust. Then choose the destination folder:
dcimport ~/Pictures/iPhone
On Windows, install Apple Devices or iTunes for the device drivers.
Useful examples:
dcimport ~/Pictures --layout "{mtime:%Y}/{mtime:%m}/{name}"
dcimport ~/Pictures --since 2024-01-01 --convert-heic
dcimport ~/Pictures --skip-live-videos
dcimport ~/Pictures --manifest import.json
Run dcimport --help for the full list of options.
File names and folders
--layout accepts {name} and {mtime:...}. The latter uses strftime codes for the file modification time. Slashes create subfolders.
The default layout is {mtime:%Y-%m-%d_%H-%M-%S}_{name}. The selected layout is saved for that destination. Use --force to change it later.
Import tracking
media.db in the destination records each device path, size, and modification time. Editing media on the phone changes its identity and imports it again. Existing local files are not overwritten; name conflicts receive _1, _2, and later suffixes.
Delete media.db only if you intentionally want the next run to import every file again.
Databases with timezone-less records from versions before 0.2 require --legacy-timezone ZONE. If a timestamp falls in a repeated daylight-saving hour, also pass --legacy-fold earlier or --legacy-fold later.
Metadata
Release files for dcimport 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dcimport-0.2.1.tar.gz | 19.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dcimport-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.0 kB
Release files / dcimport-0.2.1.tar.gz
| Download URL | dcimport-0.2.1.tar.gz |
|---|---|
| Size | 19.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c86bec6ab3867bf52c36cf9dd0ab4e6f66d1360bac0b1aa66437d560ebc61a5f
|
|
BLAKE2b-256 checksum How to use checksums |
9e62102a6df3d28836a1cd5a79f3e11d26dd8f88d1b5b006ccd9f3ec68c3d369
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency logRelease files / dcimport-0.2.1-py3-none-any.whl
| Download URL | dcimport-0.2.1-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ced53b5b4e5af6275858d8ee382a86c9e09b9fb4a682455e4e2b2eb64a2a6056
|
|
BLAKE2b-256 checksum How to use checksums |
cf98dd7f70637218a0a72700f65dc30eeb8b623f3568eb20231dcee5d61c073e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.
Transparency log