Created
August 24, 2023 17:14
-
-
Save cboulanger/a598cd309e5352393a926ce3730a6e5b to your computer and use it in GitHub Desktop.
Get latest chrome or chromedriver download URLs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# written by GPT4 | |
import requests | |
import json | |
import platform | |
import sys | |
import argparse | |
def get_latest_stable_version(): | |
url = "https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json" | |
response = requests.get(url) | |
data = response.json() | |
return data.get("channels", {}).get("Stable", {}).get("version") | |
def get_download_url(version, platform_key, download_type): | |
url = "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json" | |
response = requests.get(url) | |
data = response.json() | |
for item in data.get('versions'): | |
if item.get("version") == version: | |
for download in item.get("downloads", {}).get(download_type, []): | |
if download.get("platform") == platform_key: | |
return download.get("url") | |
return None | |
def determine_platform(): | |
system = platform.system().lower() | |
if system == "windows": | |
return "win32" if platform.architecture()[0] == "32bit" else "win64" | |
elif system == "linux": | |
return "linux64" | |
elif system == "darwin": | |
return "mac64" | |
else: | |
return None | |
def main(): | |
# Argument parsing | |
parser = argparse.ArgumentParser(description="Fetch download URLs for Chrome or Chromedriver.") | |
parser.add_argument("download_type", choices=["chrome", "chromedriver"], help="Specify whether to fetch the URL for Chrome or Chromedriver.") | |
args = parser.parse_args() | |
# Determine the platform | |
platform_key = determine_platform() | |
if not platform_key: | |
print("Unsupported platform.") | |
sys.exit(1) | |
# Get the latest stable version | |
latest_version = get_latest_stable_version() | |
# Get URL based on download_type | |
download_url = get_download_url(latest_version, platform_key, args.download_type) | |
if not download_url: | |
print(f"Failed to fetch download URL for {args.download_type}.") | |
sys.exit(1) | |
print(download_url) | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment