From b342ca17067b3529e87368f2d1366789ee986387 Mon Sep 17 00:00:00 2001 From: Marie-Alice Blete <10806774+malywut@users.noreply.github.com> Date: Mon, 30 Dec 2024 13:54:57 +0100 Subject: [PATCH] Add sitemap with screenshot --- generate_site.py | 57 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/generate_site.py b/generate_site.py index bd75b3d..f0c39fb 100644 --- a/generate_site.py +++ b/generate_site.py @@ -25,7 +25,6 @@ def generate_webpage_screenshot(html_path): chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--force-device-scale-factor=1") - chrome_options.binary_location = "/usr/bin/google-chrome" # Specify Chrome binary print("Starting screenshot process...") @@ -43,23 +42,30 @@ def generate_webpage_screenshot(html_path): WebDriverWait(driver, 10).until( lambda d: d.execute_script("return document.readyState") == "complete" ) - + # Wait for JS to load WebDriverWait(driver, 10).until( - lambda d: d.execute_script(""" + lambda d: d.execute_script( + """ return typeof resources !== 'undefined' && document.querySelector('script[src="scripts/landscape.js"]') !== null - """) + """ + ) ) - + # Wait for element to be visible and have dimensions wait = WebDriverWait(driver, 10) - element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'landscape-container'))) + element = wait.until( + EC.presence_of_element_located((By.CLASS_NAME, "landscape-container")) + ) # Print the number of sub elements - print(f"Number of sub elements: {len(element.find_elements(By.CSS_SELECTOR, '*'))}") - - dimensions = driver.execute_script(""" + print( + f"Number of sub elements: {len(element.find_elements(By.CSS_SELECTOR, '*'))}" + ) + + dimensions = driver.execute_script( + """ const element = document.querySelector('.landscape-container'); const rect = element.getBoundingClientRect(); return { @@ -69,7 +75,8 @@ def generate_webpage_screenshot(html_path): height: rect.height, devicePixelRatio: window.devicePixelRatio }; - """) + """ + ) print(f"Element dimensions: {dimensions}") @@ -142,6 +149,30 @@ def load_resources(): return yaml.safe_load(file)["resources"] +def generate_sitemap(): + timestamp = datetime.now().strftime("%Y-%m-%d") + screenshot_path = "img/ai_engineering_landscape.png" + owner, repo = get_repo_info_from_github_env() + url = f"https://{owner}.github.io/{repo}" + + sitemap_content = f""" + + + {url} + {timestamp} + + {url}/{screenshot_path} + AI Engineering Landscape + AI Engineering Landscape + + +""" + + with open("dist/sitemap.xml", "w") as f: + f.write(sitemap_content) + + def generate_html(resources): # Prepare Jinja2 environment env = Environment(loader=FileSystemLoader(".")) @@ -171,6 +202,9 @@ def generate_html(resources): # Generate a screenshot of the webpage generate_webpage_screenshot(html_path=html_path) + # Generate sitemap + generate_sitemap() + def main(): import os @@ -178,12 +212,13 @@ def main(): os.makedirs("dist", exist_ok=True) resources = load_resources() - + shutil.copy("styles.css", "dist/styles.css") shutil.copytree("scripts", "dist/scripts/", dirs_exist_ok=True) shutil.copytree("logos", "dist/logos/", dirs_exist_ok=True) generate_html(resources) + if __name__ == "__main__": main()