mytunes-pro 1.7.4__py3-none-any.whl → 1.7.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 +47 -8
- {mytunes_pro-1.7.4.dist-info → mytunes_pro-1.7.6.dist-info}/METADATA +15 -4
- mytunes_pro-1.7.6.dist-info/RECORD +8 -0
- mytunes_pro-1.7.4.dist-info/RECORD +0 -8
- {mytunes_pro-1.7.4.dist-info → mytunes_pro-1.7.6.dist-info}/WHEEL +0 -0
- {mytunes_pro-1.7.4.dist-info → mytunes_pro-1.7.6.dist-info}/entry_points.txt +0 -0
- {mytunes_pro-1.7.4.dist-info → mytunes_pro-1.7.6.dist-info}/licenses/LICENSE +0 -0
- {mytunes_pro-1.7.4.dist-info → mytunes_pro-1.7.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.7.
|
|
38
|
+
APP_VERSION = "1.7.6"
|
|
39
39
|
|
|
40
40
|
# === [Strings & Localization] ===
|
|
41
41
|
STRINGS = {
|
|
@@ -749,6 +749,9 @@ class MyTunesApp:
|
|
|
749
749
|
subprocess.Popen(["open", url], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
750
750
|
elif sys.platform == 'win32':
|
|
751
751
|
os.startfile(url)
|
|
752
|
+
elif self.is_wsl():
|
|
753
|
+
# In WSL, call the Windows shell to open the URL in Windows browser
|
|
754
|
+
subprocess.Popen(["cmd.exe", "/c", "start", url.replace("&", "^&")], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
752
755
|
else:
|
|
753
756
|
webbrowser.open(url)
|
|
754
757
|
self.status_msg = "🌐 Opening YouTube in Browser..."
|
|
@@ -796,7 +799,7 @@ class MyTunesApp:
|
|
|
796
799
|
launched = True; break
|
|
797
800
|
except: pass
|
|
798
801
|
|
|
799
|
-
# 2. Windows
|
|
802
|
+
# 2. Windows Native
|
|
800
803
|
elif sys.platform == 'win32':
|
|
801
804
|
win_paths = [
|
|
802
805
|
os.path.join(os.environ.get('PROGRAMFILES', 'C:\\Program Files'), 'Google\\Chrome\\Application\\chrome.exe'),
|
|
@@ -807,7 +810,7 @@ class MyTunesApp:
|
|
|
807
810
|
os.path.join(os.environ.get('PROGRAMFILES', 'C:\\Program Files'), 'Microsoft\\Edge\\Application\\msedge.exe'),
|
|
808
811
|
]
|
|
809
812
|
# Windows specific order: --app MUST be early for some Chrome versions to ignore toolbars
|
|
810
|
-
win_flags = flags + ["--new-window"]
|
|
813
|
+
win_flags = flags + ["--new-window"]
|
|
811
814
|
for p in win_paths:
|
|
812
815
|
if os.path.exists(p):
|
|
813
816
|
try:
|
|
@@ -816,7 +819,38 @@ class MyTunesApp:
|
|
|
816
819
|
launched = True; break
|
|
817
820
|
except: pass
|
|
818
821
|
|
|
819
|
-
# 3.
|
|
822
|
+
# 3. WSL (Run Windows Chrome via cmd.exe)
|
|
823
|
+
elif self.is_wsl():
|
|
824
|
+
try:
|
|
825
|
+
# Get Windows TEMP path to use for isolated profile
|
|
826
|
+
win_temp = subprocess.check_output(["cmd.exe", "/c", "echo %TEMP%"], text=True).strip()
|
|
827
|
+
# Ensure path is Windows-style and has our unique folder
|
|
828
|
+
w_profile = os.path.join(win_temp, f"mytunes_v176_{int(time.time() / 10)}")
|
|
829
|
+
|
|
830
|
+
# Construct wsl_flags: order matters, --app and --window-size first
|
|
831
|
+
# Using double quotes for Windows and carefully escaping for cmd.exe
|
|
832
|
+
wsl_args = [
|
|
833
|
+
f'--app="{live_url}"',
|
|
834
|
+
'--window-size=712,800',
|
|
835
|
+
'--window-position=100,100',
|
|
836
|
+
f'--user-data-dir="{w_profile}"',
|
|
837
|
+
'--new-window',
|
|
838
|
+
'--no-first-run',
|
|
839
|
+
'--disable-extensions'
|
|
840
|
+
]
|
|
841
|
+
|
|
842
|
+
# Use cmd.exe /c start chrome ...
|
|
843
|
+
cmd = f"start chrome {' '.join(wsl_args)}"
|
|
844
|
+
subprocess.Popen(["cmd.exe", "/c", cmd], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
845
|
+
launched = True
|
|
846
|
+
except:
|
|
847
|
+
# Fallback to general start if chrome command or temp resolution fails
|
|
848
|
+
try:
|
|
849
|
+
subprocess.Popen(["cmd.exe", "/c", "start", live_url], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
850
|
+
launched = True
|
|
851
|
+
except: pass
|
|
852
|
+
|
|
853
|
+
# 4. Native Linux
|
|
820
854
|
else:
|
|
821
855
|
for b in ['google-chrome', 'google-chrome-stable', 'brave-browser', 'chromium-browser', 'chromium']:
|
|
822
856
|
p = shutil.which(b)
|
|
@@ -890,11 +924,16 @@ class MyTunesApp:
|
|
|
890
924
|
return res
|
|
891
925
|
|
|
892
926
|
def is_remote(self):
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
927
|
+
return 'SSH_CONNECTION' in os.environ or 'SSH_CLIENT' in os.environ
|
|
928
|
+
|
|
929
|
+
def is_wsl(self):
|
|
930
|
+
try:
|
|
931
|
+
if sys.platform != 'linux': return False
|
|
932
|
+
if os.path.exists('/proc/version'):
|
|
933
|
+
with open('/proc/version', 'r') as f:
|
|
934
|
+
return 'microsoft' in f.read().lower()
|
|
896
935
|
return False
|
|
897
|
-
return
|
|
936
|
+
except: return False
|
|
898
937
|
|
|
899
938
|
def show_copy_dialog(self, title, url):
|
|
900
939
|
"""Show a dialog with the URL for manual copying in remote sessions."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mytunes-pro
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.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.7.
|
|
22
|
+
**현대적인 CLI 유튜브 뮤직 플레이어 (v1.7.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.7.
|
|
211
|
+
**Modern CLI YouTube Music Player (v1.7.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.7.
|
|
299
|
+
### v1.7.6 (Latest)
|
|
300
|
+
|
|
301
|
+
- **Isolated Browser Profile**: Guaranteed window sizing for the Live Station (F8) on Windows/WSL by forcing an isolated browser profile using the Windows `%TEMP%` directory.
|
|
302
|
+
- **WSL Path Translation**: Implemented automatic Windows temp path resolution in WSL to enable session persistence and profile isolation.
|
|
303
|
+
|
|
304
|
+
### v1.7.5
|
|
305
|
+
|
|
306
|
+
- **WSL Integration**: Fully optimized browser launch from WSL by utilizing `cmd.exe` to trigger native Windows browsers.
|
|
307
|
+
- **F7 Windows Resolve**: Fixed an issue where YouTube (F7) wouldn't open in WSL environments.
|
|
308
|
+
- **F8 App Mode (WSL/Win)**: Enhanced flags to ensure "App Mode" (no address bar) works consistently even when launched from WSL.
|
|
309
|
+
|
|
310
|
+
### v1.7.4
|
|
300
311
|
|
|
301
312
|
- **Windows UI Refinement**: Forced Chrome "App Mode" on Windows by reordering flags and disabling extensions/default-apps to ensure a clean popup without an address bar.
|
|
302
313
|
- **Improved Isolation**: Switched to higher-frequency session rotation for Live Station (F8) to guarantee window size and position persistence fixes.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
mytunes/app.py,sha256=jIQgDrgIkpNa3f8tGUTuzHrwx44xP9no7cicYwd0fAg,61059
|
|
3
|
+
mytunes_pro-1.7.6.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
|
|
4
|
+
mytunes_pro-1.7.6.dist-info/METADATA,sha256=7hKtKlrsJUuFTgGjNOEASiZ-_FQ9nO9Eo6MTPZzgNO8,13869
|
|
5
|
+
mytunes_pro-1.7.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
6
|
+
mytunes_pro-1.7.6.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
|
|
7
|
+
mytunes_pro-1.7.6.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
|
|
8
|
+
mytunes_pro-1.7.6.dist-info/RECORD,,
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
mytunes/app.py,sha256=M4T5w2bgGBdXeFZ1_I7eeFU6x2fKfv9Uc3Qu4mPqPXo,59066
|
|
3
|
-
mytunes_pro-1.7.4.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
|
|
4
|
-
mytunes_pro-1.7.4.dist-info/METADATA,sha256=7ZlJggjGWq_bmtmQo_mQkp8yxzex4AncAmEBWA__9lg,13182
|
|
5
|
-
mytunes_pro-1.7.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
6
|
-
mytunes_pro-1.7.4.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
|
|
7
|
-
mytunes_pro-1.7.4.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
|
|
8
|
-
mytunes_pro-1.7.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|