Oskar ŚledźBack to work
Case study · Zero-dependency TUI utility

DjiMediaImporter

Every SD card, one keystroke away.

A zero-dependency Python terminal app that automates transferring media off DJI SD cards, organising it into structured folders and safely cleaning up the source afterward.

PythonTUIANSIFile System
GitHub2026 · TUI Utility, Python
DjiMediaImporter main menu with keyboard-driven navigation

Every SD card, one keystroke away.

PythonTUIANSIFile System

DjiMediaImporter watches for a DJI card's DCIM folder, auto-starting an import the moment one appears. It renders the whole flow with flicker-free ANSI redraws instead of screen clears, walks the pilot through a card overview and folder-structure preview before anything is copied, then streams files through a buffered copy with live speed and ETA tracking, MD5 verification on every file, and only deletes source media once the copy has been checked. It's built entirely on the Python standard library — no dependencies to install, nothing to break.

01Live Detection & Dashboard
A detection spinner watches for a connected card, then a capacity and content-breakdown dashboard previews exactly what's about to move.
02Verified, Resumable Copies
Buffered copying with live speed/ETA, MD5 verification on every file, and resumable transfers that pick up where an interruption left off.
03Safe Source Cleanup
A disk-space guard blocks imports that won't fit, and source files are only deleted after a full copy-and-verify pass succeeds.
04History, Tags & Themes
The last 50 imports are logged with tags, notes and stats, and four color themes plus English/Polish language support are configurable in Settings.

Inside the app.

DjiMediaImporter main menu with keyboard-driven navigation
DjiMediaImporter card overview dashboard with content breakdown by media type
DjiMediaImporter file selection screen with filters for video, photos and RAW
DjiMediaImporter media summary screen ready for import
DjiMediaImporter import confirmation screen with project name, tags and dry-run option
DjiMediaImporter success screen confirming files copied and source cleaned up
Next case study

Motivio