OpenSeek seek previews

self-hosted · MIT · open

Seek previews for any player.
No account, no quota, no expiry.

Real frames from real films, under your pointer. Nothing is playing and nothing here is a placeholder — every image is one rectangle cropped out of a public sprite sheet.

Stay and scrub

Hover a poster · press and drag on touch · arrow keys when focused

live from the registry

2
titles indexed
580
previews
1.63
hours of film covered
0
accounts required

reading the registry…

how it works

Three steps, and the last one is a text file.

  1. 01

    Ask by IMDb id + duration

    One lookup per title. No upload, no video, no account — the registry matches what you already have.

    GET /v1/sprites?imdb_id=tt1022603&duration_ms=5705536
  2. 02

    Get a sheet and a VTT

    A WebVTT where every cue is one rectangle inside a packed JPEG sheet. Cues are positional, so slot i is second i × interval.

    00:34:20.000 --> 00:34:30.000
    sheet-320x180-2.jpg#xywh=960,360,320,180
  3. 03

    Crop one tile, in anything

    Web, TV, phone, desktop. Floor lookup is a loop over a list you already hold, and the files never expire, so you can cache them like any other image.

    # last cue whose start ≤ position, or nothing at all

coverage, honestly

A partial title looks partial.

Loading the index…

  • Nothing indexed yet here You are before the first preview anyone contributed. The registry has no frame for this second, so we draw no frame.
  • No preview here yet Past what viewers have banked. The floor lookup would happily return the last tile forever — the coverage bound is what stops it, and the tile stays dark. drag the rail to the end

contribute

The people watching fill the gaps.

  1. 01

    A player with contribute on captures one tile per interval as the film plays.

  2. 02

    Every 48 banked tiles flush as one bundle: title block, VTT, sprite sheets.

  3. 03

    The registry merges same-title bundles slot by slot, so coverage grows without anyone re-uploading a film.

  4. 04

    Workers stripe the rest. Until they do, past the bound reads as no preview — never a stale frame.

The playback client is released (v0.1.0); the capture half is built and not in a release yet.