mytunes-pro 1.8.1__py3-none-any.whl → 1.8.3__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 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.1"
38
+ APP_VERSION = "1.8.3"
39
39
 
40
40
  # === [Strings & Localization] ===
41
41
  STRINGS = {
@@ -809,7 +809,7 @@ class MyTunesApp:
809
809
  os.path.join(os.environ.get('PROGRAMFILES(X86)', 'C:\\Program Files (x86)'), 'Microsoft\\Edge\\Application\\msedge.exe'),
810
810
  os.path.join(os.environ.get('PROGRAMFILES', 'C:\\Program Files'), 'Microsoft\\Edge\\Application\\msedge.exe'),
811
811
  ]
812
- # v1.8.1 - Precise: No internal quotes around URL to avoid misparsing as literal parts of URI
812
+ # v1.8.2 - Maximum precision: --app flag MUST be exact and first for reliable popup mode
813
813
  win_flags = [
814
814
  f'--app={live_url}',
815
815
  '--window-size=712,800',
@@ -826,31 +826,47 @@ class MyTunesApp:
826
826
  launched = True; break
827
827
  except: pass
828
828
 
829
- # 3. WSL (Run Windows Chrome via cmd.exe)
829
+ # 3. WSL (Run Windows Chrome directly if possible, fallback to cmd.exe)
830
830
  elif self.is_wsl():
831
- try:
832
- # v1.8.1 - Pure and Precise for WSL->CMD
833
- # 1. No internal quotes for the URL (prevents "Empty URL" / navigation failure)
834
- # 2. Use start "" chrome (Prevents 'start' from hijacking the first flag as a title)
835
- # 3. Combined flags for maximum compatibility
836
- c_args = [
837
- f'--app={live_url}',
838
- '--window-size=712,800',
839
- '--window-position=100,100',
840
- '--new-window',
841
- '--no-first-run',
842
- '--disable-extensions'
843
- ]
844
- # Direct call to chrome via cmd start
845
- full_cmd = f'start "" chrome {" ".join(c_args)}'
846
- subprocess.Popen(["cmd.exe", "/c", full_cmd], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
847
- launched = True
848
- except:
849
- # Fallback to general start
831
+ # v1.8.3 - Direct binary execution for maximum precision (Avoids cmd.exe shell splitting)
832
+ # We try standard Windows installation paths via /mnt/c/
833
+ wsl_win_paths = [
834
+ "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe",
835
+ "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",
836
+ "/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe",
837
+ "/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",
838
+ "/mnt/c/Program Files/Microsoft/Edge/Application/msedge.exe",
839
+ ]
840
+ # Same precise flags for App Mode
841
+ wsl_win_flags = [
842
+ f'--app={live_url}',
843
+ '--window-size=712,800',
844
+ '--window-position=100,100',
845
+ '--new-window',
846
+ '--no-first-run',
847
+ '--disable-extensions'
848
+ ]
849
+
850
+ launched_direct = False
851
+ for p in wsl_win_paths:
852
+ if os.path.exists(p):
853
+ try:
854
+ # Direct execution from WSL to Windows binary is extremely stable
855
+ subprocess.Popen([p] + wsl_win_flags, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
856
+ launched = True; launched_direct = True; break
857
+ except: pass
858
+
859
+ if not launched_direct:
850
860
  try:
851
- subprocess.Popen(["cmd.exe", "/c", "start", live_url], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
861
+ # Final fallback: cmd.exe start (Literal strings, no title)
862
+ cmd_fallback = f'start chrome --app={live_url} --window-size=712,800 --new-window'
863
+ subprocess.Popen(["cmd.exe", "/c", cmd_fallback], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
852
864
  launched = True
853
- except: pass
865
+ except:
866
+ try:
867
+ subprocess.Popen(["cmd.exe", "/c", "start", live_url], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
868
+ launched = True
869
+ except: pass
854
870
 
855
871
  # 4. Native Linux
856
872
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mytunes-pro
3
- Version: 1.8.1
3
+ Version: 1.8.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
@@ -19,7 +19,7 @@ Dynamic: license-file
19
19
 
20
20
  # 🎵 MyTunes Pro (Korean)
21
21
 
22
- **현대적인 CLI 유튜브 뮤직 플레이어 (v1.8.1)**
22
+ **현대적인 CLI 유튜브 뮤직 플레이어 (v1.8.3)**
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.1)**
211
+ **Modern CLI YouTube Music Player (v1.8.3)**
212
212
  A lightweight, keyboard-centric terminal player for streaming YouTube music.
213
213
 
214
214
  ---
@@ -296,7 +296,13 @@ sudo apt install mpv python3 python3-pip pipx python3-venv -y
296
296
 
297
297
  ## 🔄 Changelog
298
298
 
299
- ### v1.8.1 (Latest)
299
+ ### v1.8.3 (Latest)
300
+
301
+ - **Direct Binary Execution (WSL)**: Resolved shell parsing issues by bypassing `cmd.exe` and directly executing Windows browser binaries via `/mnt/c/` paths.
302
+ - **App Mode Reliability**: Guaranteed 712x800 popup mode by ensuring flags are delivered directly to the browser process without intermediate shell mangling.
303
+ - **Fixed URL Resolution**: Eliminated the "Empty URL" bug by standardizing argument passing between WSL and Windows.
304
+
305
+ ### v1.8.1
300
306
 
301
307
  - **Fixed App Mode (WSL/Win)**: Guaranteed the browser opens in a clean "App Mode" popup by fixing shell quoting issues in the launch command.
302
308
  - **URL Resolution Fix**: Resolved the "Empty URL" bug on WSL/Windows by ensuring the `--app` flag is correctly parsed by the native Windows shell.
@@ -0,0 +1,8 @@
1
+ mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ mytunes/app.py,sha256=-bEfxmLNP_nSrvdoZNw3WQTgtlkn5dwUON7XgG_7ufw,61946
3
+ mytunes_pro-1.8.3.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
4
+ mytunes_pro-1.8.3.dist-info/METADATA,sha256=hY0oW58qdE_X9QE3vH-6LaX5R05XUljQ6IZCAfJbdbE,16657
5
+ mytunes_pro-1.8.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
6
+ mytunes_pro-1.8.3.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
7
+ mytunes_pro-1.8.3.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
8
+ mytunes_pro-1.8.3.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- mytunes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- mytunes/app.py,sha256=cMlDP9j0M7AtoJtgCQiYDysG9TmoDknq-yZG3Th76Oc,60962
3
- mytunes_pro-1.8.1.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
4
- mytunes_pro-1.8.1.dist-info/METADATA,sha256=WMwanWpyV1OEIPMJJHgiHjSqZ0RhY9Yrf1NcOwjvqpw,16208
5
- mytunes_pro-1.8.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
6
- mytunes_pro-1.8.1.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
7
- mytunes_pro-1.8.1.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
8
- mytunes_pro-1.8.1.dist-info/RECORD,,