#!/bin/bash # 内容分发系统数据库版启动脚本(完全从数据库获取数据) # 设置默认时间戳变量 TIMESTAMP=$(date +"%Y%m%d_%H%M%S") # 设置路径变量 BASE_DIR="/root/autodl-tmp/TravelContentCreator" LOG_DIR="$BASE_DIR/log" RESULT_DIR="$BASE_DIR/output/$TIMESTAMP" OUTPUT_DIR="$RESULT_DIR/distribution_results" DB_PATH="$BASE_DIR/distribution.db" # 设置邮件相关变量 EMAIL_FROM="zwysendemail@163.com" EMAIL_PASSWORD="NMhVGFmCJkGEy3B5" # EMAIL_FROM="zowoyomedia@163.com" # EMAIL_PASSWORD="SDj5fK6Tk9YevmsD" SUBJECT="文旅小红书带货笔记内容0519" ZIP_FILENAME="文旅小红书带货笔记内容0519" # 设置分发配置 ARTICLE_PER_USER=1 MAX_USERS=-1 # 最多发送给多少用户,不限制则设置为-1 TEST_MODE=false # 测试模式,不实际发送邮件 # 测试邮箱配置(新增) TEST_EMAIL_MODE=false # 是否启用测试邮箱模式 TEST_EMAIL="jinye_huang@foxmail.com" # 测试邮箱地址,所有邮件都会发送到这里 JUDGE_ONLY=true # 只分发审核通过的内容 UNDISTRIBUTED_ONLY=true # 只分发未分发的内容 # 内容筛选配置 TARGET_PRODUCT="" # 为空则不筛选特定产品 TARGET_OBJECT="北洛秘境盛季酒店" # 为空则不筛选特定景点 # 用户筛选配置 TARGET_USER_ID="" # 为空则不筛选特定用户ID TARGET_USER_EMAIL="" # 为空则不筛选特定用户邮箱 # 强制性附件配置 FORCE_ATTACHMENTS="/root/autodl-tmp/TravelContentCreator/hotel_img/标题参考格式-精选.txt" # 创建必要的目录 mkdir -p "$LOG_DIR" mkdir -p "$OUTPUT_DIR" # 将日志同时输出到控制台和日志文件 LOG_FILE="$LOG_DIR/distribution_db_$TIMESTAMP.log" exec > >(tee -a "$LOG_FILE") 2>&1 echo "===================================================" echo "内容分发系统启动 (数据库全依赖版) - $(date)" echo "===================================================" echo "日志保存在: $LOG_FILE" echo "结果保存在: $RESULT_DIR" echo "注意: 本次更新不再创建ZIP压缩包,所有文件将直接作为邮件附件发送" echo " 同时,文章内容将添加到邮件正文中" # 检查数据库是否存在 if [ ! -f "$DB_PATH" ]; then echo "数据库文件不存在: $DB_PATH" echo "请先初始化数据库或检查路径是否正确" exit 1 fi # 检查内容表是否有记录 CONTENT_COUNT=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM contents;") if [ "$CONTENT_COUNT" -eq 0 ]; then echo "警告: 内容表中没有记录,请先导入内容" exit 1 fi # 检查用户表是否有记录 USER_COUNT=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM users;") if [ "$USER_COUNT" -eq 0 ]; then echo "警告: 用户表中没有记录,请先导入用户" exit 1 fi # 检查测试邮箱配置 if [ "$TEST_EMAIL_MODE" = true ]; then if [ -z "$TEST_EMAIL" ]; then echo "警告: 测试邮箱模式已启用,但未设置测试邮箱地址" echo "请在脚本中设置 TEST_EMAIL 变量" exit 1 else echo "测试邮箱模式已启用,所有邮件将发送到: $TEST_EMAIL" fi fi # 检查强制性附件配置 if [ -n "$FORCE_ATTACHMENTS" ]; then echo "已配置强制性附件: $FORCE_ATTACHMENTS" # 验证文件是否存在 IFS=',' read -ra ATTACHMENT_ARRAY <<< "$FORCE_ATTACHMENTS" for attachment in "${ATTACHMENT_ARRAY[@]}"; do if [ ! -e "$attachment" ]; then echo "警告: 强制性附件文件或目录不存在: $attachment" else echo "已确认强制性附件存在: $attachment" fi done fi # 数据库状态统计 echo "数据库状态统计:" sqlite3 "$DB_PATH" <