自动更新 Gitee Pages

原文地址

Info

2024.03.10 测试仍然可用。如果不喜欢浏览器弹出,请把13行(headless=False)设置为True。

直接copy运行了一下,没有效果。 根据运行电脑的做了以下设置,达到可运行的状态:运行程序达到自动点击gitee pages更新.

在命令行安装playwright以及浏览器

pip install playwright 
playwright install

更新了导入playwright的方式from playwright.sync_api import sync_playwright

page.wait_for_selector() 这一句始终没有找到一个好的条件来结束程序。

如果使用

page.wait_for_selector('span:text("已开启 Gitee Pages 服务,网站地址:")', timeout=12 * 1000, state='visible') 这一句span一开始就有了,在点击更新后会立即结束程序,看不到部署成功的提示。原则上可行但是并不完美。

点击更新后会出现一条文本 正在部署,请耐心等待...,用它的消失来做为wait_for_selector()的条件,算是比较完美,它在部署成功后会消失,然后结束整个程序。

但是程序也是一闪而过结束了,唯一确定的是更新按钮肯定点下去了。

部署等几秒钟就成功了。

from playwright.sync_api import sync_playwright
import time

# 请输入你的用户名/密码/及gitee pages网址
USERNAME = 'ccccc42@google.com'
PASSWORD = '31415926pi'
GITEE_PAGES_URL = 'https://gitee.com/your/repo/pages'


def main():
    with sync_playwright() as p:
        for browser_type in [p.chromium]:
            browser = browser_type.launch(headless=False)
            page = browser.new_page()
            page.goto('https://gitee.com/login')
            page.click('input[name="user[login]"]')
            page.fill('input[name="user[login]"]', USERNAME)
            page.click('input[name="user[login]"]')
            page.fill('input[name="user[password]"]', PASSWORD)
            page.click("input[value='登 录']")
            time.sleep(3)
            page.goto(GITEE_PAGES_URL)
            page.on("dialog", lambda dialog: dialog.accept())
            page.click(".update_deploy")
            page.on("dialog", lambda dialog: dialog.accept())
            # text = "已开启 Gitee Pages 服务,网站地址:"
            # state="attached", "detached", "hidden", "visible"
            # page.wait_for_selector('span:text("正在部署,请耐心等待...")', timeout=12 * 1000, state='hidden')
            time.sleep(7)
            page.wait_for_selector(
                'span:text("正在部署,请耐心等待...")',
                timeout=10 * 1000,
                state='hidden',
            )
            print('OK')
            browser.close()


if __name__ == '__main__':
    main()

Update

2024.05.01 在国际劳动节这天,所有gitee pages访问下线。

转至Cloudflare部署,不需要自己再写程序自动部署至gitee。

直接推送至github, 然后由Cloudflare自动部署至xxx.pages.dev。比以前更方便了。

部署很简单,参考Cloudflare Pages