Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History
123 lines (87 loc) · 3.12 KB

File metadata and controls

123 lines (87 loc) · 3.12 KB

movie2usb

Copies movies to USB drives with verification.

Note: Device size validation protects against accidentally formatting the wrong drive.

Steps

  1. Create/read SHA1 checksums from film directory
  2. Read meta file for stick_label
  3. Validate device size, format as ExFAT
  4. Mount to <mount-dir>/<device_id>
  5. Copy files (skip existing verified)
  6. Verify checksums
  7. Retry failed files (up to 3x)
  8. Print summary, archive log
  9. Unmount
  10. Prompt for next stick

Requirements

  • macOS (uses diskutil)
  • Film directory with movie files
  • Meta file with stick_label = "..."

Usage

# List matching USB devices
movie2usb --ls

# Process a device
movie2usb /dev/disk4

# Custom stick size (32GB ± 4GB)
movie2usb /dev/disk4 --stick-size 32.0 --size-tolerance 4.0

# Custom paths
movie2usb /dev/disk4 --film-dir ./movies --meta-file ./config.toml

Options

Option Default Description
--ls - List USB devices matching size range
--stick-size 16.0 Expected USB stick size in GB
--size-tolerance 2.0 Size tolerance in GB (±)
--mount-dir /tmp Base directory for mounting
--film-dir ./film Directory containing movie files
--meta-file ./film/.meta.toml Path to meta.toml file
--logs-dir ./logs-archive Directory for archiving logs

TUI Application

The movie2usb-tui binary provides a dashboard interface for processing multiple USB sticks concurrently.

Features

  • Device list with multi-select (left panel)
  • Real-time output grid for parallel processing (right panel)
  • Auto-scroll output cells to show latest logs
  • macOS notifications on completion

Controls

Key Action
/ or k/j Navigate device list
Space Toggle selection and advance
Ctrl+A Select all devices
Enter Start processing selected devices
Ctrl+R Refresh device list
q Quit

Usage

# Start TUI with defaults
movie2usb-tui

# Custom stick size
movie2usb-tui --stick-size 32.0 --size-tolerance 4.0

Options

Same options as movie2usb (see above), except --ls which is not applicable.

Build

# Install CLI version
cargo install --git [email protected]:sassman/movie2usb-rs.git

# Install TUI version
cargo install --git [email protected]:sassman/movie2usb-rs.git --bin movie2usb-tui

Binaries: movie2usb, movie2usb-tui

ffmpeg tricks

to split a movie to 2gb parts:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
    "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map \
    "[outa]" -segment_time 2000 -f segment -reset_timestamps 1 output_%03d.mp4
 
# or for single input:
ffmpeg -i input.mp4 -c copy -map 0 -fs 2000000000 -segment_time 99999 \ 
    -f segment output_%03d.mp4

Notes

On macOS by default a EFI partition is created on USB sticks, which causes 2 partitions to show up. The GPT confuses DVD Players and smart TVs. To avoid this, you can create a single partition scheme with diskutil:

diskutil eraseDisk "MS-DOS FAT32" STICK_NAME MBR /dev/diskX