```shell script:scripts/example_database_usage.sh #!/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 ``` ```bash 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. **初始化数据库**: ```bash python scripts/distribution_database.py init ``` 2. **导入内容清单**: ```bash python scripts/distribution_database.py import-contents --file manifest.csv ``` 3. **导入用户数据**: ```bash python scripts/distribution_database.py import-users --file users.csv ``` 4. **导入分发记录**: ```bash python scripts/distribution_database.py import-distribution --file distribution.csv ``` 5. **查询内容状态**: ```bash python scripts/distribution_database.py query-content --product "产品名" ``` 6. **查询用户接收内容**: ```bash python scripts/distribution_database.py query-user --email "用户邮箱" ``` 7. **生成报告**: ```bash python scripts/distribution_database.py report --output report.csv ``` 您可以直接运行示例脚本来体验完整流程: ```bash ./scripts/example_database_usage.sh ``` 这个系统能够帮助您: - 跟踪每个素材的分发状态 - 记录哪些素材发给了哪些用户 - 按产品、景点等条件查询分发情况 - 生成全面的统计报告 所有代码都有详细注释,便于您理解和后续移交。如果需要任何修改或功能扩展,请随时告诉我。