- 后端: users表新增VIP字段, 4个VIP API (purchase/status/profile/members) - 后端: hot接口改按user_tracks阅读量排序 - 后端: orders表支持vip产品类型, migrate新增vip_fields迁移 - 小程序「我的」: 推广中心改为我的收益, 头像VIP标识, VIP入口卡片 - 小程序「我的」: 最近阅读显示真实章节名称 - 小程序首页: 去掉内容概览, 新增创业老板排行(4列网格) - 小程序首页: 精选推荐从hot接口获取, goToRead增加track记录 - 新增页面: VIP详情页, 会员详情页 - 开发文档精简为10个标准目录, 创建SKILL.md, 需求日志规范化 Co-authored-by: Cursor <cursoragent@cursor.com>
43 lines
1.4 KiB
Bash
Executable File
43 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
||
# Soul 第9章文章上传脚本:写好文章后直接上传,id 已存在则更新(不重复)
|
||
# 用法: ./scripts/upload_soul_article.sh <文章md文件路径>
|
||
# 例: ./scripts/upload_soul_article.sh "/Users/karuo/Documents/个人/2、我写的书/《一场soul的创业实验》/第四篇|真实的赚钱/第9章|我在Soul上亲访的赚钱案例/9.18 第105场|创业社群、直播带货与程序员.md"
|
||
|
||
set -e
|
||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
FILE="${1:?请提供文章 md 文件路径}"
|
||
|
||
if [[ ! -f "$FILE" ]]; then
|
||
echo "错误: 文件不存在: $FILE"
|
||
exit 1
|
||
fi
|
||
|
||
# 从文件名提取 id,如 9.18 第105场|xxx.md -> 9.18
|
||
BASENAME=$(basename "$FILE" .md)
|
||
ID=$(echo "$BASENAME" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/')
|
||
if [[ ! "$ID" =~ ^[0-9]+\.[0-9]+$ ]]; then
|
||
echo "错误: 无法从文件名提取 id,格式应为: 9.xx 第X场|标题.md"
|
||
exit 1
|
||
fi
|
||
|
||
# 从第一行 # 9.xx 第X场|标题 提取 title
|
||
TITLE=$(head -1 "$FILE" | sed 's/^# [[:space:]]*//')
|
||
if [[ -z "$TITLE" ]]; then
|
||
TITLE="$BASENAME"
|
||
fi
|
||
|
||
echo "上传: id=$ID title=$TITLE"
|
||
python3 "$ROOT/content_upload.py" \
|
||
--id "$ID" \
|
||
--title "$TITLE" \
|
||
--content-file "$FILE" \
|
||
--part part-4 \
|
||
--chapter chapter-9 \
|
||
--price 1.0
|
||
|
||
# 上传成功后,按海报格式发到飞书群
|
||
if [[ $? -eq 0 ]]; then
|
||
echo "发海报到飞书..."
|
||
python3 "$ROOT/scripts/send_poster_to_feishu.py" "$FILE" 2>/dev/null || true
|
||
fi
|