mytunes-pro 2.1.1__tar.gz → 2.1.3__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.1.1/src/mytunes_pro.egg-info → mytunes_pro-2.1.3}/PKG-INFO +11 -3
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/README.md +10 -2
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/pyproject.toml +1 -1
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/src/mytunes/app.py +16 -15
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3/src/mytunes_pro.egg-info}/PKG-INFO +11 -3
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/LICENSE +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/setup.cfg +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/src/mytunes/__init__.py +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/src/mytunes_pro.egg-info/SOURCES.txt +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/src/mytunes_pro.egg-info/dependency_links.txt +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/src/mytunes_pro.egg-info/entry_points.txt +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/src/mytunes_pro.egg-info/requires.txt +0 -0
- {mytunes_pro-2.1.1 → mytunes_pro-2.1.3}/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.1.
|
|
3
|
+
Version: 2.1.3
|
|
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,9 +18,9 @@ Requires-Dist: yt-dlp
|
|
|
18
18
|
Requires-Dist: pusher
|
|
19
19
|
Dynamic: license-file
|
|
20
20
|
|
|
21
|
-
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.
|
|
21
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.3
|
|
22
22
|
|
|
23
|
-
## 🚀 Terminal-based Media Workflow Experiment v2.1.
|
|
23
|
+
## 🚀 Terminal-based Media Workflow Experiment v2.1.3
|
|
24
24
|
|
|
25
25
|
> [!IMPORTANT]
|
|
26
26
|
> **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
|
|
@@ -390,6 +390,14 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
390
390
|
|
|
391
391
|
## 🔄 Changelog
|
|
392
392
|
|
|
393
|
+
### v2.1.3 (2026-02-02)
|
|
394
|
+
- **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.
|
|
395
|
+
- **Fixed EQ Application**: Restored correct Auto EQ initialization during `play_music` in `app.py`.
|
|
396
|
+
|
|
397
|
+
### v2.1.2 (2026-02-02)
|
|
398
|
+
- **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.
|
|
399
|
+
- **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.
|
|
400
|
+
|
|
393
401
|
### v2.1.1 (2026-02-02)
|
|
394
402
|
- **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.
|
|
395
403
|
- **Improved Feedback**: Provides a clear status message when the 'E' key is pressed on WSL.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.
|
|
1
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.3
|
|
2
2
|
|
|
3
|
-
## 🚀 Terminal-based Media Workflow Experiment v2.1.
|
|
3
|
+
## 🚀 Terminal-based Media Workflow Experiment v2.1.3
|
|
4
4
|
|
|
5
5
|
> [!IMPORTANT]
|
|
6
6
|
> **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
|
|
@@ -370,6 +370,14 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
370
370
|
|
|
371
371
|
## 🔄 Changelog
|
|
372
372
|
|
|
373
|
+
### v2.1.3 (2026-02-02)
|
|
374
|
+
- **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.
|
|
375
|
+
- **Fixed EQ Application**: Restored correct Auto EQ initialization during `play_music` in `app.py`.
|
|
376
|
+
|
|
377
|
+
### v2.1.2 (2026-02-02)
|
|
378
|
+
- **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.
|
|
379
|
+
- **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.
|
|
380
|
+
|
|
373
381
|
### v2.1.1 (2026-02-02)
|
|
374
382
|
- **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.
|
|
375
383
|
- **Improved Feedback**: Provides a clear status message when the 'E' key is pressed on WSL.
|
|
@@ -44,7 +44,7 @@ MPV_SOCKET = "/tmp/mpv_socket"
|
|
|
44
44
|
LOG_FILE = "/tmp/mytunes_mpv.log"
|
|
45
45
|
PID_FILE = "/tmp/mytunes_mpv.pid"
|
|
46
46
|
APP_NAME = "MyTunes Pro"
|
|
47
|
-
APP_VERSION = "2.1.
|
|
47
|
+
APP_VERSION = "2.1.3"
|
|
48
48
|
|
|
49
49
|
# Initial Locale Setup for WSL/Windows Multibyte/Emoji Harmony
|
|
50
50
|
try:
|
|
@@ -461,7 +461,9 @@ class Player:
|
|
|
461
461
|
# 3. Pre-check: Skip if socket file doesn't exist (e.g. killed elsewhere)
|
|
462
462
|
if not os.path.exists(MPV_SOCKET):
|
|
463
463
|
self.socket_fail_count += 1
|
|
464
|
-
|
|
464
|
+
# Be more patient during loading (mpv takes time to create socket)
|
|
465
|
+
threshold = 15 if self.loading else 2
|
|
466
|
+
if self.socket_fail_count >= threshold:
|
|
465
467
|
self.socket_ok = False
|
|
466
468
|
self.socket_retry_ts = now + 1.5 # 1.5s cool-down
|
|
467
469
|
return None
|
|
@@ -488,7 +490,8 @@ class Player:
|
|
|
488
490
|
return json.loads(response.decode('utf-8'))
|
|
489
491
|
except:
|
|
490
492
|
self.socket_fail_count += 1
|
|
491
|
-
if self.
|
|
493
|
+
threshold = 15 if self.loading else 2
|
|
494
|
+
if self.socket_fail_count >= threshold:
|
|
492
495
|
self.socket_ok = False
|
|
493
496
|
self.socket_retry_ts = now + 1.5 # 1.5s cool-down
|
|
494
497
|
return None
|
|
@@ -678,7 +681,15 @@ class MyTunesApp:
|
|
|
678
681
|
def update_playback_state(self):
|
|
679
682
|
# Poll MPV for state with throttling to reduce CPU/IPC overhead
|
|
680
683
|
try:
|
|
681
|
-
#
|
|
684
|
+
# A. Safety: If loading takes too long (> 8s), force reset to allow error handling/skip
|
|
685
|
+
# Must check this even if socket_ok is False!
|
|
686
|
+
now = time.time()
|
|
687
|
+
if self.player.loading and (now - self.player.loading_ts > 8):
|
|
688
|
+
self.player.loading = False
|
|
689
|
+
self.player.socket_ok = True # Reset health to try again
|
|
690
|
+
self.show_feedback("⚠️ Load timed out. Skipping...")
|
|
691
|
+
|
|
692
|
+
# B. Health Check: If socket is known-bad, exit immediately to keep TUI responsive
|
|
682
693
|
if not self.player.socket_ok:
|
|
683
694
|
return
|
|
684
695
|
|
|
@@ -700,12 +711,6 @@ class MyTunesApp:
|
|
|
700
711
|
self.dm.set_progress(self.current_track['url'], self.playback_time)
|
|
701
712
|
|
|
702
713
|
|
|
703
|
-
# Safety: If loading takes too long (> 8s), force reset to allow error handling/skip
|
|
704
|
-
now = time.time()
|
|
705
|
-
if self.player.loading and (now - self.player.loading_ts > 8):
|
|
706
|
-
self.player.loading = False
|
|
707
|
-
self.show_feedback("⚠️ Load timed out. Skipping...")
|
|
708
|
-
|
|
709
714
|
# 2. Frequent: Pause state (Every 2 loops ~400ms)
|
|
710
715
|
if self.loop_count % 2 == 0:
|
|
711
716
|
p = self.player.get_property("pause")
|
|
@@ -1201,7 +1206,7 @@ class MyTunesApp:
|
|
|
1201
1206
|
else:
|
|
1202
1207
|
start_pos = 0
|
|
1203
1208
|
|
|
1204
|
-
self.player.play(item['url'], start_pos)
|
|
1209
|
+
self.player.play(item['url'], start_pos, initial_eq_preset=target_eq_preset)
|
|
1205
1210
|
|
|
1206
1211
|
# Re-apply EQ logic (double check: mpv restart wipes af property?)
|
|
1207
1212
|
# Yes, play() might restart mpv if socket fails.
|
|
@@ -1221,10 +1226,6 @@ class MyTunesApp:
|
|
|
1221
1226
|
self.playback_time = start_pos
|
|
1222
1227
|
self.playback_duration = 0
|
|
1223
1228
|
self.is_paused = False
|
|
1224
|
-
self.stdscr.nodelay(False) # Blocking input for dialog
|
|
1225
|
-
h, w = self.stdscr.getmaxyx()
|
|
1226
|
-
box_h, box_w = 8, 60
|
|
1227
|
-
box_y, box_x = (h - box_h) // 2, (w - box_w) // 2
|
|
1228
1229
|
|
|
1229
1230
|
def ask_resume(self, saved_time, track_title):
|
|
1230
1231
|
self.stdscr.nodelay(False) # Blocking input for dialog
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mytunes-pro
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
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,9 +18,9 @@ Requires-Dist: yt-dlp
|
|
|
18
18
|
Requires-Dist: pusher
|
|
19
19
|
Dynamic: license-file
|
|
20
20
|
|
|
21
|
-
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.
|
|
21
|
+
# 🎵 MyTunes Pro - Professional TUI Edition v2.1.3
|
|
22
22
|
|
|
23
|
-
## 🚀 Terminal-based Media Workflow Experiment v2.1.
|
|
23
|
+
## 🚀 Terminal-based Media Workflow Experiment v2.1.3
|
|
24
24
|
|
|
25
25
|
> [!IMPORTANT]
|
|
26
26
|
> **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
|
|
@@ -390,6 +390,14 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
390
390
|
|
|
391
391
|
## 🔄 Changelog
|
|
392
392
|
|
|
393
|
+
### v2.1.3 (2026-02-02)
|
|
394
|
+
- **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.
|
|
395
|
+
- **Fixed EQ Application**: Restored correct Auto EQ initialization during `play_music` in `app.py`.
|
|
396
|
+
|
|
397
|
+
### v2.1.2 (2026-02-02)
|
|
398
|
+
- **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.
|
|
399
|
+
- **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.
|
|
400
|
+
|
|
393
401
|
### v2.1.1 (2026-02-02)
|
|
394
402
|
- **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.
|
|
395
403
|
- **Improved Feedback**: Provides a clear status message when the 'E' key is pressed on WSL.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|