Skip to content

Latest commit

 

History

History
171 lines (121 loc) · 7.85 KB

File metadata and controls

171 lines (121 loc) · 7.85 KB

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

You need to use the free threading version (python3.14).

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

Resources

Upgrading Python Version

Update the version found in the following files

  • .github/workflows/build.yml
  • Dockerfile
  • README#virtualenv
  • linux_install.sh
  • scripts/debian-install.sh
  1. Next, in a another directory clone PyInstaller like so: git clone git@github.com:pyinstaller/pyinstaller.git
  2. We need to build the bootloader ourselves to avoid being flagged by Anti Virus.
  3. Run py -m build (not in the bootloader directory)
  4. Compile pyaudio_portaudio
  5. After this, we need to update the requirements-dev.txt.
  6. Create venv

From here, you can test the app in the newer version of Python (need to initialize a new virtualenv)

Lastly, build the app and submit it to Microsoft for false positive. I'm not sure when I'll buy a cert to ensure we don't encounter this again.

Tauri Guide

The Tauri version of the app is in app. The goal is very simple.

First, we are going to make Music Caster a daemon. This means we can use Tauri for UI code, and then interact with the daemon.

Incremental Daemon Builds

.\build.cmd --skip-tests --no-install --skip-deps

Windows ARM64 Installer

pnpm tauri build --target aarch64-pc-windows-msvc