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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dcimport-0.2.1.tar.gz.
File metadata
- Download URL: dcimport-0.2.1.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c86bec6ab3867bf52c36cf9dd0ab4e6f66d1360bac0b1aa66437d560ebc61a5f
|
|
| MD5 |
af26f60f541d2fc1e1a22fa33d1cce46
|
|
| BLAKE2b-256 |
9e62102a6df3d28836a1cd5a79f3e11d26dd8f88d1b5b006ccd9f3ec68c3d369
|
Provenance
The following attestation bundles were made for dcimport-0.2.1.tar.gz:
Publisher:
publish.yml on artificiadrian/dcimport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcimport-0.2.1.tar.gz -
Subject digest:
c86bec6ab3867bf52c36cf9dd0ab4e6f66d1360bac0b1aa66437d560ebc61a5f - Sigstore transparency entry: 2538487046
- Sigstore integration time:
-
Permalink:
artificiadrian/dcimport@b530015e297cc6fe3f8b670792c6d088c0b89385 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/artificiadrian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b530015e297cc6fe3f8b670792c6d088c0b89385 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcimport-0.2.1-py3-none-any.whl.
File metadata
- Download URL: dcimport-0.2.1-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ced53b5b4e5af6275858d8ee382a86c9e09b9fb4a682455e4e2b2eb64a2a6056
|
|
| MD5 |
c00f073eae4c6d561a93d61ef57cb5b6
|
|
| BLAKE2b-256 |
cf98dd7f70637218a0a72700f65dc30eeb8b623f3568eb20231dcee5d61c073e
|
Provenance
The following attestation bundles were made for dcimport-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on artificiadrian/dcimport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcimport-0.2.1-py3-none-any.whl -
Subject digest:
ced53b5b4e5af6275858d8ee382a86c9e09b9fb4a682455e4e2b2eb64a2a6056 - Sigstore transparency entry: 2538487124
- Sigstore integration time:
-
Permalink:
artificiadrian/dcimport@b530015e297cc6fe3f8b670792c6d088c0b89385 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/artificiadrian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b530015e297cc6fe3f8b670792c6d088c0b89385 -
Trigger Event:
push
-
Statement type: