diff --git a/.SRCINFO b/.SRCINFO index d143943..a732162 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,10 +1,11 @@ pkgbase = cursor-free-vip-git pkgdesc = Reset Cursor AI MachineID & Auto Sign Up / In & Bypass Higher Token Limit - pkgver = 1.9.03.2.g43a58db + pkgver = 1.9.04.10.g5863891 pkgrel = 1 url = https://github.com/yeongpin/cursor-free-vip arch = x86_64 license = MIT + license = Attribution-NonCommercial-NoDerivatives 4.0 International makedepends = git makedepends = python makedepends = pyinstaller @@ -13,6 +14,8 @@ pkgbase = cursor-free-vip-git depends = cursor-bin provides = cursor-free-vip source = cursor-free-vip::git+https://github.com/yeongpin/cursor-free-vip.git + source = https://raw.githubusercontent.com/canmi21/openjlc/refs/heads/main/LICENSE + sha256sums = SKIP sha256sums = SKIP pkgname = cursor-free-vip-git diff --git a/PKGBUILD b/PKGBUILD index 97c5636..1b81dda 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,17 +2,17 @@ # Contributor: Canmi (Canmi21) pkgname=cursor-free-vip-git -pkgver=1.9.03.2.g43a58db +pkgver=1.9.04.10.g5863891 pkgrel=1 pkgdesc="Reset Cursor AI MachineID & Auto Sign Up / In & Bypass Higher Token Limit" arch=('x86_64') url="https://github.com/yeongpin/cursor-free-vip" -license=('MIT') +license=('MIT' 'Attribution-NonCommercial-NoDerivatives 4.0 International') depends=('python' 'cursor-bin') makedepends=('git' 'python' 'pyinstaller' 'uv') provides=('cursor-free-vip') -source=("cursor-free-vip::git+https://github.com/yeongpin/cursor-free-vip.git") -sha256sums=('SKIP') +source=("cursor-free-vip::git+https://github.com/yeongpin/cursor-free-vip.git" "https://raw.githubusercontent.com/canmi21/openjlc/refs/heads/main/LICENSE") +sha256sums=('SKIP' 'SKIP') pkgver() { cd "$srcdir/cursor-free-vip" @@ -28,5 +28,7 @@ build() { } package() { + install -Dm644 "$srcdir/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/mit_license" + install -Dm644 "$srcdir/cursor-free-vip/LICENSE.md" "$pkgdir/usr/share/licenses/$pkgname/attribution_non_commercial_no_derivatives_license" install -Dm755 "$srcdir/cursor-free-vip/dist/cursor-free-vip" "$pkgdir/usr/bin/cursor-free-vip" } \ No newline at end of file diff --git a/README.md b/README.md index 9489b17..29c1a5c 100644 --- a/README.md +++ b/README.md @@ -39,11 +39,11 @@ Always clean your browser's cache and cookies. If possible, use a VPN to create new

