elibroftw / music-caster

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.
https://elijahlopez.ca/music-caster/
Other
142 stars 16 forks source link
casting chromecast google-home gui media-player music-files music-player pysimplegui vlc web-gui

[![GitHub Releases](https://img.shields.io/github/downloads/elibroftw/music-caster/latest/total?color=blue&label=github%20downloads%40latest&style=for-the-badge)](https://github.com/elibroftw/music-caster/releases/latest) [![Source Forge](https://img.shields.io/sourceforge/dt/music-caster?color=orange&label=SourceForge%20downloads&style=for-the-badge)](https://sourceforge.net/projects/music-caster/) 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](https://elijahlopez.ca/music-caster/) ### Donate or Translate - monero:84PR6SkYd5zaFLKDjAFrQfbaAg2c7SV3q3XDZ15QCpEZUggrN4YzY7n8m9XC3deXjo41yWHTm1LrsUpPTYGnRQbD9Cwp8En - [PayPal](https://www.paypal.me/elibroftw) - [Translate](https://github.com/elibroftw/music-caster/issues/12#issuecomment-808658776) Music Caster to other languages ## Install ### [Windows Download Music.Caster.Setup.exe](https://github.com/elibroftw/music-caster/releases/latest) - **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](https://www.virustotal.com/gui/file/40a1c61e5cb2c5eed714eb70bb84f138e9fd9742076ea665b4ac85fc8f372abf) - 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](linux_install.sh). ```bash 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](https://github.com/elibroftw/music-caster/projects/1) ## Power User Features - Global media hot-keys are supported - Web GUI (QR code in Settings window) - [Command Line Arguments](https://github.com/elibroftw/music-caster/wiki/Command-Line-Arguments) 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. ```python # 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](https://github.com/elibroftw/music-caster/wiki/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 ```sh python3.12 -m venv .venv .venv\Scripts\activate # Windows source .venv/bin/activate # Non-Windows ```