macOS menubar app to play user-defined radio stations with help from rumps and VLC. It includes a remote
to switch channels, on/off, pause/resume etc. Forked from RadioBar by David May
▶️ Show Now Playing information (in menubar and/or notifications)- ⚡ Lightweight and fast!
- 🖥️ Menubar only, no Dock icon
- 🎵 Add any streaming URL that VLC can play
- 💤 Stop playing when macOS goes to sleep
- 🕹️ Remote control via scripts and launchers such as Alfred
Make sure you have vlc
installed, e.g. using brew cask install vlc
. Also, if you don't have Python installed, install it with brew install python3
. Use the master
repo of rumps to use the sleep()
and wake()
events (see PR #109)
- Adapt
channels.json
to your needs - Check the source code to e.g. change notification settings (manual for now)
- Build the
.app
usingpython setup.py py2app
(see Development) - Install the
.app
from thedist/
directory
Currently no packaged .app
is distributed because I've not yet been able to include an easy way to change / update channels. Suggestions for an easy / simple mechanism are welcome!
- Click a channel to start streaming (a ✔ is shown in front)
- Click the current channel to pause streaming (a
-
is shown in front) - Click "Stop" to stop streaming a channel
- "Now Playing" information shows on top of the menu and/or in menubar (truncated for long titles on smaller screens)
- Notifications are show when the "Now playing" information changes (unless it's the channel / show name)
Check radiobar.py
source code to set options to show notifications or show nowplaying in the menubar.
Pause / resume stops streaming (but shows the channel as paused). It's not buffering radio (which didn't seem logical for live radio). You can also use the remote.py
to automate switching channels, see below.
When macOS sleeps streaming will be stopped and you have to manually resume it (this is a feature). This only works if you're using the latest version of rumps
(see PR #109).
Use the include remote.py
to send commands to a running RadioBar instance to change channels and switch on/off. You can also use the command as part of an Alfred workflow. remote.py
understands the following commands:
n
- switch to channel n in your list (starting at 1) - start playing if stoppedoff
- stop playing raudiopause
- pause playing radio (don't switch station, but stop streaming)resume
|on
- resume playing radio (start streaming again)nowplaying
- output the now playing infoshow
- output the now playing info and trigger a notification
Make sure you have VLC installed, ie. brew cask install vlc
.
Tested in Python 2.7.x and 3.x. To run, try:
pip install -r requirements.txt
python radiobar.py
To re-build the macOS app, run:
rm -rf ./dist/ ./build/
python setup.py py2app
You can also use the supplied Makefile
to use make clean
, make build
(default) and make install
(to copy the new .app to /Applications
)
-
"Now playing" integration is experimental and might not work as expected
-
Sleep / wake only works when using a patched version of. This is now merged inrumps
until PR #109 gets merged.rumps
master
. -
parse_with_options
might not not be needing the second argument (timeout
) in your version. You could remove it (not sure yet if it makes any difference). I'm still trying to implement a hook that watches for metadata changes for now playing. Tips welcome :-) -
To use it with the current VLC (>= 3.x) we need to preload the
libvlccore.dylib
as a workaround. See oaubert/python-vlc#37 for more info.
This is a fork of RadioBar built by wass3r (David May). All credits for the intial concept go to him!
MIT