Skip to content

📻 Stream music directly in your terminal with⚡lightweight, keyboard-controlled player 🚀 For CLI lovers who want music without bloat

License

Notifications You must be signed in to change notification settings

bloomingchad/pnimrp

Repository files navigation

pnimrp Icon

♪♫ pnimrp - Poor Man's Radio Player in Nim ♫♪

Are you on the terminal and want to listen to music without opening the web browser? pnimrp is here to save the day! 🎉

With a collection of 30+ modifiable radio station links (JSON), you can browse, play, pause, and mute your favorite stations—all from the comfort of your terminal. No more fiddling with PLS files! 🚀

Inspired by Poor Man's Radio Player, pnimrp takes things to the next level with added features and improvements.

🌟 Key Features

  • Portable: Works seamlessly on Unix and Windows. 📦
  • Easy to Use: Simple menu-driven interface. 💡🎮
  • Modifiable Stations: Edit JSON files to add or remove stations.🔧
  • Now Playing: Displays the currently playing song.📻
  • Async Input: Non-blocking key polling for smooth controls.
  • Lightweight: Minimal dependencies, fast and efficient.⚡
  • Customizable Themes: Easily switch between themes by editing config.json. 🎨

🚀 Installation

Step 1: Install mpv with development files for your distribution.

Step 2: Install the Nim compiler:

  • Unix:
    curl https://nim-lang.org/choosenim/init.sh -sSf | sh
  • Windows: Download the latest release from choosenim.
  • Other Distros: Follow the official Nim installation guide.

Step 3: Install pnimrp:

nimble install pnimrp

Or compile it manually:

nim c -d:release pnimrp
./pnimrp

🎥 Demo

pnimrp Demo

🎮 Controls

Key Action
1-9, a-l Select menu options
R Return to the previous menu
Q Quit the application
P Pause/resume playback
M Mute/unmute
+ Increase volume
- Decrease volume

🎨 Customizing Themes

You can easily switch between themes by editing the config.json file located in the root directory of the project. Here's how:

  1. Open config.json in a text editor.
  2. Change the currentTheme field to the desired theme (e.g., default, dark, vibrant).
  3. Save the file and restart the application.

📖 Documentation

For detailed usage instructions, see:

  • 📄 doc/user.md: User guide.
  • 📄 doc/installation.md: Installation instructions.

To generate HTML documentation:

nim rst2html file.rst

Then open htmldocs/file.html in your browser.

🤝 Contributing

We welcome contributions! Here’s how you can help:

  1. Report Bugs: Open an issue on GitHub.
  2. Suggest Features: Share your ideas for new features.
  3. Submit Pull Requests: Fix bugs or add new functionality.

Please read our Contributing Guidelines for more details.

📜 License

pnimrp is primarily licensed under the Mozilla Public License 2.0 (MPL-2.0). See the LICENSE file for details. However, the following component is licensed under the DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE (WTFPL):

  • illwill.nim: Adapted from illwill, this file is used for non-blocking input handling and is licensed under the WTFPL. The original license text is included in the file. For more information about the WTFPL, see: WTFPL License.

🙏 Credits

  • pmrp: Inspiration and initial codebase.💡
  • libmpv: Playback functionality.📻
  • c2nim: Wrapping objects.
  • illwill: Async input handling.
  • ChatGPT 3.5: Documentation and code improvements.🤖
  • Claude 3.5 Sonnet: Documentation and brainstorming.
  • DeepSeek-V3: Documentation and Code improvements 🥰
  • You: For using and supporting this project! ❤️

🎉 Happy Listening!

Thank you for using pnimrp! If you enjoy the project, consider giving it a ⭐ on GitHub or sharing it with your friends. Let’s make terminal radio awesome! 🎶

About

📻 Stream music directly in your terminal with⚡lightweight, keyboard-controlled player 🚀 For CLI lovers who want music without bloat

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks