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.
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/PKG-INFO +208 -32
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/README.md +207 -31
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/pyproject.toml +1 -1
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes/app.py +578 -121
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes_pro.egg-info/PKG-INFO +208 -32
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/LICENSE +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/setup.cfg +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes/__init__.py +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes_pro.egg-info/SOURCES.txt +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes_pro.egg-info/dependency_links.txt +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes_pro.egg-info/entry_points.txt +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes_pro.egg-info/requires.txt +0 -0
- {mytunes_pro-2.0.5 → mytunes_pro-2.1.0}/src/mytunes_pro.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mytunes-pro
|
|
3
|
-
Version: 2.0
|
|
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
|
|
21
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.0
|
|
22
22
|
|
|
23
|
-
## 🚀 Terminal-based Media Workflow Experiment v2.0
|
|
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
|

|
|
40
40
|

|
|
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
|
+
|  |  |
|
|
243
|
+
|  |  |
|
|
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
|
-
|
|
308
|
+
2. **필수 도구 설치**:
|
|
133
309
|
```bash
|
|
134
310
|
sudo apt update && sudo apt install mpv python3-pip pipx -y
|
|
135
311
|
```
|
|
136
312
|
|
|
137
|
-
|
|
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
|
|
1
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.0
|
|
2
2
|
|
|
3
|
-
## 🚀 Terminal-based Media Workflow Experiment v2.0
|
|
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
|

|
|
20
20
|

|
|
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
|
+
|  |  |
|
|
223
|
+
|  |  |
|
|
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
|
-
|
|
288
|
+
2. **필수 도구 설치**:
|
|
113
289
|
```bash
|
|
114
290
|
sudo apt update && sudo apt install mpv python3-pip pipx -y
|
|
115
291
|
```
|
|
116
292
|
|
|
117
|
-
|
|
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.
|