← Darkroom Labs

Contact Sheet

DEVELOP YOUR VR GALLERY

Pull new clips and stills off your headset's gallery, name them like you mean it,
and get them ready to publish — without doing it by hand, clip after clip.

View on GitHub

Every headset gallery has the same problem: clips pile up with names like video_2847.mp4, YouTube uploads are all-or-nothing, and there's no way to just quietly stage everything unlisted until you're ready. Contact Sheet is the small pipeline built to fix that — for one person, on one machine, with nothing sent anywhere you didn't choose.

01

Pull

Finds clips and stills in your Meta Quest gallery it hasn't seen before. Nothing is deleted or reorganised at the source — read-only, every time.

02

Review

A picture-sheet page opens so you can leave out what you don't want — other content, accidental recordings — before anything downloads.

03

Rename

A clean, date-based convention you control. No auto-generated gibberish, no symbols, nothing that leaks what's actually in the file.

04

Publish (carefully)

Clips upload to YouTube as unlisted — always. Going public is a separate command that makes you type PUBLISH. Stills route to your own cloud storage instead, since YouTube was never built to show off a photo.

What the picture sheet looks like

A stand-in for the real review page — yours will show your own thumbnails.

►
MyClips_0904_01
MyClips_0904_02
►
MyClips_0904_03
MyClips_0904_04
►
MyClips_0904_05

The unlisted rule is load-bearing

Every upload is unlisted by default, and the script refuses to run if the reference video it copies details from doesn't contain your chosen notice text. That check exists so a clip can never go out without it — not a setting you can forget to tick, a wall it won't climb over. Publishing is its own command, and it won't move without you typing PUBLISH in full.

Get it

Python, your own Chrome, and Google's free YouTube API tier. Twenty to thirty minutes to set up, once.

github.com/DreDarkroom/contact-sheet