Metadata-Version: 2.4
Name: shuttlecheck
Version: 0.1.0
Summary: Check media filenames, folder structure and deliverables against a written convention. Read-only.
Author-email: MVRK Systems <hello@mvrk.systems>
License: Proprietary — free to use, no redistribution
Project-URL: Homepage, https://mvrk.systems/shuttlecheck
Project-URL: Documentation, https://mvrk.systems/shuttlecheck#checks
Keywords: broadcast,post-production,dailies,media,naming-convention,file-naming,delivery,conformance,validation,vfx,video
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: Other/Proprietary License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: System :: Archiving
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyYAML>=6.0
Requires-Dist: jsonschema>=4.20
Requires-Dist: tzdata>=2024.1; sys_platform == "win32"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Dynamic: license-file

# ShuttleCheck

**Check media filenames, folder structure and deliverables against a written
convention.** Nothing in this package renames, moves or deletes anything.

On a production the naming convention is a PDF or a message in a chat, and
every vendor on the job breaks it. Nobody finds out until a conform fails in
post, or a lab rejects a delivery at four in the morning.

```bash
pip install shuttlecheck
shuttlecheck ui
```

Point it at a job you have already finished. It works out the convention you
are already using, then shows you every file that does not follow it.

---

## It reads the convention off your own files

Nobody can describe their naming convention in the abstract, and nobody should
have to. Point `init` at a finished job and it recovers the fields, tells you
how confident it is in each one, and flags anything it had to guess at.

```
FIELDS RECOVERED
  {project}      constant   100%  NRD24
  {day}          integer     90%  DAY1, DAY2
  {stage}        enum        80%  HALLA, HALLB
  {session}      integer     90%  SES001, SES002
  {title}        slug        85%  opening-remarks, keynote
```

It handles conventions that disagree with themselves — several accepted forms
per field, optional elements, free-text titles containing the separator —
because real ones do.

## Then it tells you what breaks it

```
SHUTTLECHECK CONFORMANCE REPORT
  files scanned      412
  conforming         398
  errors               9   ingest will fail
  warnings             5   inconsistent, will work

ERROR    filename-mismatch   (6)
  D02/MAIN/MASTERS/AUT26_D02_MAINSTAGE_S114_v01.mov
    the stage field does not match what the spec allows
```

Findings name the field at fault, not just the file. Errors mean an ingest will
reject it; warnings mean it is inconsistent but will work. The two are never
conflated, because a noisy report does not get read.

## What it checks

| | |
|---|---|
| Names and folders | Against a pattern, with the offending field identified |
| Codec and container | Read from the file, not from the filename's claim |
| Resolution, frame rate, scan | Including 29.97 handled as `30000/1001` |
| Audio | Channel count, layout, sample rate, bit depth |
| Sidecars | Captions, checksums, metadata a deliverable must carry |
| Packages | Whether a session is short a master, a proxy, a cutdown |
| Portability | Illegal characters, reserved names, path length, case collisions |
| Unicode | Names that compare equal on one platform and not another |

Media inspection uses `ffprobe` when it is on your PATH. When it is not, those
checks are reported as **skipped** — never as passed. A silent skip is how a
conformance tool starts lying.

## For live events, the running order does the work

An event agenda is structured data that exists weeks before anyone turns a
camera on. Joined against time-of-day timecode, every recording names itself —
stage, session, speaker, sponsor — with no inference of any kind.

It will also tell you when a filename is well-formed and still wrong: `S007`
recorded during `S011` is a valid shape carrying a false claim, and only the
running order knows.

## Checking a drive that arrived

If a drive was sealed with a convention on it, one command with no arguments
checks both that it arrived intact and that the names conform:

```bash
shuttlecheck verify /Volumes/SHUTTLE01
```

No spec to be told about, no account, no connection.

---

## What this package will not do

It will not rename, move or delete anything. That boundary is the point: it is
the command a stranger will run on a live job, because running it cannot cost
them anything.

Conforming files, the reversible journal, sealing drives and per-vendor specs
are licensed separately as ShuttleCheck Pro. Asking for one of those commands
here prints an explanation rather than an error.

## Licence

Free to install and use. Not open source: no right to redistribute or modify.
See <https://mvrk.systems/shuttlecheck>.

Made by [MVRK Systems](https://mvrk.systems).
