npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

radiocrestin

v1.2.7

Published

Beautiful CLI radio player for RadioCrestin.ro stations

Readme

RadioCrestin.ro CLI Player 🎵

A beautiful terminal-based radio player for RadioCrestin.ro stations. Listen to Romanian Christian radio stations directly from your command line with an intuitive interface and powerful features.

npm version npm downloads License Node

Screenshot

RadioCrestin.ro CLI Player

Features

  • Beautiful Terminal UI - Built with Ink (React for CLI) for a smooth, interactive experience
  • 🎵 70+ Radio Stations - Access all RadioCrestin.ro stations
  • Favorites System - Mark your favorite stations for quick access
  • 🔍 Live Search - Filter stations as you type
  • 📻 Now Playing Info - See current song, artist, and listener count
  • 🎚️ Volume Control - Adjust volume with keyboard shortcuts
  • ⏯️ Media Controls - OS-level media keys support (play/pause/next/previous)
  • 🔄 Smart Streaming - Automatic fallback between multiple stream formats (Direct, HLS, Proxy)
  • 💾 Persistent Config - Favorites and preferences saved across sessions
  • 📦 Auto-Install - MPV downloaded automatically on first run (~30MB)

Installation

Installation (Recommended)

The first time you run it, MPV will be downloaded automatically (~30MB). Subsequent runs are instant.

Global Install

npm install -g radiocrestin@latest
radiocrestin

Quick Start

No installation needed! Just run:

npx radiocrestin@latest

Keyboard Shortcuts

| Key | Action | |-----|--------| | / or j / k | Navigate stations | | Enter | Play selected station | | Space | Pause/Resume | | f | Toggle favorite for selected station | | + / - | Volume up/down | | m | Mute/Unmute | | Type any text | Search/filter stations | | Escape | Clear search | | q or Ctrl+C | Quit |

Features in Detail

Favorites

  • Press f to mark a station as favorite
  • Favorites appear at the top of the list with a ⭐ icon
  • Favorites are saved across sessions

Search

  • Start typing to activate search mode
  • The station list filters in real-time
  • Press Escape to clear search
  • Search works on station names and descriptions

Smart Streaming

The player automatically tries multiple stream formats:

  1. Streams are sorted by the order field from the API
  2. If a stream fails, it automatically tries the next one
  3. Supports Direct, HLS, and Proxy streams
  4. Automatic retry with exponential backoff

Volume Control

  • Use +/- to adjust volume in 5% increments
  • Press m to toggle mute
  • Volume level is saved and restored on next launch
  • Volume bar shows current level visually

OS Media Controls

The player integrates with your operating system's media controls:

  • macOS: Media keys work automatically
  • Windows: Media keys work automatically
  • Linux: Media keys work with MPV's built-in support

You can use your keyboard's play/pause, next/previous buttons to control playback even when the terminal is not in focus.

System Requirements

  • Node.js: 18.0.0 or higher
  • Operating System: Windows, macOS, or Linux
  • Internet Connection: Required for streaming

MPV Installation

The CLI automatically downloads and installs MPV on first run. If you prefer to install MPV manually:

macOS

brew install mpv

Linux (Ubuntu/Debian)

sudo apt install mpv

Windows

choco install mpv

Or download from mpv.io

Troubleshooting

MPV Download Fails

If automatic MPV download fails, install it manually (see above) and the CLI will detect it automatically.

Streams Not Playing

  1. Check your internet connection
  2. Try a different station
  3. The player will automatically try alternative streams

No Sound

  1. Check your system volume
  2. Press m to unmute
  3. Use + to increase volume
  4. Verify MPV is working: mpv --version

Terminal Display Issues

  • Ensure your terminal supports Unicode and colors
  • Try a different terminal emulator
  • Resize your terminal window if the display looks broken

Permission Errors

On some systems, you may need to run with elevated permissions:

sudo npx radiocrestin

Configuration

Configuration is stored in platform-appropriate locations:

  • macOS: ~/Library/Preferences/radiocrestin-nodejs/
  • Windows: %APPDATA%\radiocrestin-nodejs\Config\
  • Linux: ~/.config/radiocrestin-nodejs/

Development

Clone & Install

git clone https://github.com/iosifnicolae2/radiocrestin.git
cd radiocrestin
npm install

Build

npm run build

Dev Mode (Watch)

npm run dev

Run Locally

npm start

Architecture

src/
├── components/          # Ink React components
│   ├── App.tsx         # Main app with state
│   ├── StationList.tsx # Interactive station list
│   ├── NowPlaying.tsx  # Now playing display
│   ├── SearchInput.tsx # Search input
│   └── Help.tsx        # Keyboard shortcuts help
├── services/
│   ├── player.service.ts       # MPV IPC wrapper
│   ├── stream.service.ts       # Stream fallback logic
│   ├── api.service.ts          # RadioCrestin.ro API
│   ├── favorites.service.ts    # Config storage
│   ├── mpv-installer.service.ts # MPV detection/install
│   └── mpv-downloader.service.ts # MPV download
├── utils/
│   └── platform.ts     # Platform detection
├── types/
│   └── station.ts      # TypeScript types
└── cli.tsx             # CLI entry point

Technology Stack

  • Ink - React for CLI interfaces
  • MPV - Audio playback engine
  • TypeScript - Type safety
  • esbuild - Fast builds
  • conf - Configuration storage
  • axios - HTTP client

API

Data is fetched from the official RadioCrestin.ro API:

https://api.radiocrestin.ro/api/v1/stations?timestamp=<unix_timestamp>

The timestamp is rounded to 10-second intervals for efficient caching.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT © Iosif Nicolae

Support

Related Projects

Acknowledgments

  • RadioCrestin.ro for providing the API and streaming service
  • MPV team for the excellent media player
  • Ink team for the beautiful CLI framework

Enjoy listening to RadioCrestin.ro! 🎵