mytunes-pro 1.8.4__py3-none-any.whl → 1.8.6__py3-none-any.whl
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/app.py +29 -7
- {mytunes_pro-1.8.4.dist-info → mytunes_pro-1.8.6.dist-info}/METADATA +15 -4
- mytunes_pro-1.8.6.dist-info/RECORD +8 -0
- mytunes_pro-1.8.4.dist-info/RECORD +0 -8
- {mytunes_pro-1.8.4.dist-info → mytunes_pro-1.8.6.dist-info}/WHEEL +0 -0
- {mytunes_pro-1.8.4.dist-info → mytunes_pro-1.8.6.dist-info}/entry_points.txt +0 -0
- {mytunes_pro-1.8.4.dist-info → mytunes_pro-1.8.6.dist-info}/licenses/LICENSE +0 -0
- {mytunes_pro-1.8.4.dist-info → mytunes_pro-1.8.6.dist-info}/top_level.txt +0 -0
mytunes/app.py
CHANGED
|
@@ -35,7 +35,7 @@ MPV_SOCKET = "/tmp/mpv_socket"
|
|
|
35
35
|
LOG_FILE = "/tmp/mytunes_mpv.log"
|
|
36
36
|
PID_FILE = "/tmp/mytunes_mpv.pid"
|
|
37
37
|
APP_NAME = "MyTunes Pro"
|
|
38
|
-
APP_VERSION = "1.8.
|
|
38
|
+
APP_VERSION = "1.8.6"
|
|
39
39
|
|
|
40
40
|
# === [Strings & Localization] ===
|
|
41
41
|
STRINGS = {
|
|
@@ -620,14 +620,24 @@ class MyTunesApp:
|
|
|
620
620
|
if self.selection_idx > 0:
|
|
621
621
|
self.selection_idx -= 1
|
|
622
622
|
if self.selection_idx < self.scroll_offset: self.scroll_offset = self.selection_idx
|
|
623
|
+
elif current_list:
|
|
624
|
+
# v1.8.5 - Wrapping: Top to Bottom
|
|
625
|
+
self.selection_idx = len(current_list) - 1
|
|
626
|
+
h, _ = self.stdscr.getmaxyx()
|
|
627
|
+
# Maintain scroll consistency (h - 10 matches draw() layout)
|
|
628
|
+
list_area_height = h - 10
|
|
629
|
+
self.scroll_offset = max(0, self.selection_idx - list_area_height + 1)
|
|
623
630
|
elif key == curses.KEY_DOWN or k_char in ['j', 'ㅓ']:
|
|
624
631
|
if self.selection_idx < len(current_list) - 1:
|
|
625
632
|
self.selection_idx += 1
|
|
626
633
|
h, _ = self.stdscr.getmaxyx()
|
|
627
|
-
# Use h - 10 to match inner_h in draw() (h - footer_h(5) - header_top(3) - borders(2))
|
|
628
634
|
list_area_height = h - 10
|
|
629
635
|
if self.selection_idx >= self.scroll_offset + list_area_height:
|
|
630
636
|
self.scroll_offset = self.selection_idx - list_area_height + 1
|
|
637
|
+
elif current_list:
|
|
638
|
+
# v1.8.5 - Wrapping: Bottom to Top
|
|
639
|
+
self.selection_idx = 0
|
|
640
|
+
self.scroll_offset = 0
|
|
631
641
|
|
|
632
642
|
# Enter / Select: Enter Only (L moved to Forward)
|
|
633
643
|
elif key == '\n' or key == 10 or key == 13:
|
|
@@ -748,20 +758,31 @@ class MyTunesApp:
|
|
|
748
758
|
self.status_msg = "🌐 Opening YouTube in Browser..."
|
|
749
759
|
threading.Thread(target=webbrowser.open, args=(url,), daemon=True).start()
|
|
750
760
|
|
|
751
|
-
# Open Live Station:
|
|
761
|
+
# Open Live Station (F8): App Mode with Optimized Flags (v1.8.6)
|
|
752
762
|
elif key == curses.KEY_F8:
|
|
753
763
|
live_url = "https://mytunes.postgresql.co.kr/live/"
|
|
754
764
|
if self.is_remote():
|
|
755
765
|
self.show_copy_dialog("Live Station", live_url)
|
|
756
766
|
return
|
|
757
767
|
|
|
758
|
-
#
|
|
768
|
+
# v1.8.6 - Force window size/position by isolating profile
|
|
769
|
+
temp_user_data = os.path.join(tempfile.gettempdir(), f"mytunes_v186_{int(time.time() / 10)}")
|
|
770
|
+
|
|
771
|
+
# Optimized Flag Set (Context7 Research)
|
|
759
772
|
flags = [
|
|
760
773
|
f"--app={live_url}",
|
|
761
774
|
"--window-size=712,800",
|
|
762
775
|
"--window-position=100,100",
|
|
763
|
-
"--
|
|
776
|
+
f"--user-data-dir={temp_user_data}",
|
|
764
777
|
"--no-first-run",
|
|
778
|
+
"--no-default-browser-check",
|
|
779
|
+
"--disable-default-apps",
|
|
780
|
+
"--disable-infobars",
|
|
781
|
+
"--disable-translate",
|
|
782
|
+
"--disable-features=Translation",
|
|
783
|
+
"--disable-save-password-bubble",
|
|
784
|
+
"--autoplay-policy=no-user-gesture-required",
|
|
785
|
+
"--new-window",
|
|
765
786
|
"--disable-extensions"
|
|
766
787
|
]
|
|
767
788
|
|
|
@@ -773,6 +794,7 @@ class MyTunesApp:
|
|
|
773
794
|
for b_path in browsers:
|
|
774
795
|
if os.path.exists(b_path):
|
|
775
796
|
try:
|
|
797
|
+
# Use -na to open a fresh instance
|
|
776
798
|
subprocess.Popen(["open", "-na", b_path, "--args"] + flags, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
777
799
|
launched = True; break
|
|
778
800
|
except: pass
|
|
@@ -809,8 +831,8 @@ class MyTunesApp:
|
|
|
809
831
|
|
|
810
832
|
if not launched:
|
|
811
833
|
try:
|
|
812
|
-
# Fallback for WSL to CMD
|
|
813
|
-
subprocess.Popen(["cmd.exe", "/c", f"start chrome --app={live_url}"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, start_new_session=True)
|
|
834
|
+
# Fallback for WSL to CMD (Keep flags for consistency)
|
|
835
|
+
subprocess.Popen(["cmd.exe", "/c", f"start chrome --app={live_url} --user-data-dir={temp_user_data}"], stdout=subprocess.DEVNULL, stderr=stderr=subprocess.DEVNULL, start_new_session=True)
|
|
814
836
|
launched = True
|
|
815
837
|
except: pass
|
|
816
838
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mytunes-pro
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.6
|
|
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
|
|
@@ -19,7 +19,7 @@ Dynamic: license-file
|
|
|
19
19
|
|
|
20
20
|
# 🎵 MyTunes Pro (Korean)
|
|
21
21
|
|
|
22
|
-
**현대적인 CLI 유튜브 뮤직 플레이어 (v1.8.
|
|
22
|
+
**현대적인 CLI 유튜브 뮤직 플레이어 (v1.8.6)**
|
|
23
23
|
터미널 환경에서 **YouTube 음악을 검색하여 듣는** 가볍고 빠른 키보드 중심의 플레이어입니다.
|
|
24
24
|
한국어 입력 환경에서도 **숫자 키(1~5)**를 통해 지연 없는 쾌적한 조작이 가능합니다.
|
|
25
25
|
|
|
@@ -208,7 +208,7 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
|
|
|
208
208
|
|
|
209
209
|
# 🎵 MyTunes Pro (English)
|
|
210
210
|
|
|
211
|
-
**Modern CLI YouTube Music Player (v1.8.
|
|
211
|
+
**Modern CLI YouTube Music Player (v1.8.6)**
|
|
212
212
|
A lightweight, keyboard-centric terminal player for streaming YouTube music.
|
|
213
213
|
|
|
214
214
|
---
|
|
@@ -296,7 +296,18 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
|
|
|
296
296
|
|
|
297
297
|
## 🔄 Changelog
|
|
298
298
|
|
|
299
|
-
### v1.8.
|
|
299
|
+
### v1.8.6 (Latest)
|
|
300
|
+
|
|
301
|
+
- **Browser Popup Optimization (Context7)**: Improved Live Station (F8) experience with optimized CLI flags for a perfectly minimalist UI.
|
|
302
|
+
- **Forced Window Dimensions**: Implemented profile isolation using a timestamped `user-data-dir` to ensure window size and position are always respected, overriding session memory.
|
|
303
|
+
- **UI Cleanup**: Automatically hides distraction-bars (translation, password, automation infobars) and enables instant autoplay for live streams.
|
|
304
|
+
|
|
305
|
+
### v1.8.5
|
|
306
|
+
|
|
307
|
+
- **Looping Navigation (Menu Wrapping)**: Pressing UP at the first item now wraps to the last item, and pressing DOWN at the last item wraps to the first.
|
|
308
|
+
- **Improved UI Flow**: Enhanced keyboard navigation experience across all list views (Main, Search, Favorites, History).
|
|
309
|
+
|
|
310
|
+
### v1.8.4
|
|
300
311
|
|
|
301
312
|
- **Python Crash Fix (WSL)**: Eliminated premature termination by implementing `start_new_session=True` for browser launches, isolating them from the TUI process group.
|
|
302
313
|
- **Hybrid Browser Strategy**: Switched to the standard `webbrowser` library for F7 (YouTube links) for maximum internal stability.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
mytunes/app.py,sha256=5NRxvGHOvWkC6WdTjcFN6MhrpVtbzT65rY0-6KpfQkU,60403
|
|
3
|
+
mytunes_pro-1.8.6.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
|
|
4
|
+
mytunes_pro-1.8.6.dist-info/METADATA,sha256=iFUQpeb8kCzba2pM4w7612r0gAg9gNEbZAXdMRplSXs,18042
|
|
5
|
+
mytunes_pro-1.8.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
6
|
+
mytunes_pro-1.8.6.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
|
|
7
|
+
mytunes_pro-1.8.6.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
|
|
8
|
+
mytunes_pro-1.8.6.dist-info/RECORD,,
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
mytunes/app.py,sha256=l9KMZxjy_BvLGI9Pphk5E1QYBMFWQ2ICWijCjWYM3ks,59186
|
|
3
|
-
mytunes_pro-1.8.4.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
|
|
4
|
-
mytunes_pro-1.8.4.dist-info/METADATA,sha256=tHjXf9El5TQnO2Ty-uq-ARJB2Yya4sR4puj5QAWIL_8,17271
|
|
5
|
-
mytunes_pro-1.8.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
6
|
-
mytunes_pro-1.8.4.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
|
|
7
|
-
mytunes_pro-1.8.4.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
|
|
8
|
-
mytunes_pro-1.8.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|