ai_member_xiaobian/scripts/write_sheets.py
2026-05-27 08:10:02 +08:00

93 lines
4.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""Update L5-01 + create L5-02 sheets."""
import json, subprocess
S = "BQansBM0eh42xgtaO3OckqDCnTe"
C = "/root/.openclaw/credentials/xiaobian/config.json"
def token():
aid = subprocess.run(["jq","-r",".apps[0].appId",C],capture_output=True,text=True).stdout.strip()
asec = subprocess.run(["jq","-r",".apps[0].appSecret",C],capture_output=True,text=True).stdout.strip()
r = subprocess.run(["curl","-s","-X","POST",
"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",
"-H","Content-Type: application/json",
"-d",json.dumps({"app_id":aid,"app_secret":asec})],
capture_output=True,text=True).stdout
return json.loads(r)["tenant_access_token"]
def api(m,u,d=None):
t = token()
a = ["curl","-s","-X",m,u,"-H",f"Authorization: Bearer {t}","-H","Content-Type: application/json"]
if d: a.extend(["-d",json.dumps(d,ensure_ascii=False)])
return json.loads(subprocess.run(a,capture_output=True,text=True).stdout)
# === STEP 1: UPDATE 段① ===
r = api("GET",f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{S}/values/OpBte!A1:D69")
rows = r["data"]["valueRange"]["values"]
print(f"READ 段①: {len(rows)} rows")
# Changes:
# 1. Replace rows 7-16 (idx 6-15) with new 6-row opening
new_open = [
["","","Ben","Whoa! It is like a secret base!"],
["","","Sue","A secret base? Ben, your mouth is wide open!"],
["","","Ben","I can not help it! It is fantastic!"],
["","","Vicky","Look. The blue lines go to that big ball."],
["","","May","What a beautiful place."],
["中互动","","User","He is right. What a fantastic place!"],
]
new_rows = rows[:7] + new_open + rows[16:]
# 2. Fix slope/steep
for rw in new_rows:
t = rw[3] if len(rw)>3 and rw[3] else ""
if t and ("slope" in t or "steep" in t):
old = rw[3]
rw[3] = t.replace("The slope is too steep.","It can not go down.")
print(f"FIXED: {old} -> {rw[3]}")
payload = {"valueRange":{"range":f"OpBte!A1:D{len(new_rows)}","values":new_rows}}
wr = api("PUT",f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{S}/values",payload)
print(f"UPDATE 段①: {wr.get('code')} rows={len(new_rows)}")
# === STEP 2: CREATE 段② ===
cr = api("POST",f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{S}/sheets_batch_update",
{"requests":[{"addSheet":{"properties":{"title":"段② 妈妈的怀抱"}}}]})
sid2 = cr["data"]["replies"][0]["addSheet"]["properties"]["sheetId"]
print(f"CREATED 段② sheet: {sid2}")
# === STEP 3: WRITE 段② ===
seg2 = [
["类型","剧情描述","角色名","编剧台词"],
["TL","【场景】地下空间·竖井层\n斜坡通道的尽头,巨大的圆形竖井展开在眼前。\n竖井入口被巨型球体堵住——球体表面布满圆形凹槽每个都和一颗Roball大小完全匹配。","",""],
["TL","Roballs围着球体兴奋打转。一颗Roball滚到凹槽前轻轻跳了进去——完美嵌合。凹槽发出蓝光。","",""],
["","更多Roballs跟着跳进自己的位置。球体上的光点一个个亮起——像点亮的星星。","",""],
["","","Ben","They all have a home!"],
["","","Sue","Each one in its own spot."],
["","","May","What a beautiful sight."],
["","","Vicky","Everything has a place here."],
["","所有Roballs都嵌进凹槽。球体现在是蓝光点组成的满月。","",""],
["","","Gaia","At the end of the day, everyone comes home."],
["TL","【特效】Gaia举起双臂。球体上的光点同时暴亮——能量从每个凹槽汇入Gaia脚下。\n一个巨大的半透明防护罩从平台升起,向上展开,笼罩整个地下空间。","",""],
["TL","沙尘暴扑下来——打在防护罩上,沙子无声滑落。内部平静如止水。","",""],
["","","Ben","Whoa! The sand can not get in!"],
["","","Sue","We are... inside a bubble?"],
["","","Vicky","Not a bubble. A shield."],
["","","May","I feel so safe. Like in mom's arms."],
["","","Ben","It is fantastic!"],
["中互动","","User","This is fantastic. We are all safe here."],
["","Gaia缓缓放下手臂。防护罩保持稳定柔和的蓝光照在每个人脸上。","",""],
["","","Vicky","At the end of the day, we are all safe."],
["中互动","","User","At the end of the day, we are home."],
["TL","【转场】防护罩下的地下空间平静而温暖。\n沙尘暴仍在远处呼啸——但这里,就像躺在妈妈的怀抱里。","",""],
]
payload2 = {"valueRange":{"range":f"{sid2}!A1:D{len(seg2)}","values":seg2}}
w2 = api("PUT",f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{S}/values",payload2)
print(f"WRITE 段②: {w2.get('code')} rows={len(seg2)-1}")
# Verify
v = api("GET",f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{S}/values/{sid2}!A1:D5")
print("VERIFY 段② header:")
for rw in v["data"]["valueRange"]["values"]:
print(f" {rw[0] if rw else ''} | {rw[3] if len(rw)>3 else ''}")