166 lines
5.5 KiB
Markdown
166 lines
5.5 KiB
Markdown
```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
|
||
```
|
||
|
||
这个系统能够帮助您:
|
||
- 跟踪每个素材的分发状态
|
||
- 记录哪些素材发给了哪些用户
|
||
- 按产品、景点等条件查询分发情况
|
||
- 生成全面的统计报告
|
||
|
||
所有代码都有详细注释,便于您理解和后续移交。如果需要任何修改或功能扩展,请随时告诉我。
|