Skip to content

Instantly share code, notes, and snippets.

@cboulanger
Created August 24, 2023 17:14
Show Gist options
  • Save cboulanger/a598cd309e5352393a926ce3730a6e5b to your computer and use it in GitHub Desktop.
Save cboulanger/a598cd309e5352393a926ce3730a6e5b to your computer and use it in GitHub Desktop.
Get latest chrome or chromedriver download URLs
# 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