Metadata Commands
Extract, store, and query metadata from video and media files. Dits automatically indexes technical metadata like resolution, codec, duration, and timecode for efficient searching and organization.
Automatic Metadata Extraction
When you add files, Dits automatically extracts key metadata. These commands let you scan existing files, view extracted metadata, and search across your media library.
| Command | Description | Usage |
|---|---|---|
| meta-scan | Scan files and extract metadata | dits meta-scan [OPTIONS] [PATH] |
| meta-show | Show metadata for a file | dits meta-show <PATH> |
| meta-list | List all stored metadata | dits meta-list [OPTIONS] |
dits meta-scan
Scan files and extract metadata. Useful for indexing existing files or rescanning after metadata extraction improvements.
Synopsis
dits meta-scan [OPTIONS] [PATH]Options
--force Rescan files with existing metadata
--deep Extract extended metadata (slower)
--parallel <N> Number of parallel scan jobs
--progress Show progress bar
--json Output results as JSON
-v, --verbose Show detailed outputExamples
# Scan entire repository
$ dits meta-scan
Scanning for media files...
Found: 156 media files
Already indexed: 142
Needs scanning: 14
Scanning: 100% ████████████████████ 14/14
Results:
Videos: 12 (8 new)
Audio: 2 (2 new)
Images: 0
Project files: 0
# Scan specific directory
$ dits meta-scan footage/
Scanning footage/...
Scanned: 45 files
New metadata: 45 entries
# Deep scan for extended metadata
$ dits meta-scan --deep footage/
Extracting extended metadata...
- Color space profiles
- Audio channel layout
- HDR metadata (if present)
- Camera metadata (EXIF)
...
# Force rescan all files
$ dits meta-scan --force
Rescanning all 156 files...
Updated: 156 metadata entriesExtracted Metadata
| File Type | Standard Metadata | Deep Scan Adds |
|---|---|---|
| Video | Resolution, codec, duration, framerate, bitrate | Color space, HDR, audio layout, timecode |
| Audio | Channels, sample rate, duration, codec | Bit depth, loudness (LUFS), peak levels |
| Image | Dimensions, format, color mode | EXIF, ICC profile, GPS (if present) |
| Project | Application, version, duration | Linked assets, sequence settings |
dits meta-show
Show detailed metadata for a specific file. Displays all extracted technical information.
Synopsis
dits meta-show [OPTIONS] <PATH>Options
--json Output as JSON
--raw Show raw metadata (all fields)
--section <NAME> Show only specific sectionExamples
# Show metadata for video file
$ dits meta-show footage/scene01.mov
Metadata: footage/scene01.mov
File Information:
Path: footage/scene01.mov
Size: 2.3 GB
Content hash: abc123def456...
Scanned: 2025-01-15 14:30:00
Container:
Format: QuickTime / MOV
Duration: 00:05:32.15 (332.15s)
Bitrate: 55.4 Mbps
Video Track:
Codec: H.264 (avc1)
Resolution: 3840 x 2160 (16:9)
Frame Rate: 23.976 fps
Bit Depth: 8-bit
Color Space: Rec. 709
Scan Type: Progressive
Bitrate: 50 Mbps
Keyframes: 166 (every 2s)
Audio Track:
Codec: AAC (mp4a)
Channels: 2 (stereo)
Sample Rate: 48000 Hz
Bitrate: 256 kbps
Timecode:
Start: 01:00:00:00
Drop Frame: No
# Show only video section
$ dits meta-show --section video footage/scene01.mov
Video Track:
Codec: H.264 (avc1)
Resolution: 3840 x 2160 (16:9)
...
# JSON output for scripting
$ dits meta-show --json footage/scene01.mov | jq '.video.resolution'
"3840x2160"
# Show all raw metadata
$ dits meta-show --raw footage/scene01.mov
Raw Metadata (45 fields):
com.apple.quicktime.creationdate: 2025-01-15T10:30:00-08:00
com.apple.quicktime.camera.identifier: C0001
...dits meta-list
List all stored metadata. Filter and search across your entire media library based on technical properties.
Synopsis
dits meta-list [OPTIONS]Options
--filter <EXPR> Filter by metadata expression
--type <TYPE> Filter by file type (video, audio, image)
--codec <CODEC> Filter by codec
--resolution <RES> Filter by resolution
--duration <RANGE> Filter by duration range
--sort <FIELD> Sort by field
--format <FMT> Output format (table, json, csv)
--limit <N> Limit resultsExamples
# List all indexed files
$ dits meta-list
Indexed Files (156):
Path Type Resolution Duration Codec
────────────────────────────────────────────────────────────────────────
footage/scene01.mov video 3840x2160 00:05:32 H.264
footage/scene02.mov video 3840x2160 00:03:45 H.264
footage/interview-a.mov video 1920x1080 00:12:30 ProRes
audio/music.wav audio - 00:03:00 PCM
...
# Filter by resolution
$ dits meta-list --resolution 4K
4K Files (45):
footage/scene01.mov 3840x2160 00:05:32
footage/scene02.mov 3840x2160 00:03:45
...
# Filter by codec
$ dits meta-list --codec prores
ProRes Files (12):
footage/interview-a.mov 1920x1080 00:12:30
footage/interview-b.mov 1920x1080 00:15:45
...
# Filter by duration range
$ dits meta-list --duration ">5m"
Files longer than 5 minutes (23):
footage/interview-a.mov 00:12:30
footage/interview-b.mov 00:15:45
...
# Complex filter expression
$ dits meta-list --filter "resolution=4K AND codec=H.264 AND duration>1m"
Matching Files (32):
...
# Sort by duration
$ dits meta-list --sort duration --limit 10
Longest Files:
footage/full-interview.mov 01:23:45
footage/b-roll-collection.mov 00:45:30
...
# Export to CSV
$ dits meta-list --format csv > media-inventory.csvFilter Expressions
# Filter syntax:
field=value Exact match
field!=value Not equal
field>value Greater than
field<value Less than
field>=value Greater or equal
field<=value Less or equal
field~pattern Regex match
# Combine with:
AND Both conditions
OR Either condition
NOT Negate condition
() Grouping
# Examples:
resolution=4K
resolution=3840x2160
codec=H.264
codec~prores.*
duration>5m
duration>=00:30:00
framerate=23.976
bitrate>50Mbps
(codec=H.264 OR codec=H.265) AND resolution=4KUse Cases
Media Inventory
# Generate a complete media inventory
$ dits meta-list --format csv > inventory.csv
# Summarize by codec
$ dits meta-list --format json | jq 'group_by(.codec) | map({codec: .[0].codec, count: length})'
# Find all HDR content
$ dits meta-list --filter "hdr=true"Quality Control
# Find files that don't meet delivery specs
$ dits meta-list --filter "resolution<1920x1080"
Warning: 3 files below 1080p:
footage/webcam.mov 1280x720
...
# Check for consistent frame rates
$ dits meta-list --format json | jq 'group_by(.framerate)'Related Commands
- Video Commands - Inspect video structure
- Dependency Commands - Track project dependencies
- Maintenance Commands - Repository statistics