🔄 卡若AI 同步 2026-03-03 10:20 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个
This commit is contained in:
6
02_卡人(水)/水桥_平台对接/飞书管理/脚本/.feishu_tokens.json
Normal file
6
02_卡人(水)/水桥_平台对接/飞书管理/脚本/.feishu_tokens.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"access_token": "u-dTB8Oq8l5cwFnz.Mm7oowQlh3cbxghihiMGaJQg027gZ",
|
||||||
|
"refresh_token": "ur-eYivb2AhNfRozQiZ3WhpoGlh14b1ghoXPgGaUA0022hV",
|
||||||
|
"name": "飞书用户",
|
||||||
|
"auth_time": "2026-03-03T10:19:28.119191"
|
||||||
|
}
|
||||||
@@ -239,6 +239,24 @@ def token_status():
|
|||||||
'auth_time': USER_TOKENS.get('auth_time', '')
|
'auth_time': USER_TOKENS.get('auth_time', '')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/api/token/sync', methods=['POST', 'GET'])
|
||||||
|
def token_sync():
|
||||||
|
"""将当前内存中的 Token 写入 .feishu_tokens.json,供 feishu_wiki_create_doc 等脚本使用"""
|
||||||
|
if not USER_TOKENS.get('access_token') and not USER_TOKENS.get('refresh_token'):
|
||||||
|
return jsonify({'status': 'fail', 'msg': '无可用 Token,请先完成授权'}), 400
|
||||||
|
save_tokens()
|
||||||
|
return jsonify({'status': 'ok', 'msg': '已同步到 .feishu_tokens.json'})
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/api/token/export')
|
||||||
|
def token_export():
|
||||||
|
"""供本地脚本使用:导出当前 Token 到同一目录 .feishu_tokens.json(仅 localhost)"""
|
||||||
|
if not USER_TOKENS.get('access_token') and not USER_TOKENS.get('refresh_token'):
|
||||||
|
return jsonify({'status': 'fail', 'msg': '无可用 Token'}), 404
|
||||||
|
save_tokens()
|
||||||
|
return jsonify({k: v for k, v in USER_TOKENS.items() if k in ('access_token', 'refresh_token', 'name', 'auth_time')})
|
||||||
|
|
||||||
# ============== 云盘 ==============
|
# ============== 云盘 ==============
|
||||||
|
|
||||||
@app.route('/api/drive/files')
|
@app.route('/api/drive/files')
|
||||||
|
|||||||
@@ -77,8 +77,26 @@ def check_token_valid(token, parent_token):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _fetch_token_from_local_api():
|
||||||
|
"""当本地无 Token 文件时,尝试从已运行的 feishu_api (localhost:5050) 拉取并落盘"""
|
||||||
|
try:
|
||||||
|
r = requests.get("http://127.0.0.1:5050/api/token/export", timeout=2)
|
||||||
|
if r.status_code != 200:
|
||||||
|
return {}
|
||||||
|
data = r.json()
|
||||||
|
if not data.get("access_token") and not data.get("refresh_token"):
|
||||||
|
return {}
|
||||||
|
with open(CONFIG['TOKEN_FILE'], 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(data, f, ensure_ascii=False, indent=2)
|
||||||
|
return data
|
||||||
|
except Exception:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def get_token(parent_token):
|
def get_token(parent_token):
|
||||||
tokens = load_tokens()
|
tokens = load_tokens()
|
||||||
|
if not tokens and os.path.exists(CONFIG['TOKEN_FILE']) is False:
|
||||||
|
tokens = _fetch_token_from_local_api()
|
||||||
if tokens.get('access_token') and check_token_valid(tokens['access_token'], parent_token):
|
if tokens.get('access_token') and check_token_valid(tokens['access_token'], parent_token):
|
||||||
return tokens['access_token']
|
return tokens['access_token']
|
||||||
print("🔄 静默刷新 Token...")
|
print("🔄 静默刷新 Token...")
|
||||||
|
|||||||
56
02_卡人(水)/水桥_平台对接/飞书管理/脚本/读书笔记_上传到飞书.sh
Executable file
56
02_卡人(水)/水桥_平台对接/飞书管理/脚本/读书笔记_上传到飞书.sh
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 读书笔记上传到飞书:无 Token 时打开授权页,等待落盘后自动执行 5 篇上传
|
||||||
|
# 用法: bash 读书笔记_上传到飞书.sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
TOKEN_FILE="$SCRIPT_DIR/.feishu_tokens.json"
|
||||||
|
NOTE_DIR="/Users/karuo/Documents/个人/2、我写的日记/读书笔记"
|
||||||
|
JSON_DIR="/Users/karuo/Documents/卡若Ai的文件夹/导出/读书笔记_feishu_json"
|
||||||
|
PARENT="KNf7wA8Rki1NSdkkSIqcdFtTnWb"
|
||||||
|
PUBLISH="python3 $SCRIPT_DIR/feishu_article_unified_publish.py"
|
||||||
|
|
||||||
|
# 若本地无 token,尝试从本地 API 拉取
|
||||||
|
if [ ! -f "$TOKEN_FILE" ]; then
|
||||||
|
echo "📡 本地无 Token,尝试从 127.0.0.1:5050 拉取..."
|
||||||
|
PAYLOAD=$(curl -s -m 3 "http://127.0.0.1:5050/api/token/export" 2>/dev/null || true)
|
||||||
|
if echo "$PAYLOAD" | grep -q '"access_token"'; then
|
||||||
|
echo "$PAYLOAD" > "$TOKEN_FILE"
|
||||||
|
echo "✅ 已从本地 API 同步 Token 到 $TOKEN_FILE"
|
||||||
|
else
|
||||||
|
echo "⚠️ 需要先完成飞书授权。正在打开授权页..."
|
||||||
|
AUTH_URL=$(curl -s -m 3 "http://127.0.0.1:5050/api/auth/url" 2>/dev/null | python3 -c "import sys,json; print(json.load(sys.stdin).get('auth_url',''))")
|
||||||
|
if [ -n "$AUTH_URL" ]; then
|
||||||
|
open "$AUTH_URL"
|
||||||
|
echo "请在浏览器中完成授权,授权成功后本脚本将自动继续(等待最多 90 秒)..."
|
||||||
|
else
|
||||||
|
echo "请先启动飞书 API 服务: cd $SCRIPT_DIR && python3 feishu_api.py &"
|
||||||
|
echo "然后运行: python3 auto_log.py"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
for i in $(seq 1 90); do
|
||||||
|
sleep 1
|
||||||
|
if [ -f "$TOKEN_FILE" ]; then
|
||||||
|
echo "✅ Token 已落盘,继续上传"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "$i" -eq 90 ]; then
|
||||||
|
echo "❌ 等待超时,未检测到 Token 文件。请完成授权后重新运行本脚本。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$JSON_DIR"
|
||||||
|
|
||||||
|
echo "📤 开始上传 5 篇读书笔记到飞书节点 $PARENT ..."
|
||||||
|
|
||||||
|
$PUBLISH --parent "$PARENT" --title "卡若读书笔记:Dan Koe 如何在一天内彻底改造你的人生" --md "$NOTE_DIR/Dan_Koe_如何在一天内彻底改造你的人生_读书笔记.md" --json "$JSON_DIR/Dan_Koe.json" && echo " ✅ Dan Koe"
|
||||||
|
$PUBLISH --parent "$PARENT" --title "卡若读书笔记:纳瓦尔访谈|五行结构化" --md "$NOTE_DIR/纳瓦尔访谈_读书笔记.md" --json "$JSON_DIR/纳瓦尔.json" && echo " ✅ 纳瓦尔"
|
||||||
|
$PUBLISH --parent "$PARENT" --title "卡若读书笔记:曾仕强《易经》" --md "$NOTE_DIR/曾仕强_易经_读书笔记.md" --json "$JSON_DIR/曾仕强易经.json" && echo " ✅ 曾仕强易经"
|
||||||
|
$PUBLISH --parent "$PARENT" --title "卡若读书笔记:5000天后的世界 - 凯文凯利" --md "$NOTE_DIR/卡若读书笔记:5000天后的世界 - 凯文凯利.md" --json "$JSON_DIR/凯文凯利.json" && echo " ✅ 凯文凯利"
|
||||||
|
$PUBLISH --parent "$PARENT" --title "卡若读书笔记:盐铁之辩与AI之道" --md "$NOTE_DIR/卡若读书笔记:盐铁之辩与AI之道.md" --json "$JSON_DIR/盐铁之辩.json" && echo " ✅ 盐铁之辩"
|
||||||
|
|
||||||
|
echo "📌 全部上传完成。飞书节点: https://cunkebao.feishu.cn/wiki/$PARENT"
|
||||||
@@ -213,3 +213,4 @@
|
|||||||
| 2026-03-03 04:51:53 | 🔄 卡若AI 同步 2026-03-03 04:51 | 更新:金盾、运营中枢工作台 | 排除 >20MB: 14 个 |
|
| 2026-03-03 04:51:53 | 🔄 卡若AI 同步 2026-03-03 04:51 | 更新:金盾、运营中枢工作台 | 排除 >20MB: 14 个 |
|
||||||
| 2026-03-03 04:58:10 | 🔄 卡若AI 同步 2026-03-03 04:58 | 更新:Cursor规则、总索引与入口、运营中枢工作台 | 排除 >20MB: 14 个 |
|
| 2026-03-03 04:58:10 | 🔄 卡若AI 同步 2026-03-03 04:58 | 更新:Cursor规则、总索引与入口、运营中枢工作台 | 排除 >20MB: 14 个 |
|
||||||
| 2026-03-03 05:02:46 | 🔄 卡若AI 同步 2026-03-03 05:02 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 |
|
| 2026-03-03 05:02:46 | 🔄 卡若AI 同步 2026-03-03 05:02 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 |
|
||||||
|
| 2026-03-03 10:15:48 | 🔄 卡若AI 同步 2026-03-03 10:15 | 更新:水桥平台对接、卡木、火炬、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 14 个 |
|
||||||
|
|||||||
@@ -216,3 +216,4 @@
|
|||||||
| 2026-03-03 04:51:53 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 04:51 | 更新:金盾、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
| 2026-03-03 04:51:53 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 04:51 | 更新:金盾、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
||||||
| 2026-03-03 04:58:10 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 04:58 | 更新:Cursor规则、总索引与入口、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
| 2026-03-03 04:58:10 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 04:58 | 更新:Cursor规则、总索引与入口、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
||||||
| 2026-03-03 05:02:46 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 05:02 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
| 2026-03-03 05:02:46 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 05:02 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
||||||
|
| 2026-03-03 10:15:48 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-03 10:15 | 更新:水桥平台对接、卡木、火炬、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 14 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |
|
||||||
|
|||||||
Reference in New Issue
Block a user