From 53528ad891ee5cc697bc60b0b08ea61856d77bcc Mon Sep 17 00:00:00 2001 From: RachelOS <1327444968@qq.com> Date: Fri, 12 Dec 2025 20:41:35 +0800 Subject: [PATCH] 1.4.8-Fix --- Dockerfiles/base-full/Dockerfile | 17 ++++++ Dockerfiles/base-full/install.sh | 93 ++++++++++++++++++++++++++++++++ driver/wx.py | 10 ++-- install.sh | 5 +- test_article.py | 4 +- 5 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 Dockerfiles/base-full/Dockerfile create mode 100644 Dockerfiles/base-full/install.sh diff --git a/Dockerfiles/base-full/Dockerfile b/Dockerfiles/base-full/Dockerfile new file mode 100644 index 00000000..5b092d80 --- /dev/null +++ b/Dockerfiles/base-full/Dockerfile @@ -0,0 +1,17 @@ + +FROM --platform=$BUILDPLATFORM ghcr.io/rachelos/base-mini:latest as werss-base +# + +ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple +# ENV PIP_INDEX_URL=https://mirrors.huaweicloud.com/repository/pypi/simple + +# 复制Python依赖文件 +FROM werss-base +# 安装系统依赖 +WORKDIR /app +# 复制后端代码 +ADD ./install.sh ./install.sh +ENV INSTALL=True BROWSER_TYPE=webkit PLANT_PATH=/app/env/ +RUN chmod +x ./install.sh +RUN ./install.sh +RUN source /etc/profile \ No newline at end of file diff --git a/Dockerfiles/base-full/install.sh b/Dockerfiles/base-full/install.sh new file mode 100644 index 00000000..fae7171e --- /dev/null +++ b/Dockerfiles/base-full/install.sh @@ -0,0 +1,93 @@ +#!/bin/bash +plantform="$(uname -m)" +PLANT_PATH=${PLANT_PATH:-/app/data/} +plant=$PLANT_PATH_$plantform +python3 -m venv $plant +source $plant/bin/activate +echo "使用虚拟环境: $plant" + + +# 检查函数:检查包是否已安装 +check_package() { + if command -v "$1" >/dev/null 2>&1; then + echo "$1 已安装" + return 0 + elif dpkg -l "$1" 2>/dev/null | grep -q "^ii"; then + echo "$1 已安装" + return 0 + else + echo "$1 未安装" + return 1 + fi +} +# 检查所有需要的包 +packages=("wget" "git" "build-essential" "zlib1g-dev" + "libgdbm-dev" "libnss3-dev" "libssl-dev" "libreadline-dev" + "libffi-dev" "libsqlite3-dev" "procps" ) + + + +if [ "$EXPORT_PDF" = "True" ]; then + echo "添加libreoffice依赖包..." + packages+=("fonts-noto-cjk" "libreoffice") +fi + +echo "检查依赖包安装状态..." +for package in "${packages[@]}"; do + if ! check_package "$package"; then + missing_packages+=("$package") + fi +done +echo "${missing_packages[*]}" +if [ ${#missing_packages[@]} -eq 0 ]; then + echo "所有依赖都已安装,无需重复安装。" +else + echo "需要安装的包: ${missing_packages[*]}" + echo "开始安装..." + apt update && apt install -y ${missing_packages[*]} --no-install-recommends\ + && rm -rf /var/lib/apt/lists/* + if [ $? -eq 0 ]; then + echo "安装完成!" + else + echo "安装失败!" + exit 1 + fi +fi + +ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + +PLAYWRIGHT_BROWSERS_PATH=${PLAYWRIGHT_BROWSERS_PATH:-$PLANT_PATH/driver/_$plantform} +BROWSER_TYPE=${BROWSER_TYPE:-webkit} +echo "export PLAYWRIGHT_BROWSERS_PATH=${PLAYWRIGHT_BROWSERS_PATH} +export TZ=Asia/Shanghai +export BROWSER_TYPE=${BROWSER_TYPE}">/app/environment.sh +echo "环境变量已设置" +chmod +x /app/environment.sh +cat /app/environment.sh +source /app/environment.sh +echo "source /app/environment.sh +source $plant/bin/activate">/etc/profile +# pip3 install --upgrade pip +pip3 install playwright +# 检查requirements.txt更新 +if [ -f "requirements.txt" ]; then + CURRENT_MD5=$(md5sum requirements.txt | cut -d' ' -f1) + OLD_MD5_FILE="/app/data/requirements.txt.md5" + + if [ -f "$OLD_MD5_FILE" ] && [ "$CURRENT_MD5" = "$(cat $OLD_MD5_FILE)" ]; then + echo "requirements.txt未更新,跳过安装" + else + echo "安装requirements.txt依赖..." + pip3 install -r requirements.txt + echo $CURRENT_MD5 > $OLD_MD5_FILE + fi +fi + +INSTALL=${INSTALL:-False} +# 根据环境变量决定是否安装浏览器 +if [ "$INSTALL" = True ]; then + echo "INSTALL环境变量为$INSTALL,开始安装playwright浏览器..." + playwright install $BROWSER_TYPE --with-deps +else + echo "INSTALL环境变量为$INSTALL,跳过playwright浏览器安装" +fi \ No newline at end of file diff --git a/driver/wx.py b/driver/wx.py index 0e317e83..e1806e33 100644 --- a/driver/wx.py +++ b/driver/wx.py @@ -18,7 +18,7 @@ from .cookies import expire import json from core.print import print_error,print_warning,print_info,print_success class Wx: - HasLogin=False + _haslogin=False SESSION=None HasCode=False isLOCK=False @@ -134,8 +134,10 @@ class Wx: random_index = random.randint(0, account_count - 1) time.sleep(1) p=accounts.nth(random_index).locator("p") - account_name=p.text_content() - print(f"切换账号: {account_name}") + nick_name=accounts.nth(random_index).locator(".section-item__nickname") + account_id=p.text_content() + account_name=nick_name.text_content() + print(f"账号: {account_name} ID:{account_id}") p.click() # 等待页面加载并验证切换成功 page.wait_for_load_state("networkidle", timeout=10000) @@ -146,7 +148,7 @@ class Wx: print_success("账号切换成功") from jobs.notice import sys_notice from core.config import cfg - sys_notice(f"账号切换成功\n- 账号名称: {account_name}", str(cfg.get("server.code_title","WeRss账号切换成功"))) + sys_notice(f"账号切换成功\n- 账号名称: {account_name} \n- 账号ID: {account_id} \n- 过期时间: {self.SESSION.get('expire_time')}", str(cfg.get("server.code_title","WeRss账号切换成功"))) return True else: print_warning("没有找到可切换的账号") diff --git a/install.sh b/install.sh index 64a054aa..39357c5a 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,7 @@ #!/bin/bash plantform="$(uname -m)" -plant=/app/data/venv_$plantform +PLANT_PATH=${PLANT_PATH:-/app/data/} +plant=$PLANT_PATH_$plantform python3 -m venv $plant source $plant/bin/activate echo "使用虚拟环境: $plant" @@ -55,7 +56,7 @@ fi ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -PLAYWRIGHT_BROWSERS_PATH=${PLAYWRIGHT_BROWSERS_PATH:-/app/data/driver/_$plantform} +PLAYWRIGHT_BROWSERS_PATH=${PLAYWRIGHT_BROWSERS_PATH:-$PLANT_PATH/driver/_$plantform} BROWSER_TYPE=${BROWSER_TYPE:-webkit} echo "export PLAYWRIGHT_BROWSERS_PATH=${PLAYWRIGHT_BROWSERS_PATH} export TZ=Asia/Shanghai diff --git a/test_article.py b/test_article.py index d391310b..f0e4c8af 100644 --- a/test_article.py +++ b/test_article.py @@ -155,7 +155,7 @@ if __name__=="__main__": # testWeb() # testNotice() # testMd2Doc() - # testLogin() - testCheckAuth() + testLogin() + # testCheckAuth() # testToken() # 注释掉避免线程冲突 # testMarkDown()