Skip to main content

A retro-style internet radio player for the terminal

Project description

Vintage Radio

A retro-style internet radio player for the terminal.

╔══════════════════════════════════════════════════════════════════════════════════════╗
║                                    ~ R A D I O ~                                     ║
║  ╭────────────────────────────────────────────────────────────────╮  ╭────────────╮  ║
║  │  |      SomaFM Groove Salad                         PLAYING   │  │ │ │ │ │ │ │ │  ║
║  │  |      00:42              VOL: 60%                           │  │ │ │ │ │ │ │ │  ║
║  ╰────────────────────────────────────────────────────────────────╯  │ │ │ │ │ │ │ │  ║
║       [ |<< ]    [ > PLAY ]    [ [] STOP ]    [ >>| ]                │ │ │ │ │ │ │ │  ║
║  ╭────────────────────────────────────────────────────────────────╮  │ │ │ │ │ │ │ │  ║
║  │  ▶ 1. SomaFM Groove Salad                                     │  │ │ │ │ │ │ │ │  ║
║  │    2. SomaFM Drone Zone                                       │  ╰────────────╯  ║
║  │    3. KEXP Seattle                                            │                   ║
║  ╰────────────────────────────────────────────────────────────────╯                   ║
╚══════════════════════════════════════════════════════════════════════════════════════╝

Features

  • Retro radio UI with speaker grill and VU meters
  • Real-time audio level visualization via ffmpeg
  • 8 beautiful themes (Retro, Synthwave, Dracula, Nord, Gruvbox, and more)
  • Add your own stations
  • Keyboard-driven interface

Installation

From PyPI

pip install vintage-radio

From source

git clone https://github.com/philjung/terminal-radio
cd terminal-radio
pip install .

Requirements

  • Python 3.9+
  • mpv - for audio playback
  • ffmpeg (optional) - for VU meter visualization

On macOS:

brew install mpv ffmpeg

On Linux:

sudo apt install mpv ffmpeg  # Debian/Ubuntu

Usage

radio

Keyboard Shortcuts

Key Action
Space Play / Pause
S Stop
N Next station
P Previous station
/ Volume up / down
A Add new station
T Switch theme
Q Quit

Themes

Switch themes with T:

  • Bakelite - Dark brown with brass accents (default)
  • Retro Radio - Warm wood tones
  • Mint Retro - Silver with teal accents
  • Vintage Cream - Light beige and brown
  • Synthwave - Neon pink and cyan
  • Dracula - Purple and green
  • Gruvbox - Orange and earthy tones
  • Nord - Cool arctic blues

Configuration

Your stations are stored in ~/.config/terminal-radio/stations.m3u. You can edit this file directly or add stations via the app with A.

Example format:

#EXTM3U

#EXTINF:-1,SomaFM Groove Salad
http://ice1.somafm.com/groovesalad-128-mp3

#EXTINF:-1,KEXP Seattle
http://live-mp3-128.kexp.org/kexp128.mp3

License

MIT

Author

Phil Jung

Project details


Download files

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

Source Distribution

vintage_radio-1.0.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

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

vintage_radio-1.0.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file vintage_radio-1.0.0.tar.gz.

File metadata

  • Download URL: vintage_radio-1.0.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for vintage_radio-1.0.0.tar.gz
Algorithm Hash digest
SHA256 93312b2a77f4d697d28daa18aa6eb0b49cf6ce012d50885d0905a2c37fdd6268
MD5 af719ac2049ac664475dd80754b3d0f9
BLAKE2b-256 b9123082a5833391f51448b05e267b6dfd8639f9ed7c4d239acdff9b922878c8

See more details on using hashes here.

File details

Details for the file vintage_radio-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: vintage_radio-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for vintage_radio-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dd099cfbc02b6bc399c4c2ff7cf3ff4951b561cfb3e3c040213b1ff3f30ba83b
MD5 40a1bc19fb15b445a58a5c4ca559cf46
BLAKE2b-256 a2dad89c8636aa9434ebb91d72c1aaccfacc85573e0a14d220a93d3bf90bc441

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 Pingdom Monitoring Sentry Error logging StatusPage Status page