winget install --id=ElijahLopez.MusicCaster -e
A modern music player that supports Google Chromecasts, Home Mini's, etc.
Music Caster is a modern music player with the ability to cast audio files, system audio, and URLs to Google Chromecasts, Google Home/Nest Minis, etc.
Display languages: English, German, Spanish, French, Italian, Dutch, Russian*, and Ukrainian*
Unique users as of April 23rd 2023: 3,800
winget install "Music Caster"
Not maintained, but I did get it to work on Ubuntu once. Music Caster is not straight forward to package, so you can invoke a sudo-free install script.
mkdir -p ~/bin && git clone --depth 1 https://github.com/elibroftw/music-caster.git ~/bin/music-caster
cd ~/bin/music-caster
./linux_install.sh # use sudo for non-interactive install in case a dependency needs to be installed
Here are Music Caster specific keyboard shortcuts aside from the global media hot-keys.
| Shortcut | Window | Behaviour | |------------------------|------------|--------------------------------| | Ctrl + Shift + Alt + M | Global | Activate Main Window | | Ctrl + (Shift) + } | Main | Toggle mini-mode | | Esc | Main | Close Window | | Ctrl + Shift + Q | Main | Exit Program | | Scroll | Main | Volume and Progress Bar | | ⬆ / A | Main | Decrease Volume by 5% | | ⬇ / D | Main | Increase Volume by 5% | | # | Main | Set Volume to # * 10% | | K | Main | Pause / Resume / Start Playing | | Shift + N | Main | Next Track | | Shift + P / Shift + B | Main | Previous Track | | J | Main | Rewind 5 seconds | | L | Main | Fast-forward 5 seconds | | Ctrl + R | Main | Cycle Repeat | | Ctrl + M | Main | Mute | | Ctrl + 1 | Main | Go to Tab 1 (Queue) | | Ctrl + 2 | Main | Go to Tab 2 (URL) | | Ctrl + 3 | Main | Go to Tab 3 (Library) | | Ctrl + 4 | Main | Go to Tab 4 (Playlists) | | Ctrl + 5 | Main | Go to Tab 5 (Timer) | | Ctrl + 6 | Main | Go to Tab 6 (Metadata) | | Ctrl + 7 | Main | Go to Tab 7 (Settings) |
settings.json
settings.json
Below is the reasonable data that is collected when errors are encountered. I'm sure other programs collect way more than necessary.
# in handle_exception,
payload = {'VERSION': VERSION, 'FATAL': restart_program, 'EXCEPTION TYPE': exc_type.__name__,
'LINE': exc_tb.tb_lineno, 'TRACEBACK': trace_back_msg, 'LOG': log_lines,
'MQ[0]': playing_uri, 'PLAYING_STATUS': str(playing_status), 'DEVICE': device,
'CWD': os.getcwd(), 'PORTABLE': not os.path.exists(UNINSTALLER),
'MAC': hashlib.md5(get_mac().encode()).hexdigest(), 'OS': platform.platform(), 'TIME': current_time}
In addition, I collect MD5 hashed MAC addresses and IP addresses in a Google Excel Sheet. Only I have access to this data, I will NEVER give it to anyone else. Will stop collecting analytics once I stop caring about the number of users.
docker pull elibroftw/mc-builder
docker build . -t elibroftw/mc-builder
docker run --rm --volume .:/var/music-caster elibroftw/mc-builder
python3.12 -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Non-Windows