mytunes-pro 1.7.4__py3-none-any.whl → 1.7.5__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.7.4"
38
+ APP_VERSION = "1.7.5"
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"] # Add back new-window at the end for Windows specifically if needed
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,22 @@ class MyTunesApp:
816
819
  launched = True; break
817
820
  except: pass
818
821
 
819
- # 3. Linux (shutil.which)
822
+ # 3. WSL (Run Windows Chrome via cmd.exe)
823
+ elif self.is_wsl():
824
+ # In WSL, we use cmd.exe to start the browser. Window size flags work best when passed directly.
825
+ # Note: user-data-dir is skipped in WSL for now as Windows can't see /tmp safely without complex path translation.
826
+ wsl_flags = f"--app={live_url} --window-size=712,800 --window-position=100,100 --new-window --no-first-run --disable-extensions"
827
+ try:
828
+ subprocess.Popen(["cmd.exe", "/c", f"start chrome {wsl_flags}"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
829
+ launched = True
830
+ except:
831
+ # Fallback to general start if chrome command fails
832
+ try:
833
+ subprocess.Popen(["cmd.exe", "/c", "start", live_url], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
834
+ launched = True
835
+ except: pass
836
+
837
+ # 4. Native Linux
820
838
  else:
821
839
  for b in ['google-chrome', 'google-chrome-stable', 'brave-browser', 'chromium-browser', 'chromium']:
822
840
  p = shutil.which(b)
@@ -890,11 +908,16 @@ class MyTunesApp:
890
908
  return res
891
909
 
892
910
  def is_remote(self):
893
- """Check if running in a remote SSH session (excluding WSL)."""
894
- # WSL is technically "local" enough to open browsers
895
- if 'WSL_DISTRO_NAME' in os.environ or 'WSL_INTEROP' in os.environ:
911
+ return 'SSH_CONNECTION' in os.environ or 'SSH_CLIENT' in os.environ
912
+
913
+ def is_wsl(self):
914
+ try:
915
+ if sys.platform != 'linux': return False
916
+ if os.path.exists('/proc/version'):
917
+ with open('/proc/version', 'r') as f:
918
+ return 'microsoft' in f.read().lower()
896
919
  return False
897
- return os.environ.get('SSH_CLIENT') or os.environ.get('SSH_TTY')
920
+ except: return False
898
921
 
899
922
  def show_copy_dialog(self, title, url):
900
923
  """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.4
3
+ Version: 1.7.5
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.4)**
22
+ **현대적인 CLI 유튜브 뮤직 플레이어 (v1.7.5)**
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.4)**
211
+ **Modern CLI YouTube Music Player (v1.7.5)**
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.7.4 (Latest)
299
+ ### v1.7.5 (Latest)
300
+
301
+ - **WSL Integration**: Fully optimized browser launch from WSL by utilizing `cmd.exe` to trigger native Windows browsers.
302
+ - **F7 Windows Resolve**: Fixed an issue where YouTube (F7) wouldn't open in WSL environments.
303
+ - **F8 App Mode (WSL/Win)**: Enhanced flags to ensure "App Mode" (no address bar) works consistently even when launched from WSL.
304
+
305
+ ### v1.7.4
300
306
 
301
307
  - **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
308
  - **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=2sLStqolIowxPL5Jk9_c8R00ojP7T_-oYdFNdCCjt_E,60373
3
+ mytunes_pro-1.7.5.dist-info/licenses/LICENSE,sha256=lOrP0EIjxcgJia__W3f3PVDZkRd2oRzFkyH2g3LRRCg,1063
4
+ mytunes_pro-1.7.5.dist-info/METADATA,sha256=CWyre9bjpR3l2dj4rQI_EZkO3nS3V5eKemeezwrf_1c,13542
5
+ mytunes_pro-1.7.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
6
+ mytunes_pro-1.7.5.dist-info/entry_points.txt,sha256=6-MsC13nIgzLvrREaGotc32FgxHx_Iuu1z2qCzJs1_4,65
7
+ mytunes_pro-1.7.5.dist-info/top_level.txt,sha256=KWzdFyNNG_sO7GT83-sN5fYArP4_DL5I8HYIwgazXyY,8
8
+ mytunes_pro-1.7.5.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,,