5.5 KiB
Raw Blame History

#!/bin/bash

# 设置路径变量
BASE_DIR="/root/autodl-tmp/TravelContentCreator"
DB_PATH="$BASE_DIR/distribution.db"
LOG_DIR="$BASE_DIR/log"
OUTPUT_DIR="$BASE_DIR/output/$(date +"%Y%m%d_%H%M%S")/db_reports"

# 创建必要的目录
mkdir -p "$LOG_DIR"
mkdir -p "$OUTPUT_DIR"

# 将日志同时输出到控制台和日志文件
LOG_FILE="$LOG_DIR/database_operations_$(date +"%Y%m%d_%H%M%S").log"
exec > >(tee -a "$LOG_FILE") 2>&1

echo "===== 开始内容分发数据库操作 ====="
echo "时间: $(date)"
echo "数据库路径: $DB_PATH"
echo "输出目录: $OUTPUT_DIR"

# 1. 初始化数据库(如果不存在)
echo -e "\n\n===== 初始化数据库 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" init

# 2. 导入内容清单
echo -e "\n\n===== 导入内容清单 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" import-contents \
  --file "$BASE_DIR/output/2025-05-12_09-33-12/manifest_2025-05-12_09-33-12.csv"

# 3. 导入用户数据
echo -e "\n\n===== 导入用户数据 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" import-users \
  --file "$BASE_DIR/output/5.12 copy.csv" \
  --email-column "达人邮箱" \
  --username-column "小红书ID"

# 4. 导入现有分发记录
echo -e "\n\n===== 导入分发记录 ====="
# 假设有一个最近的分发记录CSV
LATEST_DIST_FILE=$(ls -t "$BASE_DIR"/output/*/distribution_*.csv | head -1)
if [ -n "$LATEST_DIST_FILE" ]; then
  BATCH_ID="batch_$(date +"%Y%m%d")"
  echo "导入分发记录: $LATEST_DIST_FILE (批次ID: $BATCH_ID)"
  python scripts/distribution_database.py --db-path "$DB_PATH" import-distribution \
    --file "$LATEST_DIST_FILE" \
    --batch-id "$BATCH_ID"
else
  echo "未找到分发记录文件,跳过导入"
fi

# 5. 查询特定产品的内容分发状态
echo -e "\n\n===== 查询产品分发状态 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" query-content \
  --product "五常大米" \
  --output "$OUTPUT_DIR/五常大米_分发状态.csv"

# 6. 查询特定景点的内容分发状态
echo -e "\n\n===== 查询景点分发状态 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" query-content \
  --object "呼伦贝尔草原" \
  --output "$OUTPUT_DIR/呼伦贝尔草原_分发状态.csv"

# 7. 查询特定用户接收的内容
echo -e "\n\n===== 查询用户接收内容 ====="
USER_EMAIL="example@example.com"  # 替换为实际用户邮箱
python scripts/distribution_database.py --db-path "$DB_PATH" query-user \
  --email "$USER_EMAIL" \
  --output "$OUTPUT_DIR/用户${USER_EMAIL}_接收内容.csv"

# 8. 生成综合统计报告
echo -e "\n\n===== 生成统计报告 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" report \
  --output "$OUTPUT_DIR/分发统计报告.csv" \
  --format "csv"

# 9. 生成JSON格式统计报告可用于可视化
echo -e "\n\n===== 生成JSON统计报告 ====="
python scripts/distribution_database.py --db-path "$DB_PATH" report \
  --output "$OUTPUT_DIR/分发统计报告.json" \
  --format "json"

echo -e "\n\n===== 内容分发数据库操作完成 ====="
echo "时间: $(date)"
echo "所有报告已保存到: $OUTPUT_DIR"
echo "日志已保存到: $LOG_FILE"

# 列出生成的报告文件
echo -e "\n生成的报告文件列表:"
find "$OUTPUT_DIR" -type f | sort
chmod +x scripts/distribution_database.py scripts/example_database_usage.sh

我已经创建了一个完整的内容分发数据库管理系统帮助您轻松跟踪所有素材、用户和分发记录。这是一个轻量级解决方案使用SQLite数据库存储数据不需要额外的服务器。

系统组成

  1. distribution_database.py - 核心数据库管理脚本,功能包括:

    • 初始化数据库和表结构
    • 导入内容清单、用户数据和分发记录
    • 查询内容分发状态
    • 查询用户接收的内容
    • 生成统计报告
  2. example_database_usage.sh - 演示脚本,展示如何使用数据库功能

数据库结构

数据库包含三个主要表:

  • contents - 存储所有素材信息ID、路径、产品、景点等
  • users - 存储用户信息(邮箱、用户名)
  • distributions - 记录分发情况(内容-用户关系、发送状态、批次)

使用方法

  1. 初始化数据库:

    python scripts/distribution_database.py init
    
  2. 导入内容清单:

    python scripts/distribution_database.py import-contents --file manifest.csv
    
  3. 导入用户数据:

    python scripts/distribution_database.py import-users --file users.csv
    
  4. 导入分发记录:

    python scripts/distribution_database.py import-distribution --file distribution.csv
    
  5. 查询内容状态:

    python scripts/distribution_database.py query-content --product "产品名"
    
  6. 查询用户接收内容:

    python scripts/distribution_database.py query-user --email "用户邮箱"
    
  7. 生成报告:

    python scripts/distribution_database.py report --output report.csv
    

您可以直接运行示例脚本来体验完整流程:

./scripts/example_database_usage.sh

这个系统能够帮助您:

  • 跟踪每个素材的分发状态
  • 记录哪些素材发给了哪些用户
  • 按产品、景点等条件查询分发情况
  • 生成全面的统计报告

所有代码都有详细注释,便于您理解和后续移交。如果需要任何修改或功能扩展,请随时告诉我。