init commit
This commit is contained in:
80
scan_qrcode.py
Normal file
80
scan_qrcode.py
Normal file
@@ -0,0 +1,80 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
扫码登录小红书创作者中心
|
||||
功能:
|
||||
- 自动打开登录页,展示二维码,等待用户扫码登录
|
||||
- 登录成功后可获取 cookies 或提示
|
||||
"""
|
||||
import time
|
||||
from playwright.sync_api import sync_playwright
|
||||
|
||||
def scan_qrcode():
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(headless=False)
|
||||
context = browser.new_context(viewport={"width": 1600, "height": 900})
|
||||
page = context.new_page()
|
||||
|
||||
login_success = False
|
||||
for i in range(120):
|
||||
page.goto("https://creator.xiaohongshu.com/new/home")
|
||||
if "new/home" in page.url:
|
||||
print("扫码登录成功!")
|
||||
login_success = True
|
||||
break
|
||||
## 等待10s的扫码时间
|
||||
time.sleep(10)
|
||||
if not login_success:
|
||||
print("扫码超时,请重试。")
|
||||
browser.close()
|
||||
return
|
||||
# 只有扫码登录成功后才执行发文流程
|
||||
try:
|
||||
import os
|
||||
# 读取 test 文件夹内容
|
||||
base_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
test_dir = os.path.join(base_dir, 'test')
|
||||
title_path = os.path.join(test_dir, 'title.txt')
|
||||
desc_path = os.path.join(test_dir, 'desc.txt')
|
||||
# 查找所有图片,支持多图上传
|
||||
exts = ['.jpg', '.jpeg', '.png', '.bmp', '.gif']
|
||||
image_list = []
|
||||
for fname in os.listdir(test_dir):
|
||||
if any(fname.lower().endswith(ext) for ext in exts):
|
||||
image_list.append(os.path.join(test_dir, fname))
|
||||
if not image_list:
|
||||
raise Exception("未找到图片文件,请在 test 文件夹中放入图片。")
|
||||
with open(title_path, 'r', encoding='utf-8') as f:
|
||||
title = f.read().strip()
|
||||
with open(desc_path, 'r', encoding='utf-8') as f:
|
||||
desc = f.read().strip()
|
||||
page.get_by_text("发布图文笔记").click()
|
||||
time.sleep(1)
|
||||
# 上传多张图片,定位 input[type='file']
|
||||
file_input = page.locator("input[type='file']")
|
||||
file_input.set_input_files(image_list)
|
||||
time.sleep(1)
|
||||
# 填写标题
|
||||
page.get_by_role("textbox", name="填写标题会有更多赞哦~").click()
|
||||
page.get_by_role("textbox", name="填写标题会有更多赞哦~").fill(title)
|
||||
time.sleep(1)
|
||||
# 填写正文
|
||||
page.get_by_role("textbox").nth(1).click()
|
||||
page.get_by_role("textbox").nth(1).fill(desc)
|
||||
time.sleep(1)
|
||||
# 点击发布
|
||||
page.get_by_role("button", name="发布").click()
|
||||
print("已点击发布(多图模式)")
|
||||
# 发完图文后保存 cookie
|
||||
try:
|
||||
from util import save_cookies
|
||||
cookie_path = os.path.join(base_dir, "cookies.json")
|
||||
save_cookies(context, cookie_path)
|
||||
print(f"登录 cookie 已保存到 {cookie_path}")
|
||||
except Exception as e:
|
||||
print("保存 cookie 失败:", e)
|
||||
except Exception as e:
|
||||
print("自动发文流程异常:", e)
|
||||
browser.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
scan_qrcode()
|
||||
Reference in New Issue
Block a user