A lightweight, keyboard-centric terminal player for streaming YouTube music.
Project description
๐ต MyTunes Pro - Professional TUI Edition v2.1.6
๐ Terminal-based Media Workflow Experiment v2.1.6
[!IMPORTANT] Legal Disclaimer: This project is a personal, non-commercial research experiment for developer education. It does not host, provide, or distribute any media content. All media sources are independently accessed and configured by the user. Users are solely responsible for ensuring that their usage complies with the terms of service of any third-party platforms accessed via this tool.
MyTunes Pro is a developer-focused CLI Media Tool for experimenting with terminal-based media workflows.
It utilizes the Python curses library to provide a structured TUI (Terminal User Interface) for handling media URLs,
leveraging the mpv engine for local media processing and playback.
๐ก Project Note
This tool was designed for personal research into how terminal users can interact with media sources without interrupting their developer workflow. It explores the integration between local CLI environments (like Headless Debian Servers) and external media handling utilities.
๐ธ Screenshots
โจ Core Features
- Media Handling: Support for loading and processing media URLs using external extraction tools.
- TUI Workflow: Efficient, low-latency interface built on the
curseslibrary. - Workflow Persistence: Handles sequential media loading and state restoration.
- Terminal Optimization: Performance-focused design that prioritizes keyboard-driven interactions.
- Smart Management: Optional user-configured collections, interaction history, and metadata handling.
- External Integration: Capabilities to load media links into external viewer/player environments.
๐ป Environment & Integration
MyTunes Pro is a CLI-based tool. It can integrate with externally installed media processing tools.
- External Tools: This project can interface with user-installed utilities like
mpvand media extraction tools. No third-party tools are bundled with this software. - macOS/Linux: Native terminal support.
- Windows: Recommended to use with WSL (Windows Subsystem for Linux).
๐ Quick Install
We strongly recommend using pipx on modern macOS/Linux systems (PEP 668).
1. Recommended Method (pipx)
Automatically creates an isolated environment and registers the command.
# Ensure ensuredpath is run to register the command after pipx install!
pipx install mytunes-pro
pipx ensurepath
source ~/.zshrc # or source ~/.bashrc (apply immediately to current terminal)
2. Standard pip Method
If you encounter the externally-managed-environment error, add the following flag:
pip install mytunes-pro --break-system-packages
After installation, type mp anywhere in the terminal to run!
๐ Update
If already installed, simply use the command below to update to the latest features:
pipx upgrade mytunes-pro
๐ Prerequisites
Please install the necessary tools for your operating system before running.
macOS (Using Homebrew)
brew install mpv python3 pipx
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install mpv python3 python3-pip pipx python3-venv -y
Windows (WSL Guide)
Guide for Windows users where Korean search might not work or installation is difficult.
โ What is WSL?
It allows you to run Linux environments directly on Windows. MyTunes works perfectly in this environment.
-
Install WSL:
- Right-click
Start-> RunTerminal (Admin). - Enter the command below and Reboot:
wsl --install -d Debian
- Right-click
-
Install Essentials:
sudo apt update && sudo apt install mpv python3-pip pipx -y
-
Install MyTunes:
pipx install mytunes-pro pipx ensurepath source ~/.bashrc # Apply settings immediately
๐งโ๐ป Manual Installation (For Developers)
Follow these steps to modify source code or use the development version.
-
Clone Repository:
git clone https://github.com/postgresql-co-kr/mytunes.git cd mytunes
-
Setup Virtual Environment:
python3 -m venv venv source venv/bin/activate # macOS/Linux pip install -r requirements.txt
-
Run:
python3 mytune.py
โจ๏ธ Controls
MyTunes Pro is controlled entirely by keyboard.
We recommend using Number Keys for lag-free operation even in multi-language input modes.
โก๏ธ Instant Hotkeys (Number Keys)
Executes immediately without worrying about input language status.
| Key | Function | Description |
|---|---|---|
1 |
Search | Open music search (Same as S) |
2 |
Favorites | View favorites list (Same as F) |
3 |
History | View recently played 100 tracks (Same as R) |
4 |
Main | Return to main screen (Same as M) |
5 |
Add/Del | Toggle favorite for selected track (Same as A) |
+ |
Vol UP | Volume +5% (Same as =) |
- |
Vol DOWN | Volume -5% (Same as _) |
F7 |
Open YouTube | View current track in browser |
E |
Equalizer | Cycle EQ presets (Auto/Flat/Pop/Rock/Jazz/etc.) |
6 |
Back | Go to previous screen (Same as Q, h) |
L |
Forward | Go forward to previous screen (Right Arrow) |
ESC |
Background | Exit without stopping music (Background Play) |
๐งญ Basic Navigation
| Key | Action |
|---|---|
โ / โ / k / j |
Move selection Up/Down (Vim keys supported) |
Enter / l |
Select / Play |
Space |
Play / Pause |
- / + |
Volume Control |
, / . |
Rewind / Forward 10s |
< / > |
Rewind / Forward 30s (Shift) |
Backspace / h / q |
Go Back / Clear Search |
L |
Go Forward |
/ |
Search (Vim Style) |
๐ Data Storage
- Favorites and playback history are permanently saved in
~/.pymusic_data.jsonin your home directory. - Data is preserved even after restarting the program.
๐ต MyTunes Pro (Experimental Media Tool - KR)
๐ ํฐ๋ฏธ๋ ๊ธฐ๋ฐ ๋ฏธ๋์ด ์ํฌํ๋ก์ฐ ์คํ v2.1.6
[!IMPORTANT] ๋ฒ์ ๋ฉด์ฑ ๊ณ ์ง: ๋ณธ ํ๋ก์ ํธ๋ ๊ฐ๋ฐ์ ๊ต์ก ๋ฐ ์ฐ๊ตฌ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ ๊ฐ์ธ์ , ๋น์์ ์ ์คํ์ ๋๋ค. ๋ณธ ์ํํธ์จ์ด๋ ์ด๋ ํ ๋ฏธ๋์ด ์ฝํ ์ธ ๋ ์ง์ ํธ์คํ ํ๊ฑฐ๋ ๋ฐฐํฌํ์ง ์์ต๋๋ค. ๋ชจ๋ ๋ฏธ๋์ด ์์ค๋ ์ฌ์ฉ์์ ๋ก์ปฌ ํ๊ฒฝ์์ ์ง์ ๊ตฌ์ฑ๋๊ณ ์ ๊ทผ๋๋ฉฐ, ์ฌ์ฉ์๋ ์ธ๋ถ ํ๋ซํผ์ ์ด์ฉ ์ฝ๊ด์ ์ค์ํ ์ฑ ์์ด ์์ต๋๋ค.
MyTunes Pro๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ์ค๊ณ๋ CLI ๋ฏธ๋์ด ์คํ ๋๊ตฌ์
๋๋ค.
Python curses ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ํฐ๋ฏธ๋ ํ๊ฒฝ์์ ๋ฏธ๋์ด URL์ ๋ก๋ํ๊ณ ๊ด๋ฆฌํ๋ฉฐ,
์ฌ์ฉ์๊ฐ ์ค์นํ mpv ๋ฑ์ ์ธ๋ถ ๋๊ตฌ์ ์ฐ๋ํ์ฌ ๋ฏธ๋์ด ์ํฌํ๋ก์ฐ๋ฅผ ํ
์คํธํ ์ ์์ต๋๋ค.
โจ ์ฃผ์ ํน์ง
- ๋ฏธ๋์ด ํธ๋ค๋ง: ์ธ๋ถ ์ถ์ถ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ๋ฏธ๋์ด URL ๋ก๋ ๋ฐ ์ฒ๋ฆฌ ์ง์.
- TUI ์ํฌํ๋ก์ฐ:
curses๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ์ ํจ์จ์ ์ธ ํฐ๋ฏธ๋ ์ธํฐํ์ด์ค. - ์์ ์ ์ง: ์์ฐจ์ ๋ฏธ๋์ด ๋ก๋ฉ ๋ฐ ๋ง์ง๋ง ์์ ์ํ ๋ณต์ ๊ธฐ๋ฅ.
- ํ๊ฒฝ ์ฐ๋: ์ฌ์ฉ์์ ์ํด ๊ตฌ์ฑ๋ ์ธ๋ถ ๋ฏธ๋์ด ๋๊ตฌ์์ ์ฐ๋ ์ง์. (๋ณธ ์ํํธ์จ์ด๋ ์ธ๋ถ ๋๊ตฌ๋ฅผ ํฌํจํ์ฌ ๋ฐฐํฌํ์ง ์์ต๋๋ค.)
๐ธ ์คํฌ๋ฆฐ์ท (Screenshots)
๐ ๋น ๋ฅธ ์ค์น (Quick Install)
์ต์ macOS/Linux ์์คํ
(PEP 668)์์๋ pipx ์ฌ์ฉ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
1. ์ถ์ฒ ๋ฐฉ์ (pipx)
์๋์ผ๋ก ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋ค๊ณ ๋ช ๋ น์ด๋ฅผ ๋ฑ๋กํด์ค๋๋ค.
# pipx install ์ดํ ๋ช
๋ น์ด ๋ฑ๋ก์ ์ํด ensurepath ์คํ ์์ ํ์ธ!
pipx install mytunes-pro
pipx ensurepath
source ~/.zshrc # ๋๋ source ~/.bashrc (ํ์ฌ ํฐ๋ฏธ๋์ ์ฆ์ ์ ์ฉ)
2. ์ผ๋ฐ pip ๋ฐฉ์
๋ง์ฝ externally-managed-environment ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์๋ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ธ์:
pip install mytunes-pro --break-system-packages
์ค์น ํ ํฐ๋ฏธ๋ ์ด๋์๋ **mp**๋ฅผ ์
๋ ฅํ๋ฉด ์คํ๋ฉ๋๋ค!
๐ ์ต์ ๋ฒ์ ์ ๋ฐ์ดํธ (Update)
์ด๋ฏธ ์ค์น๋์ด ์๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ก ๊ฐ๋จํ ์ต์ ๊ธฐ๋ฅ์ ๋ฐ์ํ์ธ์:
pipx upgrade mytunes-pro
๐ ํ๊ฒฝ๋ณ ์๊ตฌ์ฌํญ (Prerequisites)
์คํ ์ ๊ฐ ์ด์์ฒด์ ์ ๋ง๋ ํ์ ๋๊ตฌ๋ค์ ์ค์นํด ์ฃผ์ธ์.
macOS (Homebrew ์ฌ์ฉ)
brew install mpv python3 pipx
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install mpv python3 python3-pip pipx python3-venv -y
Windows (์ด๋ณด์์ฉ WSL ๊ฐ์ด๋)
Windows ํ๊ฒฝ์์ ํ๊ธ ๊ฒ์์ด ์ ๋๊ฑฐ๋ ์ค์น๊ฐ ์ด๋ ค์ด ๋ถ๋ค์ ์ํ ๊ฐ์ด๋์ ๋๋ค.
โ WSL์ด๋?
์๋์ฐ ์์์ ๋ฆฌ๋ ์ค๋ฅผ ์ฑ์ฒ๋ผ ์ธ ์ ์๊ฒ ํด์ค๋๋ค. MyTunes๋ ์ด ํ๊ฒฝ์์ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค.
-
WSL ์ค์นํ๊ธฐ:
์์๋ฒํผ ์ฐํด๋ฆญ ->ํฐ๋ฏธ๋(๊ด๋ฆฌ์)์คํ.- ์๋ ๋ช
๋ น์ด ์
๋ ฅ ํ ์ฌ๋ถํ
:
wsl --install -d Debian
-
ํ์ ๋๊ตฌ ์ค์น:
sudo apt update && sudo apt install mpv python3-pip pipx -y
-
MyTunes ์ค์น:
pipx install mytunes-pro pipx ensurepath source ~/.bashrc # ์ค์ ์ฆ์ ๋ฐ์
๐งโ๐ป ๊ฐ๋ฐ์์ฉ ์๋ ์ค์น (Manual Installation)
์ง์ ์์คํฌ๋๋ฅผ ์์ ํ๊ฑฐ๋ ๊ฐ๋ฐ ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์๋ ๊ณผ์ ์ ๋ฐ๋ฅด์ธ์.
-
์ ์ฅ์ ํด๋ก :
git clone https://github.com/postgresql-co-kr/mytunes.git cd mytunes
-
๊ฐ์ํ๊ฒฝ ์ค์ :
python3 -m venv venv source venv/bin/activate # macOS/Linux pip install -r requirements.txt
-
์คํ:
python3 mytune.py
โจ๏ธ ์กฐ์ ๋ฐฉ๋ฒ (Controls)
MyTunes Pro๋ ํค๋ณด๋๋ง์ผ๋ก ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ์ดํฉ๋๋ค.
ํ๊ธ ์
๋ ฅ ์ํ์์๋ ๋๊น ์๋ ์กฐ์์ ์ํด ์ซ์ ๋จ์ถํค ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
โก๏ธ ์ฆ์ ๋ฐ์ ๋จ์ถํค (์ซ์ํค)
ํ์ ์ ํ ์์ด ์ธ์ ๋ ๋๋ฅด๋ฉด ์ฆ์ ์คํ๋ฉ๋๋ค.
| ํค | ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|---|
1 |
๊ฒ์ (Search) | ์์
๊ฒ์์ฐฝ ์ด๊ธฐ (๋จ์ถํค S์ ๋์ผ) |
2 |
์ฆ๊ฒจ์ฐพ๊ธฐ (Fav) | ์ ์ฅ๋ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชฉ๋ก ๋ณด๊ธฐ (๋จ์ถํค F์ ๋์ผ) |
3 |
๊ธฐ๋ก (History) | ์ต๊ทผ ์ฌ์ํ 100๊ณก ๋ณด๊ธฐ (๋จ์ถํค R์ ๋์ผ) |
4 |
๋ฉ์ธ (Main) | ๋ฉ์ธ ํ๋ฉด์ผ๋ก ๋์๊ฐ๊ธฐ (๋จ์ถํค M์ ๋์ผ) |
5 |
์ถ๊ฐ/์ญ์ | ์ ํํ ๊ณก ์ฆ๊ฒจ์ฐพ๊ธฐ ํ ๊ธ (๋จ์ถํค A์ ๋์ผ) |
+ |
๋ณผ๋ฅจ UP | ๋ณผ๋ฅจ +5% (๋จ์ถํค =์ ๋์ผ) |
- |
๋ณผ๋ฅจ DOWN | ๋ณผ๋ฅจ -5% (๋จ์ถํค _์ ๋์ผ) |
F7 |
์ ํ๋ธ ์ด๊ธฐ | ํ์ฌ ๊ณก์ ๋ธ๋ผ์ฐ์ ์์ ๋ณด๊ธฐ |
E |
์ดํ๋ผ์ด์ | EQ ํ๋ฆฌ์ ์ ํ (Auto/Flat/Pop/Rock/Jazz ๋ฑ) |
6 |
๋ค๋ก๊ฐ๊ธฐ | ์ด์ ํ๋ฉด์ผ๋ก ์ด๋ (๋จ์ถํค Q, h์ ๋์ผ) |
L |
์์ผ๋ก | ์ด์ ํ๋ฉด์์ ์ํ๋ฉด์ผ๋ก ๋ค์ ์ด๋ (Right Arrow) |
ESC |
๋ฐฐ๊ฒฝ์ฌ์ | ์์ ๋์ง ์๊ณ ๋๊ฐ๊ธฐ (๋ฐฑ๊ทธ๋ผ์ด๋ ์ฌ์) |
๐งญ ๊ธฐ๋ณธ ํ์
| ํค | ๋์ |
|---|---|
โ / โ / k / j |
๋ฆฌ์คํธ ์/์๋ ์ด๋ (Vim ํค ์ง์) |
Enter / l |
์ ํ / ์ฌ์ |
Space |
์ฌ์ / ์ผ์์ ์ง (Play/Pause) |
- / + |
๋ณผ๋ฅจ ์กฐ์ (- / +) |
, / . |
10์ด ๋ค๋ก / ์์ผ๋ก ๊ฐ๊ธฐ |
< / > |
30์ด ๋ค๋ก / ์์ผ๋ก ๊ฐ๊ธฐ (Shift) |
Backspace / h / q |
๋ค๋ก ๊ฐ๊ธฐ / ๊ฒ์์ด ์ง์ฐ๊ธฐ |
L |
์์ผ๋ก ๊ฐ๊ธฐ |
/ |
๊ฒ์ (Vim Style) |
๐ ๋ฐ์ดํฐ ์ ์ฅ
- ์ฆ๊ฒจ์ฐพ๊ธฐ์ ์ฌ์ ๊ธฐ๋ก์ ํ ๋๋ ํ ๋ฆฌ์
~/.pymusic_data.jsonํ์ผ์ ์๊ตฌ ์ ์ฅ๋ฉ๋๋ค. - ํ๋ก๊ทธ๋จ ์ข ๋ฃ ํ ๋ค์ ์คํํด๋ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋ฉ๋๋ค.
๐ Changelog
v2.1.6 (2026-02-19)
- TUI Polish: Improved persistent view context and transient feedback mechanisms.
- Stability: Added safety checks to skip autoplay if the IPC socket is unresponsive.
- Cleanup: Ensured mouse mask is properly reset to prevent terminal artifacts.
v2.1.5 (2026-02-04)
- Absolute Volume Display: Now displays volume as a precise percentage (0-100%) with a "(Boost)" indicator for levels above 100%.
- Volume Persistence: Volume level is now permanently saved and restored across app restarts.
- Offline Control: Adjust volume levels globally even when the player is stopped; changes apply immediately upon next playback.
v2.1.4 (2026-02-03)
- Mouse Support Removed: Reverted to pure keyboard interface for cleaner experience.
- Bug Fixes: Resolved IndentationError and key loop crashes.
- Stability: Removed unused code paths.
v2.1.3 (2026-02-02)
- Resolved TUI Freeze on Song Launch: Fixed a critical regression from v2.0.6 where misplaced blocking input code caused the TUI to freeze on "Loading" during song transitions or resume until a key was pressed.
- Fixed EQ Application: Restored correct Auto EQ initialization during
play_musicinapp.py.
v2.1.2 (2026-02-02)
- Fix "Loading" Stuck: Improved IPC resilience to prevent the TUI from being stuck on "Loading" during song transitions or resume, by increasing the initial socket connection timeout patience.
- Fail-Safe Loading: Implemented a hard reset for the loading state if mpv takes longer than 8 seconds to respond, ensuring the TUI remains interactive.
v2.1.1 (2026-02-02)
- WSL UI Polish: Hides Equalizer (EQ) labels and status in the TUI when running on WSL to avoid confusion, as the feature is disabled in that environment for stability.
- Improved Feedback: Provides a clear status message when the 'E' key is pressed on WSL.
v2.1.0 (2026-02-02)
- Zero-Freeze IPC Resilience: Implemented a "Fast-Fail" mechanism that detects mpv process death within 0.1ms via
poll(), preventing TUI freezes. - Fail-Early Polling: Main loop now aborts all remaining IPC property checks immediately if any call fails, maintaining a smooth 5fps even on broken connections.
- Connection Throttling: Added a 1.5-second "cool-down" period for reconnection attempts to minimize blocking time on Windows/WSL environments.
- Multibyte Harmony: Explicitly configured
locale.setlocaleto ensure stable emoji and CJK character rendering across different terminal environments. - Improved Autoplay Stability: Autoplay logic now skips status checks when the socket is unhealthy to prevent feedback loops.
v2.0.8 (2026-02-02)
- Windows/WSL Socket Recovery: Fixed UI freezing when mpv socket disconnects during window switching.
- IPC Resilience: Added socket pre-check and failure counter to prevent blocking on broken connections.
- Automatic Recovery: New playback automatically restarts mpv if socket is unhealthy.
v2.0.7 (2026-02-02)
- Performance Optimization: Improved keyboard responsiveness on Windows/WSL by implementing EQ detection caching.
- Data Management: Limited resume data to 500 entries with automatic FIFO cleanup to prevent JSON bloat.
- Cache System: Added 200-entry EQ genre cache to skip redundant keyword matching for repeated tracks.
v2.0.6 (2026-02-02)
- 10-Band Equalizer: Added professional-grade 10-band EQ with presets (Flat, Pop, Rock, Jazz, Classical, Full Bass, Dance, Club, Live, Soft).
- Auto EQ Detection: Intelligent genre detection from track title/channel info automatically applies optimal EQ preset.
- Keyboard Shortcut: Press
Eto cycle through EQ presets in real-time without interrupting playback. - Multilingual Genre Keywords: Auto EQ supports genre detection in 12 languages including Korean, Japanese, Chinese, Spanish, and more.
v2.0.5 (2026-02-01)
- Input Feedback Refinement: Transitioned from blinking warnings to a static Bold Yellow status message for better accessibility and premium feel.
- Auto-clear Optimization: Implemented a 5-second auto-clear timer for all transient status messages.
- Zero Latency Feedback: Added instant redraw mechanisms to ensure input warnings appear immediately upon key press.
- Stability Fixes: Resolved a critical attribute error that caused crashes when selecting menu items.
- SSL Compatibility: Improved
urllib3compatibility for macOS systems using LibreSSL.
v2.0.4 (2026-02-01)
- Legal Polish: Comprehensive scrubbing of brand identifiers and service-oriented terminology across the ecosystem.
- Localization: Fully localized Korean landing page and technical experiment descriptions.
- Educational Focus: Added explicit project disclaimers to all web footers.
- Project Scope: Solidified positioning as a "Media Handling Experiment" rather than a music player.
v2.0.3 (Input Handling & Unicode Stability)
- Input Logic: Replaced legacy
getch()withget_wch()in all UI dialogs (ask_resume,show_copy_dialog) for robust wide-character and Unicode support. - Architecture: Refactored the input handling system into a modular, command-based architecture (v2.0.3).
- Decoupling: Separated input collection (
get_next_event), event normalization, and command execution. - Improved ESC Handling: Enhanced detection of ESC and multi-byte sequences (including Option+Backspace) for smoother navigation.
v2.0.2 (Stability & Browser Optimization)
- Browser Launch: Switched to fully decoupled
subprocess.Popenlogic for browser opening. This eliminates occasional TUI freezes when launching Media Links (F7) or Dashboard (F8) by bypassingwebbrowserlibrary limitations. - App Mode Restore: Fixed and improved Chrome/Brave App Mode (Popup) for the Live Station on macOS.
- Improved Remote Detection: Refined SSH/WSL detection to ensure local browser features are correctly enabled where possible.
v2.0.1 (Keymap Refinement & Version Sync)
- Navigation: Added browser-style Forward navigation (
L/Right Arrow). - Keybinding Optimization: Updated History mapping to
R/3and refined Back/Forward logic. - IME Stability: Removed unstable Korean character mappings (
ใด,ใน,ใฑ, ๋ฑ) to prevent ghost key issues in the TUI. - Global Synchronization: Synchronized version v2.0.1 across CLI, TUI, and Web interfaces.
v1.9.9 (Domain Migration & Realtime Sync)
- Domain Migration: Updated all branding and internal links to support
mytunes-pro.com. - Realtime Stability: Fixed critical state-management bugs in the live dashboard that caused list clearing and duplicated track entries.
- Improved Empty State: Redesigned the "SIGNAL LOST" screen into a more descriptive "READY TO RECEIVE" interface for better UX.
v1.9.8 (Realtime Stabilization)
- UI Refinement: Implemented in-list "Now Playing" sticky behavior with auto-scroll synchronization for a seamless browsing experience.
- Queue System Optimization: Capped incoming track queue at 200 items with a "200+" notification indicator for high-traffic stability.
- Popup UI Consistency: Unified Live Station popup dimensions to 620x900 across Web and TUI.
- Improved Media Playback: Optimized the media player hook to resolve initialization race conditions and syntax edge cases.
v1.9.7 (Analytics)
- Analytics: Integrated Google Analytics 4 (GA4) into the landing page and realtime feed to track visitor traffic and usage patterns.
v1.9.6 (Realtime UX)
- Incoming Queue System: The Realtime Feed (
/live) now queues incoming shared tracks instead of disrupting the list immediately. A "SHOW NEW TRACKS" button appears, allowing users to update the feed at their convenience, ensuring a stable viewing experience.
v1.9.5
- Code Cleanup: Removed deprecated and unreachable WSL subprocess launch logic to ensure codebase cleanliness and prevent confusion. The application now exclusively uses the stable
webbrowsermodule for WSL.
v1.9.4
- Ultimate WSL Fix: Switched to using Python's standard
webbrowsermodule for opening links in WSL. This fully delegates browser launching to the system (Windows host), ensuring maximum stability and eliminating allsubprocessorcmd.exerelated conflicts.
v1.9.3
- Hotfix for Startup: Fixed a syntax error introduced in v1.9.2 that prevented the application from starting.
v1.9.2
- Disable WSL Profile Isolation: To ensure maximum stability and prevent
cmd.execonflicts, MyTunes now temporarily disables profile isolation (forced window size/position) on WSL. It runs using the default Chrome profile, guaranteeing reliable launching.
v1.9.1
- Fix CMD Output Pollution (WSL): Resolved an issue where
cmd.exeprinted "UNC paths are not supported" warnings when executed from a WSL directory, corrupting the temporary path retrieval. Now parses output safely and executes from/mnt/cto prevent warnings.
v1.9.0
- Fix WSL Profile Error: Switched to using the native Windows TEMP directory (e.g.,
C:\Users\...\AppData\Local\Temp) for the browser profile in WSL. This prevents file locking issues caused by Chrome treating\\wsl$\paths as network drives.
v1.8.9
- Robust WSL Path Fix: Resolved an issue where direct browser launching (non-fallback) in WSL was still using Linux paths for the profile, causing "User Data Directory" creation errors. Path conversion is now applied globally before launch.
v1.8.8
- WSL Path Conversion: Implemented
wslpath -wlogic to correctly convert Linux-style temp paths to Windows format when launching Chrome viacmd.exeon WSL.
v1.8.7
- Syntax Fix (WSL): Corrected a typo in the browser launch command that caused a crash on Linux/WSL systems.
v1.8.6
- Browser Popup Optimization (Context7): Improved Live Station (F8) experience with optimized CLI flags for a perfectly minimalist UI.
- Forced Window Dimensions: Implemented profile isolation using a timestamped
user-data-dirto ensure window size and position are always respected, overriding session memory. - UI Cleanup: Automatically hides distraction-bars (translation, password, automation infobars) and enables instant autoplay for live streams.
v1.8.5
- Looping Navigation (Menu Wrapping): Pressing UP at the first item now wraps to the last item, and pressing DOWN at the last item wraps to the first.
- Improved UI Flow: Enhanced keyboard navigation experience across all list views (Main, Search, Favorites, History).
v1.8.4
- Python Crash Fix (WSL): Eliminated premature termination by implementing
start_new_session=Truefor browser launches, isolating them from the TUI process group. - Hybrid Browser Strategy: Switched to the standard
webbrowserlibrary for F7 (Media links) for maximum internal stability. - Global Error Protection: Wrapped the main application loop in an exception guard to catch and log transient OS errors without crashing the entire app.
- Refined Process Cleanup: Specialized the
pkilllogic to prevent accidental self-termination while maintaining reliable MPV management.
v1.8.3
- Direct Binary Execution (WSL): Resolved shell parsing issues by bypassing
cmd.exeand directly executing Windows browser binaries via/mnt/c/paths. - App Mode Reliability: Guaranteed 712x800 popup mode by ensuring flags are delivered directly to the browser process without intermediate shell mangling.
- Fixed URL Resolution: Eliminated the "Empty URL" bug by standardizing argument passing between WSL and Windows.
v1.8.1
- Fixed App Mode (WSL/Win): Guaranteed the browser opens in a clean "App Mode" popup by fixing shell quoting issues in the launch command.
- URL Resolution Fix: Resolved the "Empty URL" bug on WSL/Windows by ensuring the
--appflag is correctly parsed by the native Windows shell. - Reliable Popup UI: Standardized on
start "" chromefor WSL to ensure flags are never misidentified as window titles.
v1.8.0
- Stabilized Browser Launch (Windows/WSL): Completely removed the
--user-data-dirflag for all Windows-based environments. This permanently resolves the "cannot read or write" directory errors while maintaining reliable 712x800 window sizing through pure app-mode flags. - Clean CMD Execution: Simplified the WSL-to-Windows transition by using standard
cmd.execalls without complex path or variable expansion, ensuring consistent behavior across all systems.
v1.7.9
- Pure CMD-based Launch (WSL/Win): Final fix for WSL-to-Windows browser launch using
cmd.exe /cwith native%LOCALAPPDATA%expansion. - Directory Reliability: Ensured Chrome data directory creation and access by using native Windows shell commands, eliminating the "cannot read or write" errors seen in v1.7.8.
- Stable Window Sizing: Guaranteed 712x800 window size for Live Station (F8) from WSL by correctly isolating browser profiles via native Windows paths.
v1.7.8
- Native PowerShell Profile Management: Resolved directory read/write errors in WSL by moving all profile creation and path handling to the Windows side via PowerShell.
- Improved Security & Isolation: Profiles are now created in the standard Windows
LOCALAPPDATAdirectory with native permissions, ensuring Chrome can always access its data. - Backslash Consistency: Forced backslash-only paths through pure PowerShell logic, fixing the mixed-slash issue seen in WSL.
v1.7.7
- PowerShell Launch (WSL/Win): Switched to
powershell.exefor launching browsers from WSL to ensure robust argument parsing and path handling. - Directory Fix: Resolved "cannot read or write" error on Windows/WSL by utilizing
$env:TEMPdirectly within a native shell context. - Reliable Sizing: Guaranteed window size application by combining isolated profiles with PowerShell's superior process management.
v1.7.6
- Isolated Browser Profile: Guaranteed window sizing for the Live Station (F8) on Windows/WSL by forcing an isolated browser profile using the Windows
%TEMP%directory. - WSL Path Translation: Implemented automatic Windows temp path resolution in WSL to enable session persistence and profile isolation.
v1.7.5
- WSL Integration: Fully optimized browser launch from WSL by utilizing
cmd.exeto trigger native Windows browsers. - F7 Windows Resolve: Fixed an issue where Media links (F7) wouldn't open in WSL environments.
- F8 App Mode (WSL/Win): Enhanced flags to ensure "App Mode" (no address bar) works consistently even when launched from WSL.
v1.7.4
- Windows UI Refinement: Forced Chrome "App Mode" on Windows by reordering flags and disabling extensions/default-apps to ensure a clean popup without an address bar.
- Improved Isolation: Switched to higher-frequency session rotation for Live Station (F8) to guarantee window size and position persistence fixes.
v1.7.3
- Windows Fixes: Resolved issue where F7 (Media) failed to open browsers on Windows by implementing
os.startfilelogic. - F8 Initialization: Improved Live Station (F8) window sizing on Windows by forcing a clean session state.
- Robustness: Enhanced cross-platform browser redirection logic to ensure consistent behavior.
v1.7.2
- Windows Optimization: Fixed an issue where the Live Station (F8) window size was not correctly applied on Windows.
- Improved Browser Support: Added Microsoft Edge to the automatic browser detection list.
- Robust Launch Logic: Enhanced browser internal flags for a better initial window experience.
v1.7.1
- Performance & Logic Optimization: Standardized browser launch logic for Live Station (F8) across Mac, Windows, and Linux.
- UI Polish: Silenced browser launch warnings in the terminal and added professional UI flags (disable translation/bubble) for a cleaner experience.
- Improved Popup Behavior: Optimized web interface to reuse the same window for Live Station, matching CLI application behavior.
- Global Sync: Version 1.7.1 synchronization across all platforms.
v1.6.0
- Global Version Synchronization: Synchronized version 1.6.0 across CLI, README, and Web interface.
v1.5.6
- Refined Search History Display: Improved the search preview logic to use a temporary 'search' view state, providing a smoother experience when opening and canceling search.
- Bug Fix: Resolved an issue where the 'Search Results History' was not displaying correctly in the background.
v1.5.5
- Search Result History: Automatically saves up to 200 search results.
- Enhanced Search UX: Previously searched items are displayed in the background automatically when opening search.
- Deduplication: Automatically removes duplicate search results to keep history clean.
v1.5.4
- Documentation Refinement: Clarified installation steps and removed redundant WSL locale guide.
- Code Cleanup: Reverted unnecessary locale settings in source code.
v1.5.3
- Locale Optimization: Removed complicated locale generation steps for Windows/WSL users. Now relies on standard system locale or simple
C.UTF-8fallback.
v1.5.2
- Documentation: Major README overhaul for beginner friendliness. Added dedicated Windows/WSL "Zero-to-Hero" guide.
v1.5.0
- Release: Milestone v1.5.0 release with polished documentation and stable features.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mytunes_pro-2.1.6.tar.gz.
File metadata
- Download URL: mytunes_pro-2.1.6.tar.gz
- Upload date:
- Size: 61.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
083c629236ab6d6e4f374ee1aa51275b8aa5019c75c151591490557ac00dadf6
|
|
| MD5 |
f24308581fb4fbe623d4c7b88bb56358
|
|
| BLAKE2b-256 |
0ab934df781a1cc5927d958120051f61bc0b4e2f9af296d903a31d47230b9450
|
Provenance
The following attestation bundles were made for mytunes_pro-2.1.6.tar.gz:
Publisher:
pypi.yml on postgresql-co-kr/mytunes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mytunes_pro-2.1.6.tar.gz -
Subject digest:
083c629236ab6d6e4f374ee1aa51275b8aa5019c75c151591490557ac00dadf6 - Sigstore transparency entry: 965121334
- Sigstore integration time:
-
Permalink:
postgresql-co-kr/mytunes@46fd32d3c8970bdec1762909c4a07444fa01af26 -
Branch / Tag:
refs/tags/v2.1.6 - Owner: https://github.com/postgresql-co-kr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@46fd32d3c8970bdec1762909c4a07444fa01af26 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mytunes_pro-2.1.6-py3-none-any.whl.
File metadata
- Download URL: mytunes_pro-2.1.6-py3-none-any.whl
- Upload date:
- Size: 40.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49ac535af900f0fdd46fa098bf20190a50b31bdc6a6a26754cfeb1497162b2e6
|
|
| MD5 |
d6b9391ad27724bcbeeffdf4dff0f670
|
|
| BLAKE2b-256 |
b2ccef879831fb7bfa1d02625b37d6471b450b2ab0d66f6631e5a6aef818c97a
|
Provenance
The following attestation bundles were made for mytunes_pro-2.1.6-py3-none-any.whl:
Publisher:
pypi.yml on postgresql-co-kr/mytunes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mytunes_pro-2.1.6-py3-none-any.whl -
Subject digest:
49ac535af900f0fdd46fa098bf20190a50b31bdc6a6a26754cfeb1497162b2e6 - Sigstore transparency entry: 965121385
- Sigstore integration time:
-
Permalink:
postgresql-co-kr/mytunes@46fd32d3c8970bdec1762909c4a07444fa01af26 -
Branch / Tag:
refs/tags/v2.1.6 - Owner: https://github.com/postgresql-co-kr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@46fd32d3c8970bdec1762909c4a07444fa01af26 -
Trigger Event:
push
-
Statement type: