records OTA IPTV streams on a schedule.
- Go 1.22+
ffmpegin PATH
go mod tidy
go run . \
-db ./tangerine.db \
-recordings ./recordings \
-m3u "https://iptv-org.github.io/iptv/cities/usphx.m3u" \
-addr :8080Flags:
| Flag | Default | Description |
|---|---|---|
-db |
tangerine.db |
SQLite database path |
-recordings |
./recordings |
Where to store .mkv files |
-m3u |
Phoenix playlist | M3U source URL |
-addr |
:8080 |
Listen address |
-ffmpeg |
ffmpeg (PATH) |
Path to ffmpeg binary |
GET /api/channels List channels
POST /api/channels/refresh Re-fetch M3U and update channels
GET /api/schedules List scheduled recordings
POST /api/schedules Create schedule
PUT /api/schedules/{id} Update schedule
DELETE /api/schedules/{id} Delete schedule
GET /api/recordings List recordings
DELETE /api/recordings/{id} Delete recording + file
GET /recordings/{id}/stream Stream the recording (supports Range/seeking)
{
"channel_id": 3,
"name": "Jeopardy",
"cron_expr": "30 19 * * 1-5",
"duration_seconds": 1800,
"enabled": true
}Cron format: minute hour day month weekday (standard 5-field, 0=Sunday).