5.5 KiB
5.5 KiB
#!/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数据库存储数据,不需要额外的服务器。
系统组成
-
distribution_database.py - 核心数据库管理脚本,功能包括:
- 初始化数据库和表结构
- 导入内容清单、用户数据和分发记录
- 查询内容分发状态
- 查询用户接收的内容
- 生成统计报告
-
example_database_usage.sh - 演示脚本,展示如何使用数据库功能
数据库结构
数据库包含三个主要表:
- contents - 存储所有素材信息(ID、路径、产品、景点等)
- users - 存储用户信息(邮箱、用户名)
- distributions - 记录分发情况(内容-用户关系、发送状态、批次)
使用方法
-
初始化数据库:
python scripts/distribution_database.py init -
导入内容清单:
python scripts/distribution_database.py import-contents --file manifest.csv -
导入用户数据:
python scripts/distribution_database.py import-users --file users.csv -
导入分发记录:
python scripts/distribution_database.py import-distribution --file distribution.csv -
查询内容状态:
python scripts/distribution_database.py query-content --product "产品名" -
查询用户接收内容:
python scripts/distribution_database.py query-user --email "用户邮箱" -
生成报告:
python scripts/distribution_database.py report --output report.csv
您可以直接运行示例脚本来体验完整流程:
./scripts/example_database_usage.sh
这个系统能够帮助您:
- 跟踪每个素材的分发状态
- 记录哪些素材发给了哪些用户
- 按产品、景点等条件查询分发情况
- 生成全面的统计报告
所有代码都有详细注释,便于您理解和后续移交。如果需要任何修改或功能扩展,请随时告诉我。