mytunes-pro 1.9.3__tar.gz → 2.0.4__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-1.9.3/src/mytunes_pro.egg-info → mytunes_pro-2.0.4}/PKG-INFO +91 -97
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/README.md +90 -96
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/pyproject.toml +1 -1
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/src/mytunes/app.py +342 -389
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4/src/mytunes_pro.egg-info}/PKG-INFO +91 -97
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/LICENSE +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/setup.cfg +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/src/mytunes/__init__.py +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/src/mytunes_pro.egg-info/SOURCES.txt +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/src/mytunes_pro.egg-info/dependency_links.txt +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/src/mytunes_pro.egg-info/entry_points.txt +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/src/mytunes_pro.egg-info/requires.txt +0 -0
- {mytunes_pro-1.9.3 → mytunes_pro-2.0.4}/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:
|
|
3
|
+
Version: 2.0.4
|
|
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
|
|
@@ -17,16 +17,23 @@ Requires-Dist: yt-dlp
|
|
|
17
17
|
Requires-Dist: pusher
|
|
18
18
|
Dynamic: license-file
|
|
19
19
|
|
|
20
|
-
# 🎵 MyTunes Pro
|
|
20
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.0.4
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
터미널 환경에서 **YouTube 음악을 검색하여 듣는** 가볍고 빠른 키보드 중심의 플레이어입니다.
|
|
24
|
-
한국어 입력 환경에서도 **숫자 키(1~5)**를 통해 지연 없는 쾌적한 조작이 가능합니다.
|
|
22
|
+
## 🚀 Terminal-based Media Workflow Experiment v2.0.4
|
|
25
23
|
|
|
26
|
-
>
|
|
27
|
-
>
|
|
28
|
-
>
|
|
29
|
-
>
|
|
24
|
+
> [!IMPORTANT]
|
|
25
|
+
> **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
|
|
26
|
+
> It does not host, provide, or distribute any media content.
|
|
27
|
+
> All media sources are independently accessed and configured by the user.
|
|
28
|
+
> Users are solely responsible for ensuring that their usage complies with the terms of service of any third-party platforms accessed via this tool.
|
|
29
|
+
|
|
30
|
+
MyTunes Pro is a developer-focused **CLI Media Tool** for experimenting with terminal-based media workflows.
|
|
31
|
+
It utilizes the Python `curses` library to provide a structured TUI (Terminal User Interface) for handling media URLs,
|
|
32
|
+
leveraging the `mpv` engine for local media processing and playback.
|
|
33
|
+
|
|
34
|
+
> **💡 Project Note**
|
|
35
|
+
> This tool was designed for personal research into how terminal users can interact with media sources without interrupting their developer workflow.
|
|
36
|
+
> It explores the integration between local CLI environments (like Headless Debian Servers) and external media handling utilities.
|
|
30
37
|
|
|
31
38
|

|
|
32
39
|

