Video-on-demand interface for FieldStation42. Browse movies with page up/down keys, hit ENTER to play. Shows a slideshow with posters, titles, and descriptions.
Metadata handling: checks for local NFO files first, falls back to TMDB API if missing. You can manually curate some content and automate the rest. Optimized for CRT displays.
Setup
Create a station config file like confs/ppv_movies.json:
{
"station_conf": {
"network_name": "Movie Library",
"channel_number": 42,
"network_type": "web",
"content_dir": "catalog/ppv",
"web_url": "/static/ppv/ppv.html"
}
}
Drop your movie files in catalog/ppv/. Supported: .mp4, .avi, .mkv, .mov, .wmv, .flv, .webm, .m4v
For TMDB matching, put the year in the filename: The Matrix (1999).mp4
TMDB Setup (optional)
Get a free API key at https://www.themoviedb.org/signup (Settings -> API -> Request an API Key)
Add it to confs/main_config.json:
{
"tmdb_api_key": "your_api_key_here"
}
Without TMDB, you'll need to create NFO files manually.
For testing, you can access at http://localhost:4242/static/ppv/ppv.html?channel=42
Controls
- Page-Up / Page-Down - Navigate movies
- ENTER/SPACE - Play selected movie
- P - Pause/resume slideshow (10s auto-advance)
Manual Metadata
NFO files are just ascii text files - FS42 will parse them looking for the first 3 lines to be:
- Title
- Info line (year, artist, etc)
- Description
Example The_Big_City.nfo:
The Big City
Unknown Artist
In this feature, they talk about the big city and what that means.
Poster images: same base filename as video (movie.mp4 -> movie.jpg or .png)
Metadata Priority
- Local NFO -> use it (skip TMDB)
- Local image -> use it (skip TMDB)
- No NFO -> fetch from TMDB
- No image -> use TMDB poster
Mix and match as needed. TMDB data gets cached in catalog/.tmdb_cache/
URL Parameters
channel(required) - channel numberduration- slideshow duration in ms (default: 10000)variation- theme:modern,retro,terminalcss- custom CSS filebg- background imagebg_color- background color
Example: ?channel=42&duration=15000&variation=retro
Background Music
Create fs42/fs42_server/static/ppv/music_playlist.json:
{
"music_files": [
"music/track1.mp3",
"music/track2.mp3"
]
}
Loops at 30% volume, stops when you play a video.
API Endpoints
GET /ppv/{channel_number}- list videos with metadataGET /ppv/image/{channel_number}/{filename}- serve poster imagesPOST /ppv/{channel_number}/play_file- send play command to player queue
Example play request:
{
"file_path": "catalog/ppv/The_Matrix_(1999).mp4"
}
Troubleshooting
Movies not showing? Check file extensions, verify content_dir path, check server logs.
TMDB not working? Verify API key in confs/main_config.json, include year in filenames. Rate limit is 40 req/10s.
Posters not loading? Check filename matches video, browser console for errors.