Media Drop: Sorted, Verified, Then Published
Apps In orbit

Media Drop: Sorted, Verified, Then Published

Media Drop is a drag-and-drop app that files movies, TV, music, and photos onto our media server.

I built the whole pipeline: it works out what each file is, sends it over SSH, and tells the library to index it.

The detail I am proud of is that nothing is published until the bytes are verified and the file has been decoded to prove it plays.

PythonQtSSH

Why it exists

Filing movies onto the family media server by hand was leg-work, and error-prone leg-work at that. Every file needed a canonical name, the right folder, and the right drive, and one slip meant a movie the library could not see.

The deeper reason is trust. The server’s drives went through a stretch of dropping off the bus mid-write, and a file corrupted that way looks perfect. Right size, plays fine, until one night it does not. One film decoded cleanly for almost seven gigabytes before the damage surfaced. I wanted a pipeline that could never publish a file like that again. The family’s movie nights run on this thing now.

What it does

Drop a pile, get a plan

Drag files or whole folders onto the window. It works out what each one is, what it should be called, and where it belongs, and shows one review row per item before anything moves.

Verified, then published

Nothing counts as delivered until the landed bytes prove they decode. Every file is checked on the server itself after it arrives, and only then does it get its final name.

Resumable transfers

An interrupted upload picks up where it left off instead of starting over. With multi-gigabyte files, that matters.

It checks its guesses

Titles are matched against the library’s own metadata, with posters and details on each row, so I can confirm the match or pick the right one before sending.

Quarantine, not deletion

A file that fails verification is parked under an honest label rather than published or thrown away. The library never sees it, and neither does movie night.

Phones too

The same drop can also deliver music straight to a phone, and the landed bytes are checked there too.

How it works

Every decision happens before any bytes move. A drop is classified, parsed, and planned into one reviewable row per item, and the Send button only lights up when every item is either verified or explicitly accepted by me.

The upload itself lands under a temporary name, never the real one. Then two checks run. The landed byte count has to match the source exactly, and the file has to actually decode on the server it now lives on. Only after both pass is it renamed into place in one atomic move and the library told to index it. If either check fails, the file is parked and labeled, and nothing downstream ever knows it existed.

Where it is headed

  • A view of everything in quarantine, and a way to clear or recover it.
  • Retrying a partly failed batch without dropping everything again.
  • Re-verifying files already on the server instead of trusting a matching size.
Back to portfolio
send a transmission

this goes straight to my inbox.