Android TV client for Emby (Kotlin, Compose for TV) and the Memby gateway (Go, Postgres, Redis) that fronts it. Client: - Setup, profiles, home rows, Media3 playback, system screensaver (Dream) - Backend chosen at build time: gateway when memby.gatewayUrl is set, otherwise direct to Emby. Both paths stay working. - Server-composed home rows, rendered verbatim so new row types ship without an app release - Full-screen animated maintenance state, row engagement telemetry Gateway: - One request per TV screen; auth, caching, search and row shaping - Library import from Emby into Postgres (manual, then hourly incremental) - Recommendations from viewing history (recency-weighted genre affinity) - Admin page for imports, an offline switch, and per-row analytics - Video always direct-plays from Emby; only metadata passes through Identity is com.ponzischeme89.memby throughout, replacing com.mattcohen.embyclientsname. A changed applicationId installs as a new app: TVs need a fresh sign-in and the old package uninstalled. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
1.1 KiB
Bash
33 lines
1.1 KiB
Bash
# Copy to .env next to docker-compose.yml and fill in. Never commit the real .env.
|
|
|
|
# How the gateway container reaches Emby.
|
|
MEMBY_EMBY_URL=https://molise.bounceme.net
|
|
|
|
# What TVs are told to stream from. Only set this when it differs from the address
|
|
# above — video goes device -> Emby directly, never through the gateway.
|
|
#MEMBY_EMBY_PUBLIC_URL=https://molise.bounceme.net
|
|
|
|
# Postgres password for the memby role. Generate one, e.g.
|
|
# openssl rand -base64 24
|
|
POSTGRES_PASSWORD=change-me
|
|
|
|
# Host port the gateway listens on.
|
|
MEMBY_PORT=8080
|
|
|
|
# How long a cached home payload stays warm.
|
|
MEMBY_HOME_TTL=60s
|
|
|
|
# Admin interface at http://<host>:8080/admin/ — library imports, the maintenance
|
|
# switch, and row analytics. Leave blank to disable /admin entirely. Generate with
|
|
# openssl rand -hex 32
|
|
MEMBY_ADMIN_TOKEN=
|
|
|
|
# Library import. Hourly incremental keeps up with episodes added through the day.
|
|
MEMBY_SYNC_INTERVAL=1h
|
|
MEMBY_SYNC_ON_START=false
|
|
|
|
# Optional Emby service account for imports. Without it the gateway borrows the most
|
|
# recently active TV session, which works but stops if that user is removed.
|
|
#MEMBY_SYNC_USER_ID=
|
|
#MEMBY_SYNC_API_KEY=
|