mytunes-pro 2.0.5__tar.gz → 2.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mytunes-pro
3
- Version: 2.0.5
3
+ Version: 2.1.0
4
4
  Summary: A lightweight, keyboard-centric terminal player for streaming YouTube music.
5
5
  Author-email: loxo <loxo5432@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/postgresql-co-kr/mytunes
@@ -18,14 +18,14 @@ Requires-Dist: yt-dlp
18
18
  Requires-Dist: pusher
19
19
  Dynamic: license-file
20
20
 
21
- # 🎵 MyTunes Pro - Professional TUI Edition v2.0.5
21
+ # 🎵 MyTunes Pro - Professional TUI Edition v2.1.0
22
22
 
23
- ## 🚀 Terminal-based Media Workflow Experiment v2.0.5
23
+ ## 🚀 Terminal-based Media Workflow Experiment v2.1.0
24
24
 
25
25
  > [!IMPORTANT]
26
- > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
27
- > It does not host, provide, or distribute any media content.
28
- > All media sources are independently accessed and configured by the user.
26
+ > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
27
+ > It does not host, provide, or distribute any media content.
28
+ > All media sources are independently accessed and configured by the user.
29
29
  > Users are solely responsible for ensuring that their usage complies with the terms of service of any third-party platforms accessed via this tool.
30
30
 
31
31
  MyTunes Pro is a developer-focused **CLI Media Tool** for experimenting with terminal-based media workflows.
