Metadata-Version: 2.4
Name: reel-sync
Version: 2.3.0
Summary: Fully-local sync tool for the Sony ICD-UX570 voice recorder
Author: Nicolas
License-Expression: MIT
Project-URL: Homepage, https://pypi.org/project/reel-sync/
Keywords: sony,icd-ux570,voice-recorder,sync,dictaphone
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: rich>=13.0
Requires-Dist: mutagen>=1.47
Requires-Dist: tomli>=2.0; python_version < "3.11"
Provides-Extra: play
Requires-Dist: just_playback>=0.1.8; extra == "play"

# REEL

**A fully-local, automatic sync tool for the Sony ICD-UX570 — and any USB drive.** Plug something in and Reel pulls everything new onto your PC, names it cleanly, and files it where it belongs. Re-plug the same stick and nothing copies twice. A clean terminal, a progress bar, done.

> Everything stays on your machine. Your devices are never wiped. The library is just folders — open it in Explorer any time.

---

## What it does

- **Detects what you plug in.** The recorder (by label *or* its `REC_FILE` folder), and any removable USB drive — sticks, camera cards, anything that mounts.
- **Knows what it's looking at.** A `REC_FILE` folder → voice recorder; `DCIM` or mostly photos → camera; mostly audio → music stick; anything else → a generic drive.
- **Copies only what's new.** Every file is fingerprinted; already-synced files are skipped. Each device keeps its own dedup index, so re-plugging never duplicates.
- **One library, sorted right.** Everything lands in the same `Reel/` folder:
  - **The recorder's audio** → smart categories (Interviews / Songs / Memes / Podcasts / Voice Notes), by source folder, filename keyword, or length.
  - **Everything else** → by file kind: **Photos, Videos, Audio, Documents, Archives, Other**.
- **Names it right.** Recordings and camera files get a date-first, sorts-forever name (`2026-06-08_1432_IMG_0421.jpg`); files that already have a real name — documents, music — keep it.
- **Fully automatic — no questions.** Plug a drive in and it syncs. One shared index means the same file never copies twice, even off two different cards. (Recorder-only? Set `enabled = false` under `[devices]`.)
- **Mirrors** to any extra drives you list, so sync doubles as backup.
- **Runs automatically** in watch mode — leave it running and every plug-in just syncs, then it bows out the moment you unplug.

Files land here — one folder, organised:
```
Reel/
├── Interviews/2026/2026-06-08_1432_reel-7F3A.mp3   ← recorder audio, smart-categorised
├── Songs/2026/2026-05-30_2011_reel-A1C9.mp3
├── Photos/2026/2026-05-14_0941_IMG_0421.jpg        ← anything else, filed by kind
├── Videos/2026/2026-05-14_0941_MVI_0423.mp4
├── Documents/2026/Tax Return 2025.pdf              ← real names kept
└── .reel/manifest.json                             ← one dedup index (nothing copies twice)
```

---

## Install

Once it's published, anyone can install it from PyPI:
```
pip install reel-sync
```
(The package is `reel-sync`; the command you run is just `reel`.)

### From this folder (for development)

1. **Install Python 3.11+** (python.org → tick *Add Python to PATH*).
2. **Install Reel as a command** — open a terminal in this folder once:
   ```
   pip install -e .
   ```
   That puts a `reel` command on your PATH, so you can run it from **any** folder
   (including `C:\Users\YOU>`), not just this one.
3. **Set your path** in `config.toml`:
   ```toml
   [library]
   sync_root = "C:/Users/YOURNAME/Reel"
   ```
   Point `sync_root` at a cloud-synced folder (pCloud / OneDrive / Dropbox) and your off-site backup is automatic.

Reel finds this `config.toml` automatically wherever you run it from (it also
checks `./config.toml` and `~/.reel/config.toml` first). No config at all? It
falls back to sensible defaults (`~/Reel`).

---

## Use it

You really only need two commands. Run them from anywhere — your home prompt is fine.

**First time** — run this, then plug in the recorder when it asks:
```
reel setup
```
A short welcome, then it waits for your ICD-UX570, does the big initial copy, and
**stays running as auto-sync** from there. (Run `reel setup` again later and it
just says *"Already set up :)"*.)

**The hands-off way (recommended)** — set it once and forget it:
```
reel auto
```
Reel now starts with Windows and **syncs the moment you plug anything in** — no
terminal, nothing to remember. (See *Make it truly hands-off* below. `reel auto off`
turns it back off.)

**Or run it in a terminal** when you want to watch it work:
```
reel start
```
It does the initial sync, then keeps syncing automatically whenever you **drop a
file onto the recorder from your PC** — and it **stops by itself the moment you
unplug** the recorder. (Press **Ctrl + C** to stop sooner.)

That's the whole flow. The rest is optional:

```
reel sync              # a single one-off sync, then exit (rarely needed)
reel sort <path>       # auto-filter a folder/files you drop in (or use the .bat)
reel play              # play your latest recording (right in the terminal)
reel play songs        # play through a whole category (or: interviews, voice, …)
reel play <file|word>  # play one recording, a folder, or anything matching a name
reel status            # what's in your library, per category
reel devices           # is the recorder detected right now?
reel open              # open the Reel library in Explorer
reel reset             # clear first-time setup (to see the welcome again)
reel --theme dark start# dark terminal theme
```

### Listen back (`reel play`)
A little terminal player, same vibe as the rest: a live progress bar, a queue,
and one-key controls — **space** pause, **n / b** skip, **◂ ▸** seek, **±** volume,
**q** quit. `reel play` alone grabs your latest recording; `reel play songs`
(or `interviews`, `voice`, `podcasts`, `memes`) plays through that whole shelf,
newest first.

Playback is an **optional add-on** so the core sync never depends on an audio
library. Turn it on once:
```
pip install reel-sync[play]      # or:  pip install just_playback
```
Without it, `reel play` simply opens the file in your system's default audio app.

(`python -m reel start` and `python run.py start` work identically.)

### Make it truly hands-off — `reel auto`
One command and you never think about it again:
```
reel auto         # run at login + start watching now (no terminal to keep open)
reel auto off     # turn it back off
reel auto status  # is it on / running right now?
```
`reel auto` installs a tiny hidden launcher so Reel starts with Windows and watches
quietly in the background. Here's what you actually see:

> **Plug a drive in →** a window pops up showing the logo and live progress bars as it
> syncs. **When it's done →** the window tucks itself down to the taskbar (like clicking
> the **–** button) and sits there as a calm "all synced" spinner. **Unplug →** the
> window vanishes. The background watcher keeps waiting for the next drive.

That's the whole thing: plug in, watch it sort, walk away. Because `reel auto` already
runs continuously, **`reel start` isn't needed** — run it and Reel just reminds you
it's already on autopilot.

---

## Branding

Light by default — colours tuned for a white terminal. Want dark? `theme = "dark"` in `config.toml`, or `--theme dark` on any command. Identity lives in `reel/branding.py`.

## Notes

- **Privacy:** nothing leaves your machine except the copies you put in your own mirror/cloud folders.
- **Safety:** `delete_after_sync = false` by default — Reel only ever *copies* off your devices, never deletes from them.
- **No duplicates:** one content-hash index (`.reel/manifest.json`) covers the whole library, so the same file off two different drives only lands once.
- **Coming later:** smarter sorting, a few quality-of-life touches. See `ROADMAP.md`. (Any-USB-device auto-sync and built-in playback have both landed.)

---

*REEL v2.2.0 — plug it in, sorted.*