-##### If you don't have browser, you can download it from -[Google Chrome](https://www.google.com/intl/en_pk/chrome/) or [Opera](https://www.opera.com/download) or [Edge](https://www.microsoft.com/en-us/edge) or [Firefox](https://www.mozilla.org/en-US/firefox/new/) or [Brave](https://www.brave.com/download/) +##### If you don't have browser, you can download it from -##### 如果沒有瀏覽器,可以從 -[Google Chrome](https://www.google.com/intl/en_pk/chrome/) 或 [Opera](https://www.opera.com/download) 或 [Edge](https://www.microsoft.com/en-us/edge) 或 [Firefox](https://www.mozilla.org/en-US/firefox/new/) 或 [Brave](https://www.brave.com/download/) 下載 +##### 如果沒有瀏覽器,可以從这里下載 + +[Google Chrome](https://www.google.com/intl/en_pk/chrome/) | [Opera](https://www.opera.com/download) | [Edge](https://www.microsoft.com/en-us/edge) | [Firefox](https://www.mozilla.org/en-US/firefox/new/) | [Brave](https://www.brave.com/download/) @@ -71,11 +71,11 @@ Always clean your browser's cache and cookies. If possible, use a VPN to create ## 💻 System Support | 系統支持 -| Windows | x64 | ✅ | macOS | Intel | ✅ | -|:-------:|:-----:|:-:|:-----:|:-------------:|:-:| -| Windows | x86 | ✅ | macOS | Apple Silicon | ✅ | -| Linux | x64 | ✅ | Linux | x86 | ✅ | -| Linux | ARM64 | ✅ | Linux | ARM64 | ✅ | +| Operating System | Architecture | Supported | +|------------------|-------------------|-----------| +| Windows | x64, x86 | ✅ | +| macOS | Intel, Apple Silicon | ✅ | +| Linux | x64, x86, ARM64 | ✅ | ## 👀 How to use | 如何使用 diff --git a/oauth_auth.py b/oauth_auth.py index 8a2185f..4313041 100644 --- a/oauth_auth.py +++ b/oauth_auth.py @@ -1,3 +1,4 @@ +# oauth_auth.py import os from colorama import Fore, Style, init import time @@ -30,7 +31,7 @@ class OAuthHandler: def __init__(self, translator=None, auth_type=None): self.translator = translator self.config = get_config(translator) - self.auth_type = auth_type # make sure the auth_type is not None + self.auth_type = auth_type os.environ['BROWSER_HEADLESS'] = 'False' self.browser = None self.selected_profile = None @@ -182,7 +183,7 @@ class OAuthHandler: f"{self.translator.get('oauth.supported_browsers', platform=platform_name)}\n" + "- Windows: Google Chrome, Chromium\n" + "- macOS: Google Chrome, Chromium\n" + - "- Linux: Google Chrome, Chromium, chromium-browser" + "- Linux: Google Chrome, Chromium, google-chrome-stable" ) raise Exception(error_msg) @@ -244,7 +245,7 @@ class OAuthHandler: browser_processes = { 'chrome': { 'win': ['chrome.exe', 'chromium.exe'], - 'linux': ['chrome', 'chromium', 'chromium-browser'], + 'linux': ['chrome', 'chromium', 'chromium-browser', 'google-chrome-stable'], 'mac': ['Chrome', 'Chromium'] }, 'brave': { @@ -428,7 +429,12 @@ class OAuthHandler: elif browser_type == 'firefox': possible_paths = ['/usr/bin/firefox'] else: # 默认为 Chrome - possible_paths = ['/usr/bin/google-chrome', '/usr/bin/google-chrome-stable', '/usr/bin/chromium', '/usr/bin/chromium-browser'] + possible_paths = [ + '/usr/bin/google-chrome-stable', # 优先检查 google-chrome-stable + '/usr/bin/google-chrome', + '/usr/bin/chromium', + '/usr/bin/chromium-browser' + ] # 检查每个可能的路径 for path in possible_paths: @@ -436,7 +442,7 @@ class OAuthHandler: print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('oauth.found_browser_at', path=path) if self.translator else f'Found browser at: {path}'}{Style.RESET_ALL}") return path - # 如果找不到指定浏览器,则尝试使用Chrome + # 如果找不到指定浏览器,则尝试使用 Chrome if browser_type != 'chrome': print(f"{Fore.YELLOW}{EMOJI['WARNING']} {self.translator.get('oauth.browser_not_found_trying_chrome', browser=browser_type) if self.translator else f'Could not find {browser_type}, trying Chrome instead'}{Style.RESET_ALL}") return self._get_chrome_path() @@ -446,29 +452,6 @@ class OAuthHandler: except Exception as e: print(f"{Fore.RED}{EMOJI['ERROR']} {self.translator.get('oauth.error_finding_browser_path', error=str(e)) if self.translator else f'Error finding browser path: {e}'}{Style.RESET_ALL}") return None - - def _get_chrome_path(self): - """Fallback method to get Chrome path""" - try: - if os.name == 'nt': # Windows - possible_paths = [ - os.path.join(os.environ.get('PROGRAMFILES', ''), 'Google', 'Chrome', 'Application', 'chrome.exe'), - os.path.join(os.environ.get('PROGRAMFILES(X86)', ''), 'Google', 'Chrome', 'Application', 'chrome.exe'), - os.path.join(os.environ.get('LOCALAPPDATA', ''), 'Google', 'Chrome', 'Application', 'chrome.exe') - ] - elif sys.platform == 'darwin': # macOS - possible_paths = ['/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'] - else: # Linux - possible_paths = ['/usr/bin/google-chrome', '/usr/bin/google-chrome-stable', '/usr/bin/chromium', '/usr/bin/chromium-browser'] - - for path in possible_paths: - if os.path.exists(path): - print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('oauth.found_chrome_at', path=path) if self.translator else f'Found Chrome at: {path}'}{Style.RESET_ALL}") - return path - return None - except Exception as e: - print(f"{Fore.RED}{EMOJI['ERROR']} {self.translator.get('oauth.error_finding_chrome_path', error=str(e)) if self.translator else f'Error finding Chrome path: {e}'}{Style.RESET_ALL}") - return None def _configure_browser_options(self, browser_path, user_data_dir, active_profile): """Configure browser options based on platform""" @@ -481,6 +464,7 @@ class OAuthHandler: co.set_argument('--no-first-run') co.set_argument('--no-default-browser-check') co.set_argument('--disable-gpu') + co.set_argument('--remote-debugging-port=9222') # 明确指定调试端口 # Platform-specific options if sys.platform.startswith('linux'):