playwright-pythonでogp作成

兵庫県

https://github.com/stop-covid19-hyogo/covid19/blob/development/ui-test/ogp_screenshot.py

import pathlib
from urllib.parse import urljoin

from playwright import sync_playwright

PATHS = {
    "/cards/details-of-confirmed-cases": (959, 500),
    "/cards/number-of-confirmed-cases": (959, 500),
    "/cards/attributes-of-confirmed-cases": (959, 480),
    "/cards/number-of-tested": (959, 540),
    "/cards/patients-by-age": (959, 500),
    "/cards/patients-by-clusters": (959, 500),
    "/cards/changes-in-number-of-hospitalized-patients": (959, 500),
}

with sync_playwright() as p:

    browser = p.chromium.launch()

    for lang in ("ja", "en", "zh-cn", "zh-tw", "ko", "ja-basic"):

        for path, size in PATHS.items():

            link = urljoin(
                "https://stop-covid19-hyogo.org/",
                f'{"" if lang == "ja" else lang}{path}?ogp=true',
            )

            width, height = size

            path = path.replace("/cards/", "").replace("/", "_")

            if lang == "ja":
                p = pathlib.Path("ogp", path + ".png")
            else:
                p = pathlib.Path("ogp", lang, path + ".png")

            p.parent.mkdir(parents=True, exist_ok=True)

            # 言語指定
            page = browser.newPage(locale=lang)

            # サイズ指定
            page.setViewportSize(width=width, height=height)
            page.goto(link)

            # スクリーンショット
            page.screenshot(path=p)
            page.close()

    browser.close()