Skip to content

elibroftw/music-caster

Repository files navigation

GitHub Releases Source Forge

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

Screenshots

Donate or Translate

  • monero:84PR6SkYd5zaFLKDjAFrQfbaAg2c7SV3q3XDZ15QCpEZUggrN4YzY7n8m9XC3deXjo41yWHTm1LrsUpPTYGnRQbD9Cwp8En
  • PayPal
  • Translate Music Caster to other languages

Install

  • IMPORTANT INFORMATION: The tray icon will be in the tray, so you will need to move it to your taskbar
  • Command line installation: winget install "Music Caster"
  • VirusTotal scan
    • If Music Caster is auto-removed, open "Virus & threat protection", then "protection history," and restore all files related to Music Caster

Linux

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

Demo

Music Caster Video Demo Thumbnail

Limitations

  • Chromecasts only support the AAC version of WMA files
  • Emojis might not work well. There's always settings.json + WEB GUI though
  • Road Map

Power User Features

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)

Editing settings.json

  • I do not recommend editing unless you know what you are doing
  • Music Caster will detect changes within 10 seconds of editing settings.json
  • Some settings values are hidden from the GUI for good reason

Data Collection / Privacy Policy

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.

  • Hashed MAC so that I know how many users without knowing the actual MAC addresses
  • IP because I can map out the IPs to a visual map to see where my users are located

Developer Guide

Linux Build Guide

  • Define correct PY variable (requires rebuilding the image)
  • Obtain the mc-builder Image
    • Option A: docker pull elibroftw/mc-builder
    • Option B: docker build . -t elibroftw/mc-builder
      • Remember to have Docker desktop/daemon running already
  • Build source code using: docker run --rm --volume .:/var/music-caster elibroftw/mc-builder

Virtualenv

python3.12 -m venv .venv
.venv\Scripts\activate     # Windows
source .venv/bin/activate  # Non-Windows