Skip to main content

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.

Python License


๐Ÿ“ธ Screenshots

Main Search
Play List

โœจ Core Features

  • Media Handling: Support for loading and processing media URLs using external extraction tools.
  • TUI Workflow: Efficient, low-latency interface built on the curses library.
  • 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 mpv and 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.

  1. Install WSL:

    • Right-click Start -> Run Terminal (Admin).
    • Enter the command below and Reboot:
      wsl --install -d Debian
      
  2. Install Essentials:

    sudo apt update && sudo apt install mpv python3-pip pipx -y
    
  3. 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.

  1. Clone Repository:

    git clone https://github.com/postgresql-co-kr/mytunes.git
    cd mytunes
    
  2. Setup Virtual Environment:

    python3 -m venv venv
    source venv/bin/activate  # macOS/Linux
    pip install -r requirements.txt
    
  3. 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.json in 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)

Main Search
Play List

๐Ÿš€ ๋น ๋ฅธ ์„ค์น˜ (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๋Š” ์ด ํ™˜๊ฒฝ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

  1. WSL ์„ค์น˜ํ•˜๊ธฐ:

    • ์‹œ์ž‘ ๋ฒ„ํŠผ ์šฐํด๋ฆญ -> ํ„ฐ๋ฏธ๋„(๊ด€๋ฆฌ์ž) ์‹คํ–‰.
    • ์•„๋ž˜ ๋ช…๋ น์–ด ์ž…๋ ฅ ํ›„ ์žฌ๋ถ€ํŒ…:
      wsl --install -d Debian
      
  2. ํ•„์ˆ˜ ๋„๊ตฌ ์„ค์น˜:

    sudo apt update && sudo apt install mpv python3-pip pipx -y
    
  3. MyTunes ์„ค์น˜:

    pipx install mytunes-pro
    pipx ensurepath
    source ~/.bashrc  # ์„ค์ • ์ฆ‰์‹œ ๋ฐ˜์˜
    

๐Ÿง‘โ€๐Ÿ’ป ๊ฐœ๋ฐœ์ž์šฉ ์ˆ˜๋™ ์„ค์น˜ (Manual Installation)

์ง์ ‘ ์†Œ์Šคํฌ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ ๊ณผ์ •์„ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์ €์žฅ์†Œ ํด๋ก :

    git clone https://github.com/postgresql-co-kr/mytunes.git
    cd mytunes
    
  2. ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •:

    python3 -m venv venv
    source venv/bin/activate  # macOS/Linux
    pip install -r requirements.txt
    
  3. ์‹คํ–‰:

    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_music in app.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.setlocale to 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 E to 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 urllib3 compatibility 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() with get_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.Popen logic for browser opening. This eliminates occasional TUI freezes when launching Media Links (F7) or Dashboard (F8) by bypassing webbrowser library 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 / 3 and 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 webbrowser module for WSL.

v1.9.4

  • Ultimate WSL Fix: Switched to using Python's standard webbrowser module for opening links in WSL. This fully delegates browser launching to the system (Windows host), ensuring maximum stability and eliminating all subprocess or cmd.exe related 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.exe conflicts, 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.exe printed "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/c to 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 -w logic to correctly convert Linux-style temp paths to Windows format when launching Chrome via cmd.exe on 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-dir to 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=True for browser launches, isolating them from the TUI process group.
  • Hybrid Browser Strategy: Switched to the standard webbrowser library 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 pkill logic to prevent accidental self-termination while maintaining reliable MPV management.

v1.8.3

  • Direct Binary Execution (WSL): Resolved shell parsing issues by bypassing cmd.exe and 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 --app flag is correctly parsed by the native Windows shell.
  • Reliable Popup UI: Standardized on start "" chrome for WSL to ensure flags are never misidentified as window titles.

v1.8.0

  • Stabilized Browser Launch (Windows/WSL): Completely removed the --user-data-dir flag 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.exe calls 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 /c with 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 LOCALAPPDATA directory 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.exe for 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:TEMP directly 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.exe to 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.startfile logic.
  • 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-8 fallback.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mytunes_pro-2.1.6.tar.gz (61.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mytunes_pro-2.1.6-py3-none-any.whl (40.6 kB view details)

Uploaded Python 3

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

Hashes for mytunes_pro-2.1.6.tar.gz
Algorithm Hash digest
SHA256 083c629236ab6d6e4f374ee1aa51275b8aa5019c75c151591490557ac00dadf6
MD5 f24308581fb4fbe623d4c7b88bb56358
BLAKE2b-256 0ab934df781a1cc5927d958120051f61bc0b4e2f9af296d903a31d47230b9450

See more details on using hashes here.

Provenance

The following attestation bundles were made for mytunes_pro-2.1.6.tar.gz:

Publisher: pypi.yml on postgresql-co-kr/mytunes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for mytunes_pro-2.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 49ac535af900f0fdd46fa098bf20190a50b31bdc6a6a26754cfeb1497162b2e6
MD5 d6b9391ad27724bcbeeffdf4dff0f670
BLAKE2b-256 b2ccef879831fb7bfa1d02625b37d6471b450b2ab0d66f6631e5a6aef818c97a

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page