From 7d355f126c130a29f5bc314a26ca3372f4848d4c Mon Sep 17 00:00:00 2001 From: yeongpin Date: Mon, 14 Apr 2025 13:08:32 +0800 Subject: [PATCH] Update CHANGELOG for v1.9.04, adding Opera GX support and fixing various issues. Update config and OAuth handler to include paths for Opera GX. Enhance utils to retrieve default browser paths for Opera GX. --- CHANGELOG.md | 10 +++++++++- config.py | 13 ++++++------- oauth_auth.py | 9 ++++++--- utils.py | 30 +++++++++++++++++++++++++++--- 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2f0f41..4d29a06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log -## v1.9.03 +## v1.9.04 +1. Add: Opera GX Support | 添加 Opera GX 支持 +2. Same as v1.9.03 | 與 v1.9.03 相同 +3. Hotfix: Some Issues | 修復一些問題 +4. Add: Bypass Cursor JWT EXP Problem | 添加繞過 Cursor JWT EXP 問題 +5. Fix: Cursor editor redirects to logout page and logout automatically | 修復 Cursor 編輯器重定向到登出頁面並自動登出 +6. Fix: Some Issues | 修復一些問題 + +## v1.9.03[Skip & Merge to v1.9.04] 1. Hotfix: Some Issues | 修復一些問題 2. Add: Bypass Cursor JWT EXP Problem | 添加繞過 Cursor JWT EXP 問題 3. Fix: Cursor editor redirects to logout page and logout automatically | 修復 Cursor 編輯器重定向到登出頁面並自動登出 diff --git a/config.py b/config.py index 400353d..38cc332 100644 --- a/config.py +++ b/config.py @@ -60,18 +60,17 @@ def setup_config(translator=None): 'Browser': { 'default_browser': 'chrome', 'chrome_path': get_default_browser_path('chrome'), - 'edge_path': get_default_browser_path('edge'), - 'firefox_path': get_default_browser_path('firefox'), - 'brave_path': get_default_browser_path('brave'), 'chrome_driver_path': get_default_driver_path('chrome'), + 'edge_path': get_default_browser_path('edge'), 'edge_driver_path': get_default_driver_path('edge'), + 'firefox_path': get_default_browser_path('firefox'), 'firefox_driver_path': get_default_driver_path('firefox'), + 'brave_path': get_default_browser_path('brave'), 'brave_driver_path': get_default_driver_path('brave'), 'opera_path': get_default_browser_path('opera'), - 'opera_driver_path': get_default_driver_path('opera') - }, - 'Chrome': { - 'chromepath': get_default_browser_path('chrome') + 'opera_driver_path': get_default_driver_path('opera'), + 'operagx_path': get_default_browser_path('operagx'), + 'operagx_driver_path': get_default_driver_path('chrome') # Opera GX 使用 Chrome 驱动 }, 'Turnstile': { 'handle_turnstile_time': '2', diff --git a/oauth_auth.py b/oauth_auth.py index f70e243..a9ae3b1 100644 --- a/oauth_auth.py +++ b/oauth_auth.py @@ -305,7 +305,8 @@ class OAuthHandler: 'brave': os.path.join(os.environ.get('LOCALAPPDATA', ''), 'BraveSoftware', 'Brave-Browser', 'User Data'), 'edge': os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Microsoft', 'Edge', 'User Data'), 'firefox': os.path.join(os.environ.get('APPDATA', ''), 'Mozilla', 'Firefox', 'Profiles'), - 'opera': os.path.join(os.environ.get('APPDATA', ''), 'Opera Software', 'Opera Stable') + 'opera': os.path.join(os.environ.get('APPDATA', ''), 'Opera Software', 'Opera Stable'), + 'operagx': os.path.join(os.environ.get('APPDATA', ''), 'Opera Software', 'Opera GX Stable') } elif sys.platform == 'darwin': # macOS user_data_dirs = { @@ -313,7 +314,8 @@ class OAuthHandler: 'brave': os.path.expanduser('~/Library/Application Support/BraveSoftware/Brave-Browser'), 'edge': os.path.expanduser('~/Library/Application Support/Microsoft Edge'), 'firefox': os.path.expanduser('~/Library/Application Support/Firefox/Profiles'), - 'opera': os.path.expanduser('~/Library/Application Support/com.operasoftware.Opera') + 'opera': os.path.expanduser('~/Library/Application Support/com.operasoftware.Opera'), + 'operagx': os.path.expanduser('~/Library/Application Support/com.operasoftware.OperaGX') } else: # Linux user_data_dirs = { @@ -321,7 +323,8 @@ class OAuthHandler: 'brave': os.path.expanduser('~/.config/BraveSoftware/Brave-Browser'), 'edge': os.path.expanduser('~/.config/microsoft-edge'), 'firefox': os.path.expanduser('~/.mozilla/firefox'), - 'opera': os.path.expanduser('~/.config/opera') + 'opera': os.path.expanduser('~/.config/opera'), + 'operagx': os.path.expanduser('~/.config/opera-gx') } # 获取选定浏览器的用户数据目录,如果找不到则使用 Chrome 的 diff --git a/utils.py b/utils.py index 8a66dbd..8922f86 100644 --- a/utils.py +++ b/utils.py @@ -84,14 +84,24 @@ def get_default_browser_path(browser_type='chrome'): r"C:\Program Files\Opera\opera.exe", r"C:\Program Files (x86)\Opera\opera.exe", os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera', 'launcher.exe'), - os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera', 'opera.exe'), - os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera GX', 'launcher.exe'), - os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera GX', 'opera.exe') + os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera', 'opera.exe') ] for path in opera_paths: if os.path.exists(path): return path return opera_paths[0] # 返回第一个路径,即使它不存在 + elif browser_type == 'operagx': + # 尝试多个可能的 Opera GX 路径 + operagx_paths = [ + os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera GX', 'launcher.exe'), + os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Programs', 'Opera GX', 'opera.exe'), + r"C:\Program Files\Opera GX\opera.exe", + r"C:\Program Files (x86)\Opera GX\opera.exe" + ] + for path in operagx_paths: + if os.path.exists(path): + return path + return operagx_paths[0] # 返回第一个路径,即使它不存在 elif browser_type == 'brave': # Brave 浏览器的默认安装路径 paths = [ @@ -115,6 +125,8 @@ def get_default_browser_path(browser_type='chrome'): return "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" elif browser_type == 'opera': return "/Applications/Opera.app/Contents/MacOS/Opera" + elif browser_type == 'operagx': + return "/Applications/Opera GX.app/Contents/MacOS/Opera" else: # Linux if browser_type == 'chrome': @@ -135,6 +147,18 @@ def get_default_browser_path(browser_type='chrome'): return "/usr/bin/firefox" elif browser_type == 'opera': return "/usr/bin/opera" + elif browser_type == 'operagx': + # 尝试常见的 Opera GX 路径 + operagx_names = ["opera-gx"] + for name in operagx_names: + try: + import shutil + path = shutil.which(name) + if path: + return path + except: + pass + return "/usr/bin/opera-gx" elif browser_type == 'brave': # 尝试常见的 Brave 路径 brave_names = ["brave", "brave-browser"]