|
|
@@ -39,27 +46,24 @@ Dynamic: license-file
|
|
|
39
46
|
|
|
40
47
|
---
|
|
41
48
|
|
|
42
|
-
## ✨
|
|
49
|
+
## ✨ Core Features
|
|
43
50
|
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
- **라이브 (F8)**: 전 세계 유저들과 함께 듣는 **실시간 음악 대시보드** (전용 팝업).
|
|
51
|
-
- **공유 (F9)**: 내가 듣는 곡을 **라이브 스테이션에 즉시 송출**하여 함께 즐깁니다.
|
|
52
|
-
- **비주얼**: 현대적인 심볼 아이콘(⌕, ★, ◷)과 깔끔한 디자인.
|
|
51
|
+
- **Media Handling**: Support for loading and processing media URLs using external extraction tools.
|
|
52
|
+
- **TUI Workflow**: Efficient, low-latency interface built on the `curses` library.
|
|
53
|
+
- **Workflow Persistence**: Handles sequential media loading and state restoration.
|
|
54
|
+
- **Terminal Optimization**: Performance-focused design that prioritizes keyboard-driven interactions.
|
|
55
|
+
- **Smart Management**: Optional user-configured collections, interaction history, and metadata handling.
|
|
56
|
+
- **External Integration**: Capabilities to load media links into external viewer/player environments.
|
|
53
57
|
|
|
54
58
|
---
|
|
55
59
|
|
|
56
|
-
## 💻
|
|
60
|
+
## 💻 Environment & Integration
|
|
57
61
|
|
|
58
|
-
**MyTunes Pro
|
|
62
|
+
**MyTunes Pro** is a CLI-based tool. It can integrate with externally installed media processing tools.
|
|
59
63
|
|
|
60
|
-
- **
|
|
61
|
-
- **Linux**:
|
|
62
|
-
- **Windows**: **WSL(Windows Subsystem for Linux)
|
|
64
|
+
- **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.
|
|
65
|
+
- **macOS/Linux**: Native terminal support.
|
|
66
|
+
- **Windows**: Recommended to use with **WSL (Windows Subsystem for Linux)**.
|
|
63
67
|
|
|
64
68
|
---
|
|
65
69
|
|
|
@@ -180,21 +184,21 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
180
184
|
| **`+`** | **볼륨 UP** | 볼륨 +5% (단축키 `=`와 동일) |
|
|
181
185
|
| **`-`** | **볼륨 DOWN** | 볼륨 -5% (단축키 `_`와 동일) |
|
|
182
186
|
| **`F7`** | **유튜브 열기** | 현재 곡을 브라우저에서 보기 |
|
|
183
|
-
| **`
|
|
184
|
-
| **`
|
|
185
|
-
| **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `H`와 동일) |
|
|
187
|
+
| **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `h`와 동일) |
|
|
188
|
+
| **`L`** | **앞으로** | 이전 화면에서 앞화면으로 다시 이동 (`Right Arrow`) |
|
|
186
189
|
| **`ESC`** | **배경재생** | **음악 끄지 않고 나가기** (백그라운드 재생) |
|
|
187
190
|
|
|
188
191
|
### 🧭 기본 탐색
|
|
189
192
|
| 키 | 동작 |
|
|
190
193
|
| :--- | :--- |
|
|
191
194
|
| `↑` / `↓` / `k` / `j` | 리스트 위/아래 이동 (Vim 키 지원) |
|
|
192
|
-
| `Enter` / `l` | **선택 / 재생**
|
|
195
|
+
| `Enter` / `l` | **선택 / 재생** |
|
|
193
196
|
| `Space` | 재생 / 일시정지 (Play/Pause) |
|
|
194
197
|
| `-` / `+` | **볼륨 조절** (- / +) |
|
|
195
198
|
| `,` / `.` | 10초 뒤로 / 앞으로 감기 |
|
|
196
199
|
| `<` / `>` | **30초** 뒤로 / 앞으로 감기 (Shift) |
|
|
197
200
|
| `Backspace` / `h` / `q` | 뒤로 가기 / 검색어 지우기 |
|
|
201
|
+
| `L` | **앞으로 가기** |
|
|
198
202
|
| `/` | **검색** (Vim Style) |
|
|
199
203
|
|
|
200
204
|
---
|
|
@@ -206,97 +210,88 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
206
210
|
---
|
|
207
211
|
---
|
|
208
212
|
|
|
209
|
-
|
|
213
|
+
---
|
|
210
214
|
|
|
211
|
-
|
|
212
|
-
A lightweight, keyboard-centric terminal player for streaming YouTube music.
|
|
215
|
+
# 🎵 MyTunes Pro (Experimental Media Tool - KR)
|
|
213
216
|
|
|
214
|
-
|
|
217
|
+
## 🚀 터미널 기반 미디어 워크플로우 실험 v2.0.3
|
|
218
|
+
|
|
219
|
+
> [!IMPORTANT]
|
|
220
|
+
> **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
|
|
221
|
+
> 본 소프트웨어는 어떠한 미디어 콘텐츠도 직접 호스팅하거나 배포하지 않습니다.
|
|
222
|
+
> 모든 미디어 소스는 사용자의 로컬 환경에서 직접 구성되고 접근되며, 사용자는 외부 플랫폼의 이용 약관을 준수할 책임이 있습니다.
|
|
215
223
|
|
|
216
|
-
|
|
224
|
+
MyTunes Pro는 개발자를 위해 설계된 **CLI 미디어 실험 도구**입니다.
|
|
225
|
+
Python `curses` 라이브러리를 통해 터미널 환경에서 미디어 URL을 로드하고 관리하며,
|
|
226
|
+
사용자가 설치한 `mpv` 등의 외부 도구와 연동하여 미디어 워크플로우를 테스트할 수 있습니다.
|
|
217
227
|
|
|
218
|
-
|
|
228
|
+
## ✨ 주요 특징
|
|
219
229
|
|
|
220
|
-
-
|
|
221
|
-
- **
|
|
222
|
-
-
|
|
230
|
+
- **미디어 핸들링**: 외부 추출 도구를 사용한 미디어 URL 로드 및 처리 지원.
|
|
231
|
+
- **TUI 워크플로우**: `curses` 라이브러리 기반의 효율적인 터미널 인터페이스.
|
|
232
|
+
- **작업 유지**: 순차적 미디어 로딩 및 마지막 작업 상태 복원 기능.
|
|
233
|
+
- **환경 연동**: 사용자에 의해 구성된 외부 미디어 도구와의 연동 지원. (본 소프트웨어는 외부 도구를 포함하여 배포하지 않습니다.)
|
|
223
234
|
|
|
224
235
|
---
|
|
225
236
|
|
|
226
|
-
##
|
|
237
|
+
## 🔄 Changelog
|
|
227
238
|
|
|
228
|
-
|
|
239
|
+
### v2.0.4 (2026-02-01)
|
|
240
|
+
- **Legal Polish**: Comprehensive scrubbing of brand identifiers and service-oriented terminology across the ecosystem.
|
|
241
|
+
- **Localization**: Fully localized Korean landing page and technical experiment descriptions.
|
|
242
|
+
- **Educational Focus**: Added explicit project disclaimers to all web footers.
|
|
243
|
+
- **Project Scope**: Solidified positioning as a "Media Handling Experiment" rather than a music player.
|
|
229
244
|
|
|
230
|
-
###
|
|
231
|
-
```bash
|
|
232
|
-
pipx install mytunes-pro
|
|
233
|
-
pipx ensurepath
|
|
234
|
-
source ~/.zshrc # or source ~/.bashrc to apply changes immediately
|
|
235
|
-
```
|
|
245
|
+
### v2.0.3 (Input Handling & Unicode Stability)
|
|
236
246
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
247
|
+
- **Input Logic**: Replaced legacy `getch()` with `get_wch()` in all UI dialogs (`ask_resume`, `show_copy_dialog`) for robust wide-character and Unicode support.
|
|
248
|
+
- **Architecture**: Refactored the input handling system into a modular, command-based architecture (v2.0.3).
|
|
249
|
+
- **Decoupling**: Separated input collection (`get_next_event`), event normalization, and command execution.
|
|
250
|
+
- **Improved ESC Handling**: Enhanced detection of ESC and multi-byte sequences (including Option+Backspace) for smoother navigation.
|
|
241
251
|
|
|
242
|
-
|
|
252
|
+
### v2.0.2 (Stability & Browser Optimization)
|
|
243
253
|
|
|
244
|
-
|
|
254
|
+
- **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.
|
|
255
|
+
- **App Mode Restore**: Fixed and improved Chrome/Brave App Mode (Popup) for the Live Station on macOS.
|
|
256
|
+
- **Improved Remote Detection**: Refined SSH/WSL detection to ensure local browser features are correctly enabled where possible.
|
|
245
257
|
|
|
246
|
-
|
|
258
|
+
### v2.0.1 (Keymap Refinement & Version Sync)
|
|
247
259
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
260
|
+
- **Navigation**: Added browser-style Forward navigation (`L` / `Right Arrow`).
|
|
261
|
+
- **Keybinding Optimization**: Updated History mapping to `R` / `3` and refined Back/Forward logic.
|
|
262
|
+
- **IME Stability**: Removed unstable Korean character mappings (`ㄴ`, `ㄹ`, `ㄱ`, 등) to prevent ghost key issues in the TUI.
|
|
263
|
+
- **Global Synchronization**: Synchronized version v2.0.1 across CLI, TUI, and Web interfaces.
|
|
252
264
|
|
|
253
|
-
###
|
|
254
|
-
```bash
|
|
255
|
-
sudo apt update
|
|
256
|
-
sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
257
|
-
```
|
|
265
|
+
### v1.9.9 (Domain Migration & Realtime Sync)
|
|
258
266
|
|
|
259
|
-
|
|
267
|
+
- **Domain Migration**: Updated all branding and internal links to support `mytunes-pro.com`.
|
|
268
|
+
- **Realtime Stability**: Fixed critical state-management bugs in the live dashboard that caused list clearing and duplicated track entries.
|
|
269
|
+
- **Improved Empty State**: Redesigned the "SIGNAL LOST" screen into a more descriptive "READY TO RECEIVE" interface for better UX.
|
|
260
270
|
|
|
261
|
-
|
|
262
|
-
```powershell
|
|
263
|
-
wsl --install -d Debian
|
|
264
|
-
```
|
|
265
|
-
**Restart your computer** after installation.
|
|
271
|
+
### v1.9.8 (Realtime Stabilization)
|
|
266
272
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
273
|
+
- **UI Refinement**: Implemented in-list "Now Playing" sticky behavior with auto-scroll synchronization for a seamless browsing experience.
|
|
274
|
+
- **Queue System Optimization**: Capped incoming track queue at 200 items with a "200+" notification indicator for high-traffic stability.
|
|
275
|
+
- **Popup UI Consistency**: Unified Live Station popup dimensions to 620x900 across Web and TUI.
|
|
276
|
+
- **Improved Media Playback**: Optimized the media player hook to resolve initialization race conditions and syntax edge cases.
|
|
271
277
|
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
pipx install mytunes-pro
|
|
275
|
-
pipx ensurepath
|
|
276
|
-
source ~/.bashrc
|
|
277
|
-
```
|
|
278
|
+
### v1.9.7 (Analytics)
|
|
278
279
|
|
|
279
|
-
|
|
280
|
+
- **Analytics**: Integrated Google Analytics 4 (GA4) into the landing page and realtime feed to track visitor traffic and usage patterns.
|
|
280
281
|
|
|
281
|
-
|
|
282
|
+
### v1.9.6 (Realtime UX)
|
|
282
283
|
|
|
283
|
-
|
|
284
|
-
| :--- | :--- | :--- |
|
|
285
|
-
| **`1`** | **Search** | Open search bar (Same as `S`) |
|
|
286
|
-
| **`2`** | **Favs** | View favorites list (Same as `F`) |
|
|
287
|
-
| **`3`** | **Hist** | View history (Same as `R`) |
|
|
288
|
-
| **`4`** | **Main** | Go to Main Menu (Same as `M`) |
|
|
289
|
-
| **`5`** | **Add/Del** | Toggle Favorite (Same as `A`) |
|
|
290
|
-
| **`+`** | **Vol Up** | Volume +5% (Same as `=`) |
|
|
291
|
-
| **`-`** | **Vol Down** | Volume -5% (Same as `_`) |
|
|
292
|
-
| **`6`** | **Back** | Go back (Same as `Q`, `H`) |
|
|
293
|
-
| **`ESC`** | **Bg Play** | **Exit app but keep music playing** |
|
|
284
|
+
- **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.
|
|
294
285
|
|
|
295
|
-
|
|
286
|
+
### v1.9.5
|
|
296
287
|
|
|
297
|
-
|
|
288
|
+
- **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.
|
|
289
|
+
|
|
290
|
+
### v1.9.4
|
|
291
|
+
|
|
292
|
+
- **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.
|
|
298
293
|
|
|
299
|
-
### v1.9.3
|
|
294
|
+
### v1.9.3
|
|
300
295
|
|
|
301
296
|
- **Hotfix for Startup**: Fixed a syntax error introduced in v1.9.2 that prevented the application from starting.
|
|
302
297
|
|
|
@@ -338,7 +333,7 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
338
333
|
### v1.8.4
|
|
339
334
|
|
|
340
335
|
- **Python Crash Fix (WSL)**: Eliminated premature termination by implementing `start_new_session=True` for browser launches, isolating them from the TUI process group.
|
|
341
|
-
- **Hybrid Browser Strategy**: Switched to the standard `webbrowser` library for F7 (
|
|
336
|
+
- **Hybrid Browser Strategy**: Switched to the standard `webbrowser` library for F7 (Media links) for maximum internal stability.
|
|
342
337
|
- **Global Error Protection**: Wrapped the main application loop in an exception guard to catch and log transient OS errors without crashing the entire app.
|
|
343
338
|
- **Refined Process Cleanup**: Specialized the `pkill` logic to prevent accidental self-termination while maintaining reliable MPV management.
|
|
344
339
|
|
|
@@ -385,7 +380,7 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
385
380
|
### v1.7.5
|
|
386
381
|
|
|
387
382
|
- **WSL Integration**: Fully optimized browser launch from WSL by utilizing `cmd.exe` to trigger native Windows browsers.
|
|
388
|
-
- **F7 Windows Resolve**: Fixed an issue where
|
|
383
|
+
- **F7 Windows Resolve**: Fixed an issue where Media links (F7) wouldn't open in WSL environments.
|
|
389
384
|
- **F8 App Mode (WSL/Win)**: Enhanced flags to ensure "App Mode" (no address bar) works consistently even when launched from WSL.
|
|
390
385
|
|
|
391
386
|
### v1.7.4
|
|
@@ -395,7 +390,7 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
395
390
|
|
|
396
391
|
### v1.7.3
|
|
397
392
|
|
|
398
|
-
- **Windows Fixes**: Resolved issue where F7 (
|
|
393
|
+
- **Windows Fixes**: Resolved issue where F7 (Media) failed to open browsers on Windows by implementing `os.startfile` logic.
|
|
399
394
|
- **F8 Initialization**: Improved Live Station (F8) window sizing on Windows by forcing a clean session state.
|
|
400
395
|
- **Robustness**: Enhanced cross-platform browser redirection logic to ensure consistent behavior.
|
|
401
396
|
|
|
@@ -415,7 +410,6 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
415
410
|
### v1.6.0
|
|
416
411
|
|
|
417
412
|
- **Global Version Synchronization**: Synchronized version 1.6.0 across CLI, README, and Web interface.
|
|
418
|
-
- **Dependency Fix**: Ensured `pusher` dependency is correctly included for real-time features.
|
|
419
413
|
|
|
420
414
|
### v1.5.6
|
|
421
415
|
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
# 🎵 MyTunes Pro
|
|
1
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.0.4
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
터미널 환경에서 **YouTube 음악을 검색하여 듣는** 가볍고 빠른 키보드 중심의 플레이어입니다.
|
|
5
|
-
한국어 입력 환경에서도 **숫자 키(1~5)**를 통해 지연 없는 쾌적한 조작이 가능합니다.
|
|
3
|
+
## 🚀 Terminal-based Media Workflow Experiment v2.0.4
|
|
6
4
|
|
|
7
|
-
>
|
|
8
|
-
>
|
|
9
|
-
>
|
|
10
|
-
>
|
|
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.
|
|
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
|
+
|
|
11
|
+
MyTunes Pro is a developer-focused **CLI Media Tool** for experimenting with terminal-based media workflows.
|
|
12
|
+
It utilizes the Python `curses` library to provide a structured TUI (Terminal User Interface) for handling media URLs,
|
|
13
|
+
leveraging the `mpv` engine for local media processing and playback.
|
|
14
|
+
|
|
15
|
+
> **💡 Project Note**
|
|
16
|
+
> This tool was designed for personal research into how terminal users can interact with media sources without interrupting their developer workflow.
|
|
17
|
+
> It explores the integration between local CLI environments (like Headless Debian Servers) and external media handling utilities.
|
|
11
18
|
|
|
12
19
|

|
|
13
20
|

|
|
@@ -20,27 +27,24 @@
|
|
|
20
27
|
|
|
21
28
|
---
|
|
22
29
|
|
|
23
|
-
## ✨
|
|
30
|
+
## ✨ Core Features
|
|
24
31
|
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- **라이브 (F8)**: 전 세계 유저들과 함께 듣는 **실시간 음악 대시보드** (전용 팝업).
|
|
32
|
-
- **공유 (F9)**: 내가 듣는 곡을 **라이브 스테이션에 즉시 송출**하여 함께 즐깁니다.
|
|
33
|
-
- **비주얼**: 현대적인 심볼 아이콘(⌕, ★, ◷)과 깔끔한 디자인.
|
|
32
|
+
- **Media Handling**: Support for loading and processing media URLs using external extraction tools.
|
|
33
|
+
- **TUI Workflow**: Efficient, low-latency interface built on the `curses` library.
|
|
34
|
+
- **Workflow Persistence**: Handles sequential media loading and state restoration.
|
|
35
|
+
- **Terminal Optimization**: Performance-focused design that prioritizes keyboard-driven interactions.
|
|
36
|
+
- **Smart Management**: Optional user-configured collections, interaction history, and metadata handling.
|
|
37
|
+
- **External Integration**: Capabilities to load media links into external viewer/player environments.
|
|
34
38
|
|
|
35
39
|
---
|
|
36
40
|
|
|
37
|
-
## 💻
|
|
41
|
+
## 💻 Environment & Integration
|
|
38
42
|
|
|
39
|
-
**MyTunes Pro
|
|
43
|
+
**MyTunes Pro** is a CLI-based tool. It can integrate with externally installed media processing tools.
|
|
40
44
|
|
|
41
|
-
- **
|
|
42
|
-
- **Linux**:
|
|
43
|
-
- **Windows**: **WSL(Windows Subsystem for Linux)
|
|
45
|
+
- **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.
|
|
46
|
+
- **macOS/Linux**: Native terminal support.
|
|
47
|
+
- **Windows**: Recommended to use with **WSL (Windows Subsystem for Linux)**.
|
|
44
48
|
|
|
45
49
|
---
|
|
46
50
|
|
|
@@ -161,21 +165,21 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
161
165
|
| **`+`** | **볼륨 UP** | 볼륨 +5% (단축키 `=`와 동일) |
|
|
162
166
|
| **`-`** | **볼륨 DOWN** | 볼륨 -5% (단축키 `_`와 동일) |
|
|
163
167
|
| **`F7`** | **유튜브 열기** | 현재 곡을 브라우저에서 보기 |
|
|
164
|
-
| **`
|
|
165
|
-
| **`
|
|
166
|
-
| **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `H`와 동일) |
|
|
168
|
+
| **`6`** | **뒤로가기** | 이전 화면으로 이동 (단축키 `Q`, `h`와 동일) |
|
|
169
|
+
| **`L`** | **앞으로** | 이전 화면에서 앞화면으로 다시 이동 (`Right Arrow`) |
|
|
167
170
|
| **`ESC`** | **배경재생** | **음악 끄지 않고 나가기** (백그라운드 재생) |
|
|
168
171
|
|
|
169
172
|
### 🧭 기본 탐색
|
|
170
173
|
| 키 | 동작 |
|
|
171
174
|
| :--- | :--- |
|
|
172
175
|
| `↑` / `↓` / `k` / `j` | 리스트 위/아래 이동 (Vim 키 지원) |
|
|
173
|
-
| `Enter` / `l` | **선택 / 재생**
|
|
176
|
+
| `Enter` / `l` | **선택 / 재생** |
|
|
174
177
|
| `Space` | 재생 / 일시정지 (Play/Pause) |
|
|
175
178
|
| `-` / `+` | **볼륨 조절** (- / +) |
|
|
176
179
|
| `,` / `.` | 10초 뒤로 / 앞으로 감기 |
|
|
177
180
|
| `<` / `>` | **30초** 뒤로 / 앞으로 감기 (Shift) |
|
|
178
181
|
| `Backspace` / `h` / `q` | 뒤로 가기 / 검색어 지우기 |
|
|
182
|
+
| `L` | **앞으로 가기** |
|
|
179
183
|
| `/` | **검색** (Vim Style) |
|
|
180
184
|
|
|
181
185
|
---
|
|
@@ -187,97 +191,88 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
187
191
|
---
|
|
188
192
|
---
|
|
189
193
|
|
|
190
|
-
|
|
194
|
+
---
|
|
191
195
|
|
|
192
|
-
|
|
193
|
-
A lightweight, keyboard-centric terminal player for streaming YouTube music.
|
|
196
|
+
# 🎵 MyTunes Pro (Experimental Media Tool - KR)
|
|
194
197
|
|
|
195
|
-
|
|
198
|
+
## 🚀 터미널 기반 미디어 워크플로우 실험 v2.0.3
|
|
199
|
+
|
|
200
|
+
> [!IMPORTANT]
|
|
201
|
+
> **법적 면책 고지:** 본 프로젝트는 개발자 교육 및 연구를 목적으로 하는 개인적, 비상업적 실험입니다.
|
|
202
|
+
> 본 소프트웨어는 어떠한 미디어 콘텐츠도 직접 호스팅하거나 배포하지 않습니다.
|
|
203
|
+
> 모든 미디어 소스는 사용자의 로컬 환경에서 직접 구성되고 접근되며, 사용자는 외부 플랫폼의 이용 약관을 준수할 책임이 있습니다.
|
|
196
204
|
|
|
197
|
-
|
|
205
|
+
MyTunes Pro는 개발자를 위해 설계된 **CLI 미디어 실험 도구**입니다.
|
|
206
|
+
Python `curses` 라이브러리를 통해 터미널 환경에서 미디어 URL을 로드하고 관리하며,
|
|
207
|
+
사용자가 설치한 `mpv` 등의 외부 도구와 연동하여 미디어 워크플로우를 테스트할 수 있습니다.
|
|
198
208
|
|
|
199
|
-
|
|
209
|
+
## ✨ 주요 특징
|
|
200
210
|
|
|
201
|
-
-
|
|
202
|
-
- **
|
|
203
|
-
-
|
|
211
|
+
- **미디어 핸들링**: 외부 추출 도구를 사용한 미디어 URL 로드 및 처리 지원.
|
|
212
|
+
- **TUI 워크플로우**: `curses` 라이브러리 기반의 효율적인 터미널 인터페이스.
|
|
213
|
+
- **작업 유지**: 순차적 미디어 로딩 및 마지막 작업 상태 복원 기능.
|
|
214
|
+
- **환경 연동**: 사용자에 의해 구성된 외부 미디어 도구와의 연동 지원. (본 소프트웨어는 외부 도구를 포함하여 배포하지 않습니다.)
|
|
204
215
|
|
|
205
216
|
---
|
|
206
217
|
|
|
207
|
-
##
|
|
218
|
+
## 🔄 Changelog
|
|
208
219
|
|
|
209
|
-
|
|
220
|
+
### v2.0.4 (2026-02-01)
|
|
221
|
+
- **Legal Polish**: Comprehensive scrubbing of brand identifiers and service-oriented terminology across the ecosystem.
|
|
222
|
+
- **Localization**: Fully localized Korean landing page and technical experiment descriptions.
|
|
223
|
+
- **Educational Focus**: Added explicit project disclaimers to all web footers.
|
|
224
|
+
- **Project Scope**: Solidified positioning as a "Media Handling Experiment" rather than a music player.
|
|
210
225
|
|
|
211
|
-
###
|
|
212
|
-
```bash
|
|
213
|
-
pipx install mytunes-pro
|
|
214
|
-
pipx ensurepath
|
|
215
|
-
source ~/.zshrc # or source ~/.bashrc to apply changes immediately
|
|
216
|
-
```
|
|
226
|
+
### v2.0.3 (Input Handling & Unicode Stability)
|
|
217
227
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
228
|
+
- **Input Logic**: Replaced legacy `getch()` with `get_wch()` in all UI dialogs (`ask_resume`, `show_copy_dialog`) for robust wide-character and Unicode support.
|
|
229
|
+
- **Architecture**: Refactored the input handling system into a modular, command-based architecture (v2.0.3).
|
|
230
|
+
- **Decoupling**: Separated input collection (`get_next_event`), event normalization, and command execution.
|
|
231
|
+
- **Improved ESC Handling**: Enhanced detection of ESC and multi-byte sequences (including Option+Backspace) for smoother navigation.
|
|
222
232
|
|
|
223
|
-
|
|
233
|
+
### v2.0.2 (Stability & Browser Optimization)
|
|
224
234
|
|
|
225
|
-
|
|
235
|
+
- **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.
|
|
236
|
+
- **App Mode Restore**: Fixed and improved Chrome/Brave App Mode (Popup) for the Live Station on macOS.
|
|
237
|
+
- **Improved Remote Detection**: Refined SSH/WSL detection to ensure local browser features are correctly enabled where possible.
|
|
226
238
|
|
|
227
|
-
|
|
239
|
+
### v2.0.1 (Keymap Refinement & Version Sync)
|
|
228
240
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
241
|
+
- **Navigation**: Added browser-style Forward navigation (`L` / `Right Arrow`).
|
|
242
|
+
- **Keybinding Optimization**: Updated History mapping to `R` / `3` and refined Back/Forward logic.
|
|
243
|
+
- **IME Stability**: Removed unstable Korean character mappings (`ㄴ`, `ㄹ`, `ㄱ`, 등) to prevent ghost key issues in the TUI.
|
|
244
|
+
- **Global Synchronization**: Synchronized version v2.0.1 across CLI, TUI, and Web interfaces.
|
|
233
245
|
|
|
234
|
-
###
|
|
235
|
-
```bash
|
|
236
|
-
sudo apt update
|
|
237
|
-
sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
238
|
-
```
|
|
246
|
+
### v1.9.9 (Domain Migration & Realtime Sync)
|
|
239
247
|
|
|
240
|
-
|
|
248
|
+
- **Domain Migration**: Updated all branding and internal links to support `mytunes-pro.com`.
|
|
249
|
+
- **Realtime Stability**: Fixed critical state-management bugs in the live dashboard that caused list clearing and duplicated track entries.
|
|
250
|
+
- **Improved Empty State**: Redesigned the "SIGNAL LOST" screen into a more descriptive "READY TO RECEIVE" interface for better UX.
|
|
241
251
|
|
|
242
|
-
|
|
243
|
-
```powershell
|
|
244
|
-
wsl --install -d Debian
|
|
245
|
-
```
|
|
246
|
-
**Restart your computer** after installation.
|
|
252
|
+
### v1.9.8 (Realtime Stabilization)
|
|
247
253
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
254
|
+
- **UI Refinement**: Implemented in-list "Now Playing" sticky behavior with auto-scroll synchronization for a seamless browsing experience.
|
|
255
|
+
- **Queue System Optimization**: Capped incoming track queue at 200 items with a "200+" notification indicator for high-traffic stability.
|
|
256
|
+
- **Popup UI Consistency**: Unified Live Station popup dimensions to 620x900 across Web and TUI.
|
|
257
|
+
- **Improved Media Playback**: Optimized the media player hook to resolve initialization race conditions and syntax edge cases.
|
|
252
258
|
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
pipx install mytunes-pro
|
|
256
|
-
pipx ensurepath
|
|
257
|
-
source ~/.bashrc
|
|
258
|
-
```
|
|
259
|
+
### v1.9.7 (Analytics)
|
|
259
260
|
|
|
260
|
-
|
|
261
|
+
- **Analytics**: Integrated Google Analytics 4 (GA4) into the landing page and realtime feed to track visitor traffic and usage patterns.
|
|
261
262
|
|
|
262
|
-
|
|
263
|
+
### v1.9.6 (Realtime UX)
|
|
263
264
|
|
|
264
|
-
|
|
265
|
-
| :--- | :--- | :--- |
|
|
266
|
-
| **`1`** | **Search** | Open search bar (Same as `S`) |
|
|
267
|
-
| **`2`** | **Favs** | View favorites list (Same as `F`) |
|
|
268
|
-
| **`3`** | **Hist** | View history (Same as `R`) |
|
|
269
|
-
| **`4`** | **Main** | Go to Main Menu (Same as `M`) |
|
|
270
|
-
| **`5`** | **Add/Del** | Toggle Favorite (Same as `A`) |
|
|
271
|
-
| **`+`** | **Vol Up** | Volume +5% (Same as `=`) |
|
|
272
|
-
| **`-`** | **Vol Down** | Volume -5% (Same as `_`) |
|
|
273
|
-
| **`6`** | **Back** | Go back (Same as `Q`, `H`) |
|
|
274
|
-
| **`ESC`** | **Bg Play** | **Exit app but keep music playing** |
|
|
265
|
+
- **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.
|
|
275
266
|
|
|
276
|
-
|
|
267
|
+
### v1.9.5
|
|
277
268
|
|
|
278
|
-
|
|
269
|
+
- **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.
|
|
270
|
+
|
|
271
|
+
### v1.9.4
|
|
272
|
+
|
|
273
|
+
- **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.
|
|
279
274
|
|
|
280
|
-
### v1.9.3
|
|
275
|
+
### v1.9.3
|
|
281
276
|
|
|
282
277
|
- **Hotfix for Startup**: Fixed a syntax error introduced in v1.9.2 that prevented the application from starting.
|
|
283
278
|
|
|
@@ -319,7 +314,7 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
319
314
|
### v1.8.4
|
|
320
315
|
|
|
321
316
|
- **Python Crash Fix (WSL)**: Eliminated premature termination by implementing `start_new_session=True` for browser launches, isolating them from the TUI process group.
|
|
322
|
-
- **Hybrid Browser Strategy**: Switched to the standard `webbrowser` library for F7 (
|
|
317
|
+
- **Hybrid Browser Strategy**: Switched to the standard `webbrowser` library for F7 (Media links) for maximum internal stability.
|
|
323
318
|
- **Global Error Protection**: Wrapped the main application loop in an exception guard to catch and log transient OS errors without crashing the entire app.
|
|
324
319
|
- **Refined Process Cleanup**: Specialized the `pkill` logic to prevent accidental self-termination while maintaining reliable MPV management.
|
|
325
320
|
|
|
@@ -366,7 +361,7 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
366
361
|
### v1.7.5
|
|
367
362
|
|
|
368
363
|
- **WSL Integration**: Fully optimized browser launch from WSL by utilizing `cmd.exe` to trigger native Windows browsers.
|
|
369
|
-
- **F7 Windows Resolve**: Fixed an issue where
|
|
364
|
+
- **F7 Windows Resolve**: Fixed an issue where Media links (F7) wouldn't open in WSL environments.
|
|
370
365
|
- **F8 App Mode (WSL/Win)**: Enhanced flags to ensure "App Mode" (no address bar) works consistently even when launched from WSL.
|
|
371
366
|
|
|
372
367
|
### v1.7.4
|
|
@@ -376,7 +371,7 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
376
371
|
|
|
377
372
|
### v1.7.3
|
|
378
373
|
|
|
379
|
-
- **Windows Fixes**: Resolved issue where F7 (
|
|
374
|
+
- **Windows Fixes**: Resolved issue where F7 (Media) failed to open browsers on Windows by implementing `os.startfile` logic.
|
|
380
375
|
- **F8 Initialization**: Improved Live Station (F8) window sizing on Windows by forcing a clean session state.
|
|
381
376
|
- **Robustness**: Enhanced cross-platform browser redirection logic to ensure consistent behavior.
|
|
382
377
|
|
|
@@ -396,7 +391,6 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
396
391
|
### v1.6.0
|
|
397
392
|
|
|
398
393
|
- **Global Version Synchronization**: Synchronized version 1.6.0 across CLI, README, and Web interface.
|
|
399
|
-
- **Dependency Fix**: Ensured `pusher` dependency is correctly included for real-time features.
|
|
400
394
|
|
|
401
395
|
### v1.5.6
|
|
402
396
|
|