Skip to main content

Marquee

Turns one item in a media library into Plex-style rows of other items in that same library. Built for self-hosted media servers.

IN:  "The Sopranos"

OUT:
  Shows like The Sopranos      Gomorrah, Boardwalk Empire, The Wire, ZeroZeroZero
  More from Tim Van Patten     Game of Thrones, Black Mirror, Boardwalk Empire
  More with Edie Falco         Nurse Jackie, Oz
  Shot by Alik Sakharov        Game of Thrones, House of Cards

Two halves, both required

A retriever decides what goes in the rows, by joining your library on shared cast, crew and franchise and by embedding similarity. A small fine-tuned model decides which rows are worth showing, their order, and what to call them.

The model never sees item ids — it answers with index references into candidates it was handed, so it cannot invent a title that isn't in your library.

Install

pip install marquee-ai

Plus Ollama to run the model.

Download

hf download KernelMedia/marquee-ai --local-dir marquee
cd marquee && ollama create marquee -f Modelfile

~2.8 GB: the model plus a catalog of ~122,000 films and shows with full cast and crew.

Run

marquee serve --library catalog.jsonl --port 8080

That is the whole setup.

curl -X POST localhost:8080/recommend \
  -H 'Content-Type: application/json' \
  -d '{"title": "The Sopranos", "row_size": 20}'

Or from the command line:

marquee recommend --library catalog.jsonl --seed "Blade Runner 2049" --row-size 20
marquee person  --library catalog.jsonl --name "Roger Deakins"

API

POST /recommend   {"seed_id": "myserver-04471", "row_size": 20}
GET  /search?q=Scorsese          # matches titles AND people
GET  /person?name=Roger%20Deakins
GET  /health
DELETE /cache                    # after a library rescan

/search and /person are pure index lookups — no model call, effectively instant. Only /recommend uses the GPU.

Items carry an owned flag, so a UI can offer a Request button on anything not on the server. Ambiguous titles return 409 with the candidates rather than guessing — Godzilla matches three films. Narrow with year and media_type, or write "Top Gun (1986)" directly.

Use it as a library

The HTTP API is optional. If your server is Python, skip it:

from marquee import Library
from marquee.contract import messages, parse, repair, expand_rows

lib = Library.load("lib.jsonl")
lib.build_embeddings(cache=Path("lib.emb.npz"))     # once at startup

request = lib.build_request(seed_id, semantic_k=14, row_size=20)
raw = call_your_llm(messages(request))              # any OpenAI-compatible endpoint
rows = expand_rows(repair(parse(raw), request), request, 20)

Requirements

VRAM ~3.5 GB (Q4_K_M). Runs on a 4 GB card, or CPU.
RAM ~2.2 GB for a 120k-title catalog
Latency ~1 s per request on an RTX 3060; cached responses are instant

Full setup and troubleshooting: SETUP.md

Data

You harvest TMDB yourself with your own free key; no catalog is distributed. TMDB is free for non-commercial use and requires attribution — commercial use needs a written agreement with them.

This product uses the TMDB API but is not endorsed or certified by TMDB.

Licence

Apache-2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marquee_ai-1.0.3.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marquee_ai-1.0.3-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

File details

Details for the file marquee_ai-1.0.3.tar.gz.

File metadata

  • Download URL: marquee_ai-1.0.3.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for marquee_ai-1.0.3.tar.gz
Algorithm Hash digest
SHA256 1b5857fa32c9e7f92a4b7866c72a0f2810d2d6ef2ee6069dc98aff757b3d0486
MD5 79f347b31019450723785d8cf2624eb6
BLAKE2b-256 cf8780d91a5eb7f22f62546294180c6d6618da8137e41230326dd4d6c7908a47

See more details on using hashes here.

File details

Details for the file marquee_ai-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: marquee_ai-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for marquee_ai-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 97a7e8eba593d2bee73e3b3076b6fbc3366775cb77b2dbe0a8f235775d7609e1
MD5 f807dd4297db81c7e153394701a726d8
BLAKE2b-256 badf839fb7254b6dcfc14f37ed8379ffb7014ead551490ea74012e1c75214855

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page