"""测试:创建书籍 → 生成内容 → 生成音频""" import requests, json, time BASE = 'http://localhost:3000/api/book-generator/langgraph' # 1. 创建书籍 print('1. 创建书籍...') r = requests.post(f'{BASE}/books', json={ 'title': '测试3000字音频', 'description': 'CosyVoice 书籍音频测试', 'bookScale': '2000', 'totalChapters': 1 }) b = r.json()['data']['book'] bookId = b['id'] print(f' bookId={bookId}') # 2. 等大纲阶段完成 print('2. 等待大纲生成...') for _ in range(30): time.sleep(3) r = requests.get(f'{BASE}/books/{bookId}') stage = r.json()['data']['book']['genStage'] if stage not in ('draft', 'outlining'): print(f' 当前阶段: {stage}') break # 3. 用 debug 直接注入内容生成音频 print('3. 用debug注入内容并生成音频...') r = requests.post(f'{BASE}/debug/trigger-full', json={ 'bookId': bookId, 'voiceId': 'longyingling_v3', 'sampleText': ( '第一章 春之序曲\n\n' '春天来了,万物复苏。轻柔的东风拂过大地,带走了冬日的严寒。' '山坡上,嫩绿的小草破土而出,像是给大地铺上了一层柔软的地毯。' '远处的杏花开了,粉白的颜色在阳光下显得格外温柔。' '小溪解冻了,清澈的溪水哗啦啦地流淌,唱着欢快的歌。' '鸟儿们从南方飞回来了,在枝头跳跃鸣叫,仿佛在诉说旅途的见闻。' '农民伯伯扛着锄头下地了,翻新的泥土散发着特有的清香。' '孩子们在田野里奔跑,放风筝,欢笑声回荡在蓝天白云之间。' '一年之计在于春,这个时候播下的种子,到了秋天就会收获满满的果实。' '春天是希望的季节,是一切美好的开始。' '\n第二章 夏之热烈\n\n' '夏天来了,太阳像个大火球挂在天上,热辣辣地烤着大地。' '知了在树上不停地叫着,仿佛在说太热了太热了。' '池塘里的荷花开了,粉嫩的花瓣在碧绿的荷叶映衬下格外好看。' '蜻蜓立在荷花尖上,透明的翅膀在阳光下闪着光。' '傍晚时分,人们纷纷走出家门,在树荫下乘凉聊天。' '老人们摇着蒲扇,讲着古老的故事,孩子们围坐一旁听得入神。' '夜空中繁星点点,偶尔有流星划过,带走了人们心中最美好的愿望。' '夏天的雨说来就来,豆大的雨点噼里啪啦打在地上,' '转眼间又雨过天晴,天空中出现一道美丽的彩虹。' '夏天是热烈的,是奔放的,是生命最旺盛的季节。' '\n第三章 秋之收获\n\n' '秋天来了,天高云淡,金风送爽。田野里一片金黄,' '沉甸甸的稻穗低垂着头,等待着收割的季节。' '果园里硕果累累,红彤彤的苹果挂满枝头,' '黄澄澄的梨子压弯了枝条,到处洋溢着丰收的喜悦。' '树叶开始变黄,一片片飘落下来,像是金色的蝴蝶在空中起舞。' '南飞的大雁排成人字形,向温暖的南方飞去。' '丰收的田野里,机器的轰鸣声和农民们爽朗的笑声交织在一起。' '家家户户的院子里晒满了金灿灿的玉米和红艳艳的辣椒,' '那是用汗水换来的最美图画。' '桂花开了,满城飘香,那是秋天独有的味道。' '秋天是成熟的季节,是收获的季节,是感恩的季节。' ) }) print(f' trigger result: {r.json().get("message")}') # 4. 等待音频生成 print('4. 等待音频生成...') for _ in range(60): time.sleep(5) r = requests.get(f'{BASE}/books/{bookId}') chapters = r.json()['data']['book']['chapters'] if chapters: for c in chapters: stage = c.get('genStage', '') audio_url = c.get('audioUrl', '') if audio_url or stage == 'audio_completed': print(f' 章节ID={c["id"]} stage={stage} audioUrl={audio_url[:60] if audio_url else "无"}') # 检查是否全部完成 all_done = all(c.get('genStage') in ('audio_completed', 'video_completed') for c in chapters if c.get('genStage')) if all_done: print(' ✅ 全部章节音频生成完成!') break print(f' .', end='', flush=True)