@@ -39,6 +39,8 @@ leveraging the `mpv` engine for local media processing and playback.
39
39
  ![Python](https://img.shields.io/badge/Python-3.9%2B-blue.svg)
40
40
  ![License](https://img.shields.io/badge/License-MIT-green.svg)
41
41
 
42
+ ---
43
+
42
44
  ## 📸 Screenshots
43
45
  | | |
44
46
  | :---: | :---: |
@@ -68,6 +70,180 @@ leveraging the `mpv` engine for local media processing and playback.
68
70
 
69
71
  ---
70
72
 
73
+ ## 🚀 Quick Install
74
+
75
+ We strongly recommend using **`pipx`** on modern macOS/Linux systems (PEP 668).
76
+
77
+ ### 1. Recommended Method (pipx)
78
+ Automatically creates an isolated environment and registers the command.
79
+
80
+ ```bash
81
+ # Ensure ensuredpath is run to register the command after pipx install!
82
+ pipx install mytunes-pro
83
+ pipx ensurepath
84
+ source ~/.zshrc # or source ~/.bashrc (apply immediately to current terminal)
85
+ ```
86
+
87
+ ### 2. Standard pip Method
88
+ If you encounter the `externally-managed-environment` error, add the following flag:
89
+
90
+ ```bash
91
+ pip install mytunes-pro --break-system-packages
92
+ ```
93
+
94
+ After installation, type **`mp`** anywhere in the terminal to run!
95
+
96
+ ### 🔄 Update
97
+ If already installed, simply use the command below to update to the latest features:
98
+
99
+ ```bash
100
+ pipx upgrade mytunes-pro
101
+ ```
102
+
103
+ ---
104
+
105
+ ## 🛠 Prerequisites
106
+
107
+ Please install the necessary tools for your operating system before running.
108
+
109
+ ### macOS (Using Homebrew)
110
+ ```bash
111
+ brew install mpv python3 pipx
112
+ ```
113
+
114
+ ### Linux (Ubuntu/Debian)
115
+ ```bash
116
+ sudo apt update
117
+ sudo apt install mpv python3 python3-pip pipx python3-venv -y
118
+ ```
119
+
120
+ ### Windows (WSL Guide)
121
+
122
+ Guide for Windows users where Korean search might not work or installation is difficult.
123
+
124
+ > **❓ What is WSL?**
125
+ > It allows you to run Linux environments directly on Windows. MyTunes works perfectly in this environment.
126
+
127
+ 1. **Install WSL**:
128
+ - Right-click `Start` -> Run `Terminal (Admin)`.
129
+ - Enter the command below and **Reboot**:
130
+ ```powershell
131
+ wsl --install -d Debian
132
+ ```
133
+
134
+ 2. **Install Essentials**:
135
+ ```bash
136
+ sudo apt update && sudo apt install mpv python3-pip pipx -y
137
+ ```
138
+
139
+ 3. **Install MyTunes**:
140
+ ```bash
141
+ pipx install mytunes-pro
142
+ pipx ensurepath
143
+ source ~/.bashrc # Apply settings immediately
144
+ ```
145
+
146
+ ---
147
+
148
+ ## 🧑‍💻 Manual Installation (For Developers)
149
+
150
+ Follow these steps to modify source code or use the development version.
151
+
152
+ 1. **Clone Repository**:
153
+ ```bash
154
+ git clone https://github.com/postgresql-co-kr/mytunes.git
155
+ cd mytunes
156
+ ```
157
+
158
+ 2. **Setup Virtual Environment**:
159
+ ```bash
160
+ python3 -m venv venv
161
+ source venv/bin/activate # macOS/Linux
162
+ pip install -r requirements.txt
163
+ ```
164
+
165
+ 3. **Run**:
166
+ ```bash
167
+ python3 mytune.py
168
+ ```
169
+
170
+ ---
171
+
172
+ ## ⌨️ Controls
173
+
174
+ **MyTunes Pro** is controlled entirely by keyboard.
175
+ We recommend using **Number Keys** for lag-free operation even in multi-language input modes.
176
+
177
+ ### ⚡️ Instant Hotkeys (Number Keys)
178
+ Executes immediately without worrying about input language status.
179
+
180
+ | Key | Function | Description |
181
+ | :--- | :--- | :--- |
182
+ | **`1`** | **Search** | Open music search (Same as `S`) |
183
+ | **`2`** | **Favorites** | View favorites list (Same as `F`) |
184
+ | **`3`** | **History** | View recently played 100 tracks (Same as `R`) |
185
+ | **`4`** | **Main** | Return to main screen (Same as `M`) |
186
+ | **`5`** | **Add/Del** | Toggle favorite for selected track (Same as `A`) |
187
+ | **`+`** | **Vol UP** | Volume +5% (Same as `=`) |
188
+ | **`-`** | **Vol DOWN** | Volume -5% (Same as `_`) |
189
+ | **`F7`** | **Open YouTube** | View current track in browser |
190
+ | **`E`** | **Equalizer** | Cycle EQ presets (Auto/Flat/Pop/Rock/Jazz/etc.) |
191
+ | **`6`** | **Back** | Go to previous screen (Same as `Q`, `h`) |
192
+ | **`L`** | **Forward** | Go forward to previous screen (`Right Arrow`) |
193
+ | **`ESC`** | **Background** | **Exit without stopping music** (Background Play) |
194
+
195
+ ### 🧭 Basic Navigation
196
+ | Key | Action |
197
+ | :--- | :--- |
198
+ | `↑` / `↓` / `k` / `j` | Move selection Up/Down (Vim keys supported) |
199
+ | `Enter` / `l` | **Select / Play** |
200
+ | `Space` | Play / Pause |
201
+ | `-` / `+` | **Volume Control** |
202
+ | `,` / `.` | Rewind / Forward 10s |
203
+ | `<` / `>` | Rewind / Forward 30s (Shift) |
204
+ | `Backspace` / `h` / `q` | Go Back / Clear Search |
205
+ | `L` | **Go Forward** |
206
+ | `/` | **Search** (Vim Style) |
207
+
208
+ ---
209
+
210
+ ## 📂 Data Storage
211
+ - Favorites and playback history are permanently saved in `~/.pymusic_data.json` in your home directory.
212
+ - Data is preserved even after restarting the program.
213
+
214
+ ---
215
+ ---
216
+
217
+ # 🎵 MyTunes Pro (Experimental Media Tool - KR)
218
+
219
+ ## 🚀 터미널 기반 미디어 워크플로우 실험 v2.1.0
220
+
221
+ > [!IMPORTANT]
222
+ > **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
223
+ > 본 소프트웨어는 어떠한 미디어 콘텐츠도 직접 호스팅하거나 배포하지 않습니다.
224
+ > 모든 미디어 소스는 사용자의 로컬 환경에서 직접 구성되고 접근되며, 사용자는 외부 플랫폼의 이용 약관을 준수할 책임이 있습니다.
225
+
226
+ MyTunes Pro는 개발자를 위해 설계된 **CLI 미디어 실험 도구**입니다.
227
+ Python `curses` 라이브러리를 통해 터미널 환경에서 미디어 URL을 로드하고 관리하며,
228
+ 사용자가 설치한 `mpv` 등의 외부 도구와 연동하여 미디어 워크플로우를 테스트할 수 있습니다.
229
+
230
+ ## ✨ 주요 특징
231
+
232
+ - **미디어 핸들링**: 외부 추출 도구를 사용한 미디어 URL 로드 및 처리 지원.
233
+ - **TUI 워크플로우**: `curses` 라이브러리 기반의 효율적인 터미널 인터페이스.
234
+ - **작업 유지**: 순차적 미디어 로딩 및 마지막 작업 상태 복원 기능.
235
+ - **환경 연동**: 사용자에 의해 구성된 외부 미디어 도구와의 연동 지원. (본 소프트웨어는 외부 도구를 포함하여 배포하지 않습니다.)
236
+
237
+ ---
238
+
239
+ ## 📸 스크린샷 (Screenshots)
240
+ | | |
241
+ | :---: | :---: |
242
+ | ![Main](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_1.webp) | ![Search](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_2.webp) |
243
+ | ![Play](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_3.webp) | ![List](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_4.webp) |
244
+
245
+ ---
246
+
71
247
  ## 🚀 빠른 설치 (Quick Install)
72
248
 
73
249
  최신 macOS/Linux 시스템(PEP 668)에서는 **`pipx`** 사용을 강력히 권장합니다.
@@ -129,12 +305,12 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
129
305
  wsl --install -d Debian
130
306
  ```
131
307
 
132
- 3. **필수 도구 설치**:
308
+ 2. **필수 도구 설치**:
133
309
  ```bash
134
310
  sudo apt update && sudo apt install mpv python3-pip pipx -y
135
311
  ```
136
312
 
137
- 4. **MyTunes 설치**:
313
+ 3. **MyTunes 설치**:
138
314
  ```bash
139
315
  pipx install mytunes-pro
140
316
  pipx ensurepath
@@ -185,6 +361,7 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
185
361
  | **`+`** | **볼륨 UP** | 볼륨 +5% (단축키 `=`와 동일) |
186
362
  | **`-`** | **볼륨 DOWN** | 볼륨 -5% (단축키 `_`와 동일) |
187
363
  | **`F7`** | **유튜브 열기** | 현재 곡을 브라우저에서 보기 |
364
+ | **`E`** | **이퀄라이저** | EQ 프리셋 전환 (Auto/Flat/Pop/Rock/Jazz 등) |
188
365
  | **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `h`와 동일) |
189
366
  | **`L`** | **앞으로** | 이전 화면에서 앞화면으로 다시 이동 (`Right Arrow`) |
190
367
  | **`ESC`** | **배경재생** | **음악 끄지 않고 나가기** (백그라운드 재생) |
@@ -211,32 +388,31 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
211
388
  ---
212
389
  ---
213
390
 
214
- ---
215
-
216
- # 🎵 MyTunes Pro (Experimental Media Tool - KR)
217
-
218
- ## 🚀 터미널 기반 미디어 워크플로우 실험 v2.0.5
219
-
220
- > [!IMPORTANT]
221
- > **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
222
- > 본 소프트웨어는 어떠한 미디어 콘텐츠도 직접 호스팅하거나 배포하지 않습니다.
223
- > 모든 미디어 소스는 사용자의 로컬 환경에서 직접 구성되고 접근되며, 사용자는 외부 플랫폼의 이용 약관을 준수할 책임이 있습니다.
224
-
225
- MyTunes Pro는 개발자를 위해 설계된 **CLI 미디어 실험 도구**입니다.
226
- Python `curses` 라이브러리를 통해 터미널 환경에서 미디어 URL을 로드하고 관리하며,
227
- 사용자가 설치한 `mpv` 등의 외부 도구와 연동하여 미디어 워크플로우를 테스트할 수 있습니다.
228
-
229
- ## ✨ 주요 특징
230
-
231
- - **미디어 핸들링**: 외부 추출 도구를 사용한 미디어 URL 로드 및 처리 지원.
232
- - **TUI 워크플로우**: `curses` 라이브러리 기반의 효율적인 터미널 인터페이스.
233
- - **작업 유지**: 순차적 미디어 로딩 및 마지막 작업 상태 복원 기능.
234
- - **환경 연동**: 사용자에 의해 구성된 외부 미디어 도구와의 연동 지원. (본 소프트웨어는 외부 도구를 포함하여 배포하지 않습니다.)
235
-
236
- ---
237
-
238
391
  ## 🔄 Changelog
239
392
 
393
+ ### v2.1.0 (2026-02-02)
394
+ - **Zero-Freeze IPC Resilience**: Implemented a "Fast-Fail" mechanism that detects mpv process death within 0.1ms via `poll()`, preventing TUI freezes.
395
+ - **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.
396
+ - **Connection Throttling**: Added a 1.5-second "cool-down" period for reconnection attempts to minimize blocking time on Windows/WSL environments.
397
+ - **Multibyte Harmony**: Explicitly configured `locale.setlocale` to ensure stable emoji and CJK character rendering across different terminal environments.
398
+ - **Improved Autoplay Stability**: Autoplay logic now skips status checks when the socket is unhealthy to prevent feedback loops.
399
+
400
+ ### v2.0.8 (2026-02-02)
401
+ - **Windows/WSL Socket Recovery**: Fixed UI freezing when mpv socket disconnects during window switching.
402
+ - **IPC Resilience**: Added socket pre-check and failure counter to prevent blocking on broken connections.
403
+ - **Automatic Recovery**: New playback automatically restarts mpv if socket is unhealthy.
404
+
405
+ ### v2.0.7 (2026-02-02)
406
+ - **Performance Optimization**: Improved keyboard responsiveness on Windows/WSL by implementing EQ detection caching.
407
+ - **Data Management**: Limited resume data to 500 entries with automatic FIFO cleanup to prevent JSON bloat.
408
+ - **Cache System**: Added 200-entry EQ genre cache to skip redundant keyword matching for repeated tracks.
409
+
410
+ ### v2.0.6 (2026-02-02)
411
+ - **10-Band Equalizer**: Added professional-grade 10-band EQ with presets (Flat, Pop, Rock, Jazz, Classical, Full Bass, Dance, Club, Live, Soft).
412
+ - **Auto EQ Detection**: Intelligent genre detection from track title/channel info automatically applies optimal EQ preset.
413
+ - **Keyboard Shortcut**: Press `E` to cycle through EQ presets in real-time without interrupting playback.
414
+ - **Multilingual Genre Keywords**: Auto EQ supports genre detection in 12 languages including Korean, Japanese, Chinese, Spanish, and more.
415
+
240
416
  ### v2.0.5 (2026-02-01)
241
417
  - **Input Feedback Refinement**: Transitioned from blinking warnings to a static Bold Yellow status message for better accessibility and premium feel.
242
418
  - **Auto-clear Optimization**: Implemented a 5-second auto-clear timer for all transient status messages.
@@ -1,11 +1,11 @@
1
- # 🎵 MyTunes Pro - Professional TUI Edition v2.0.5
1
+ # 🎵 MyTunes Pro - Professional TUI Edition v2.1.0
2
2
 
3
- ## 🚀 Terminal-based Media Workflow Experiment v2.0.5
3
+ ## 🚀 Terminal-based Media Workflow Experiment v2.1.0
4
4
 
5
5
  > [!IMPORTANT]
6
- > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
7
- > It does not host, provide, or distribute any media content.
8
- > All media sources are independently accessed and configured by the user.
6
+ > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
7
+ > It does not host, provide, or distribute any media content.
8
+ > All media sources are independently accessed and configured by the user.
9
9
  > Users are solely responsible for ensuring that their usage complies with the terms of service of any third-party platforms accessed via this tool.
10
10
 
11
11
  MyTunes Pro is a developer-focused **CLI Media Tool** for experimenting with terminal-based media workflows.
@@ -19,6 +19,8 @@ leveraging the `mpv` engine for local media processing and playback.
19
19
  ![Python](https://img.shields.io/badge/Python-3.9%2B-blue.svg)
20
20
  ![License](https://img.shields.io/badge/License-MIT-green.svg)
21
21
 
22
+ ---
23
+
22
24
  ## 📸 Screenshots
23
25
  | | |
24
26
  | :---: | :---: |
@@ -48,6 +50,180 @@ leveraging the `mpv` engine for local media processing and playback.
48
50
 
49
51
  ---
50
52
 
53
+ ## 🚀 Quick Install
54
+
55
+ We strongly recommend using **`pipx`** on modern macOS/Linux systems (PEP 668).
56
+
57
+ ### 1. Recommended Method (pipx)
58
+ Automatically creates an isolated environment and registers the command.
59
+
60
+ ```bash
61
+ # Ensure ensuredpath is run to register the command after pipx install!
62
+ pipx install mytunes-pro
63
+ pipx ensurepath
64
+ source ~/.zshrc # or source ~/.bashrc (apply immediately to current terminal)
65
+ ```
66
+
67
+ ### 2. Standard pip Method
68
+ If you encounter the `externally-managed-environment` error, add the following flag:
69
+
70
+ ```bash
71
+ pip install mytunes-pro --break-system-packages
72
+ ```
73
+
74
+ After installation, type **`mp`** anywhere in the terminal to run!
75
+
76
+ ### 🔄 Update
77
+ If already installed, simply use the command below to update to the latest features:
78
+
79
+ ```bash
80
+ pipx upgrade mytunes-pro
81
+ ```
82
+
83
+ ---
84
+
85
+ ## 🛠 Prerequisites
86
+
87
+ Please install the necessary tools for your operating system before running.
88
+
89
+ ### macOS (Using Homebrew)
90
+ ```bash
91
+ brew install mpv python3 pipx
92
+ ```
93
+
94
+ ### Linux (Ubuntu/Debian)
95
+ ```bash
96
+ sudo apt update
97
+ sudo apt install mpv python3 python3-pip pipx python3-venv -y
98
+ ```
99
+
100
+ ### Windows (WSL Guide)
101
+
102
+ Guide for Windows users where Korean search might not work or installation is difficult.
103
+
104
+ > **❓ What is WSL?**
105
+ > It allows you to run Linux environments directly on Windows. MyTunes works perfectly in this environment.
106
+
107
+ 1. **Install WSL**:
108
+ - Right-click `Start` -> Run `Terminal (Admin)`.
109
+ - Enter the command below and **Reboot**:
110
+ ```powershell
111
+ wsl --install -d Debian
112
+ ```
113
+
114
+ 2. **Install Essentials**:
115
+ ```bash
116
+ sudo apt update && sudo apt install mpv python3-pip pipx -y
117
+ ```
118
+
119
+ 3. **Install MyTunes**:
120
+ ```bash
121
+ pipx install mytunes-pro
122
+ pipx ensurepath
123
+ source ~/.bashrc # Apply settings immediately
124
+ ```
125
+
126
+ ---
127
+
128
+ ## 🧑‍💻 Manual Installation (For Developers)
129
+
130
+ Follow these steps to modify source code or use the development version.
131
+
132
+ 1. **Clone Repository**:
133
+ ```bash
134
+ git clone https://github.com/postgresql-co-kr/mytunes.git
135
+ cd mytunes
136
+ ```
137
+
138
+ 2. **Setup Virtual Environment**:
139
+ ```bash
140
+ python3 -m venv venv
141
+ source venv/bin/activate # macOS/Linux
142
+ pip install -r requirements.txt
143
+ ```
144
+
145
+ 3. **Run**:
146
+ ```bash
147
+ python3 mytune.py
148
+ ```
149
+
150
+ ---
151
+
152
+ ## ⌨️ Controls
153
+
154
+ **MyTunes Pro** is controlled entirely by keyboard.
155
+ We recommend using **Number Keys** for lag-free operation even in multi-language input modes.
156
+
157
+ ### ⚡️ Instant Hotkeys (Number Keys)
158
+ Executes immediately without worrying about input language status.
159
+
160
+ | Key | Function | Description |
161
+ | :--- | :--- | :--- |
162
+ | **`1`** | **Search** | Open music search (Same as `S`) |
163
+ | **`2`** | **Favorites** | View favorites list (Same as `F`) |
164
+ | **`3`** | **History** | View recently played 100 tracks (Same as `R`) |
165
+ | **`4`** | **Main** | Return to main screen (Same as `M`) |
166
+ | **`5`** | **Add/Del** | Toggle favorite for selected track (Same as `A`) |
167
+ | **`+`** | **Vol UP** | Volume +5% (Same as `=`) |
168
+ | **`-`** | **Vol DOWN** | Volume -5% (Same as `_`) |
169
+ | **`F7`** | **Open YouTube** | View current track in browser |
170
+ | **`E`** | **Equalizer** | Cycle EQ presets (Auto/Flat/Pop/Rock/Jazz/etc.) |
171
+ | **`6`** | **Back** | Go to previous screen (Same as `Q`, `h`) |
172
+ | **`L`** | **Forward** | Go forward to previous screen (`Right Arrow`) |
173
+ | **`ESC`** | **Background** | **Exit without stopping music** (Background Play) |
174
+
175
+ ### 🧭 Basic Navigation
176
+ | Key | Action |
177
+ | :--- | :--- |
178
+ | `↑` / `↓` / `k` / `j` | Move selection Up/Down (Vim keys supported) |
179
+ | `Enter` / `l` | **Select / Play** |
180
+ | `Space` | Play / Pause |
181
+ | `-` / `+` | **Volume Control** |
182
+ | `,` / `.` | Rewind / Forward 10s |
183
+ | `<` / `>` | Rewind / Forward 30s (Shift) |
184
+ | `Backspace` / `h` / `q` | Go Back / Clear Search |
185
+ | `L` | **Go Forward** |
186
+ | `/` | **Search** (Vim Style) |
187
+
188
+ ---
189
+
190
+ ## 📂 Data Storage
191
+ - Favorites and playback history are permanently saved in `~/.pymusic_data.json` in your home directory.
192
+ - Data is preserved even after restarting the program.
193
+
194
+ ---
195
+ ---
196
+
197
+ # 🎵 MyTunes Pro (Experimental Media Tool - KR)
198
+
199
+ ## 🚀 터미널 기반 미디어 워크플로우 실험 v2.1.0
200
+
201
+ > [!IMPORTANT]
202
+ > **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
203
+ > 본 소프트웨어는 어떠한 미디어 콘텐츠도 직접 호스팅하거나 배포하지 않습니다.
204
+ > 모든 미디어 소스는 사용자의 로컬 환경에서 직접 구성되고 접근되며, 사용자는 외부 플랫폼의 이용 약관을 준수할 책임이 있습니다.
205
+
206
+ MyTunes Pro는 개발자를 위해 설계된 **CLI 미디어 실험 도구**입니다.
207
+ Python `curses` 라이브러리를 통해 터미널 환경에서 미디어 URL을 로드하고 관리하며,
208
+ 사용자가 설치한 `mpv` 등의 외부 도구와 연동하여 미디어 워크플로우를 테스트할 수 있습니다.
209
+
210
+ ## ✨ 주요 특징
211
+
212
+ - **미디어 핸들링**: 외부 추출 도구를 사용한 미디어 URL 로드 및 처리 지원.
213
+ - **TUI 워크플로우**: `curses` 라이브러리 기반의 효율적인 터미널 인터페이스.
214
+ - **작업 유지**: 순차적 미디어 로딩 및 마지막 작업 상태 복원 기능.
215
+ - **환경 연동**: 사용자에 의해 구성된 외부 미디어 도구와의 연동 지원. (본 소프트웨어는 외부 도구를 포함하여 배포하지 않습니다.)
216
+
217
+ ---
218
+
219
+ ## 📸 스크린샷 (Screenshots)
220
+ | | |
221
+ | :---: | :---: |
222
+ | ![Main](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_1.webp) | ![Search](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_2.webp) |
223
+ | ![Play](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_3.webp) | ![List](https://raw.githubusercontent.com/postgresql-co-kr/mytunes/master/screenshots/screenshot_4.webp) |
224
+
225
+ ---
226
+
51
227
  ## 🚀 빠른 설치 (Quick Install)
52
228
 
53
229
  최신 macOS/Linux 시스템(PEP 668)에서는 **`pipx`** 사용을 강력히 권장합니다.
@@ -109,12 +285,12 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
109
285
  wsl --install -d Debian
110
286
  ```
111
287
 
112
- 3. **필수 도구 설치**:
288
+ 2. **필수 도구 설치**:
113
289
  ```bash
114
290
  sudo apt update && sudo apt install mpv python3-pip pipx -y
115
291
  ```
116
292
 
117
- 4. **MyTunes 설치**:
293
+ 3. **MyTunes 설치**:
118
294
  ```bash
119
295
  pipx install mytunes-pro
120
296
  pipx ensurepath
@@ -165,6 +341,7 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
165
341
  | **`+`** | **볼륨 UP** | 볼륨 +5% (단축키 `=`와 동일) |
166
342
  | **`-`** | **볼륨 DOWN** | 볼륨 -5% (단축키 `_`와 동일) |
167
343
  | **`F7`** | **유튜브 열기** | 현재 곡을 브라우저에서 보기 |
344
+ | **`E`** | **이퀄라이저** | EQ 프리셋 전환 (Auto/Flat/Pop/Rock/Jazz 등) |
168
345
  | **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `h`와 동일) |
169
346
  | **`L`** | **앞으로** | 이전 화면에서 앞화면으로 다시 이동 (`Right Arrow`) |
170
347
  | **`ESC`** | **배경재생** | **음악 끄지 않고 나가기** (백그라운드 재생) |
@@ -191,32 +368,31 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
191
368
  ---
192
369
  ---
193
370
 
194
- ---
195
-
196
- # 🎵 MyTunes Pro (Experimental Media Tool - KR)
197
-
198
- ## 🚀 터미널 기반 미디어 워크플로우 실험 v2.0.5
199
-
200
- > [!IMPORTANT]
201
- > **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
202
- > 본 소프트웨어는 어떠한 미디어 콘텐츠도 직접 호스팅하거나 배포하지 않습니다.
203
- > 모든 미디어 소스는 사용자의 로컬 환경에서 직접 구성되고 접근되며, 사용자는 외부 플랫폼의 이용 약관을 준수할 책임이 있습니다.
204
-
205
- MyTunes Pro는 개발자를 위해 설계된 **CLI 미디어 실험 도구**입니다.
206
- Python `curses` 라이브러리를 통해 터미널 환경에서 미디어 URL을 로드하고 관리하며,
207
- 사용자가 설치한 `mpv` 등의 외부 도구와 연동하여 미디어 워크플로우를 테스트할 수 있습니다.
208
-
209
- ## ✨ 주요 특징
210
-
211
- - **미디어 핸들링**: 외부 추출 도구를 사용한 미디어 URL 로드 및 처리 지원.
212
- - **TUI 워크플로우**: `curses` 라이브러리 기반의 효율적인 터미널 인터페이스.
213
- - **작업 유지**: 순차적 미디어 로딩 및 마지막 작업 상태 복원 기능.
214
- - **환경 연동**: 사용자에 의해 구성된 외부 미디어 도구와의 연동 지원. (본 소프트웨어는 외부 도구를 포함하여 배포하지 않습니다.)
215
-
216
- ---
217
-
218
371
  ## 🔄 Changelog
219
372
 
373
+ ### v2.1.0 (2026-02-02)
374
+ - **Zero-Freeze IPC Resilience**: Implemented a "Fast-Fail" mechanism that detects mpv process death within 0.1ms via `poll()`, preventing TUI freezes.
375
+ - **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.
376
+ - **Connection Throttling**: Added a 1.5-second "cool-down" period for reconnection attempts to minimize blocking time on Windows/WSL environments.
377
+ - **Multibyte Harmony**: Explicitly configured `locale.setlocale` to ensure stable emoji and CJK character rendering across different terminal environments.
378
+ - **Improved Autoplay Stability**: Autoplay logic now skips status checks when the socket is unhealthy to prevent feedback loops.
379
+
380
+ ### v2.0.8 (2026-02-02)
381
+ - **Windows/WSL Socket Recovery**: Fixed UI freezing when mpv socket disconnects during window switching.
382
+ - **IPC Resilience**: Added socket pre-check and failure counter to prevent blocking on broken connections.
383
+ - **Automatic Recovery**: New playback automatically restarts mpv if socket is unhealthy.
384
+
385
+ ### v2.0.7 (2026-02-02)
386
+ - **Performance Optimization**: Improved keyboard responsiveness on Windows/WSL by implementing EQ detection caching.
387
+ - **Data Management**: Limited resume data to 500 entries with automatic FIFO cleanup to prevent JSON bloat.
388
+ - **Cache System**: Added 200-entry EQ genre cache to skip redundant keyword matching for repeated tracks.
389
+
390
+ ### v2.0.6 (2026-02-02)
391
+ - **10-Band Equalizer**: Added professional-grade 10-band EQ with presets (Flat, Pop, Rock, Jazz, Classical, Full Bass, Dance, Club, Live, Soft).
392
+ - **Auto EQ Detection**: Intelligent genre detection from track title/channel info automatically applies optimal EQ preset.
393
+ - **Keyboard Shortcut**: Press `E` to cycle through EQ presets in real-time without interrupting playback.
394
+ - **Multilingual Genre Keywords**: Auto EQ supports genre detection in 12 languages including Korean, Japanese, Chinese, Spanish, and more.
395
+
220
396
  ### v2.0.5 (2026-02-01)
221
397
  - **Input Feedback Refinement**: Transitioned from blinking warnings to a static Bold Yellow status message for better accessibility and premium feel.
222
398
  - **Auto-clear Optimization**: Implemented a 5-second auto-clear timer for all transient status messages.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mytunes-pro"
7
- version = "2.0.5"
7
+ version = "2.1.0"
8
8
  authors = [
9
9
  { name = "loxo", email = "loxo5432@gmail.com" },
10
10
  ]