Metadata-Version: 2.4
Name: Mopidy-Jukebox
Version: 1.0.0
Summary: TouchTunes-style touchscreen jukebox UI for Mopidy
Author: King Butter
License-Expression: MIT
Project-URL: Homepage, https://github.com/kingbutter/mopidy-jukebox
Project-URL: Issues, https://github.com/kingbutter/mopidy-jukebox/issues
Project-URL: Source, https://github.com/kingbutter/mopidy-jukebox
Keywords: mopidy,mopidy-extension,music,jukebox,kiosk,touchscreen
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Sound/Audio :: Players
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Mopidy>=3.4
Requires-Dist: Pykka>=3.0
Requires-Dist: tornado>=6.0
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Dynamic: license-file

# Mopidy-Jukebox

[![PyPI](https://img.shields.io/pypi/v/Mopidy-Jukebox)](https://pypi.org/project/Mopidy-Jukebox/)
[![CI](https://github.com/kingbutter/mopidy-jukebox/actions/workflows/ci.yml/badge.svg)](https://github.com/kingbutter/mopidy-jukebox/actions)

A [Mopidy](https://mopidy.com/) extension that turns a touchscreen into a
TouchTunes-style jukebox. Guests browse album art, spend free credits, and
queue the next song — from the cabinet itself or from their phone.

Built for an actual 1990s TouchTunes Allegro cabinet with a resistive Elo
panel, so the UI assumes single-touch, no hover, and no keyboard.

## What it does

- **Art-first browsing.** Categories come from whatever your backends expose;
  albums and artists render as tiles, with drill-down to track lists.
- **Dialable selection codes.** Track lists page into banks — A1–A10, then
  B1–B10 — and an on-screen keypad lets you punch in a code, the way the
  mechanical machines worked.
- **Credits.** Free, but rationed: a starting balance and a slow refill, so
  one person can't own the night.
- **No transport controls for guests.** No pause, no skip, no volume. An
  admin panel hides behind five taps on the credits counter.
- **Attract mode** built from album art already in the cache.
- **Phone and kiosk layouts** from one page, with the device's own keyboard
  on phones and a built-in QWERTY on the wall unit.

Served from Mopidy's own web server, so the page and the JSON-RPC endpoint
share an origin — there is no CORS configuration to get wrong.

## Installation

```sh
python3 -m pip install Mopidy-Jukebox
```

Then open `http://<your-host>:6680/jukebox/`.

## Configuration

Defaults are usable as-is. To change them, add a `[jukebox]` section to your
`mopidy.conf`:

```ini
[jukebox]
enabled = true
start_credits = 4        # credits a guest starts with
max_credits = 8          # ceiling, so credits don't stockpile
refill_seconds = 600     # one more credit every N seconds
cost_per_song = 1
attract_seconds = 90     # idle time before the attract screen
page_size = 10           # rows per selection bank (A1..A10)
title = Jukebox
```

Every client reads these from `/jukeboxapi/config.json`, so a change here
applies to the wall unit and every phone at once.

## Project resources

- [Source code](https://github.com/kingbutter/mopidy-jukebox)
- [Issue tracker](https://github.com/kingbutter/mopidy-jukebox/issues)

## Credits

- Original author: [King Butter](https://github.com/kingbutter)
- Current maintainer: [King Butter](https://github.com/kingbutter)
