如何自动删除AssemblyAI转录文件?需保留最新10条(按ID/日期)
实现AssemblyAI转录文件定期清理(保留最新10条)
核心思路
先拉取服务器上所有转录记录,优先按转录ID排序(假设ID随创建顺序递增)保留最新10条;若ID排序不可行,则切换为按创建日期排序,最后批量删除剩余的转录文件。
实现步骤与代码
1. 依赖准备
安装AssemblyAI官方Python SDK:
pip install assemblyai
2. 完整清理脚本
创建assemblyai_cleanup.py文件,内容如下:
import assemblyai as aai import os from datetime import datetime # 配置API密钥(建议通过环境变量设置,避免硬编码) aai.settings.api_key = os.environ.get("ASSEMBLYAI_API_KEY") client = aai.TranscriptClient() def get_all_transcripts(): """拉取所有转录记录,处理分页""" transcripts = [] page = 1 while True: try: response = client.get_transcripts(page=page) if not response.transcripts: break transcripts.extend(response.transcripts) page += 1 except Exception as e: print(f"拉取第{page}页转录记录失败: {str(e)}") break return transcripts def filter_transcripts_to_delete(transcripts): """筛选出需要删除的转录记录(保留最新10条)""" if not transcripts: return [] # 优先尝试按转录ID排序(假设ID随创建顺序递增) try: sorted_transcripts = sorted(transcripts, key=lambda t: t.id, reverse=True) print("按转录ID排序完成") except: # 若ID排序失败,切换为按创建时间排序 sorted_transcripts = sorted(transcripts, key=lambda t: t.created, reverse=True) print("按创建时间排序完成") # 保留前10条,剩余标记为待删除 return sorted_transcripts[10:] def delete_transcripts(transcripts): """批量删除指定转录记录""" delete_count = 0 fail_count = 0 for transcript in transcripts: try: client.delete_transcript(transcript.id) delete_count += 1 print(f"[{datetime.now()}] 已删除转录ID: {transcript.id}") except Exception as e: fail_count += 1 print(f"[{datetime.now()}] 删除转录ID {transcript.id}失败: {str(e)}") print(f"\n清理完成:成功删除{delete_count}条,失败{fail_count}条") if __name__ == "__main__": all_transcripts = get_all_transcripts() print(f"共拉取到{len(all_transcripts)}条转录记录") to_delete = filter_transcripts_to_delete(all_transcripts) print(f"待删除记录数: {len(to_delete)}") if to_delete: delete_transcripts(to_delete) else: print("没有需要删除的记录")
3. 定期运行配置
Linux/macOS(使用cron)
- 打开cron任务编辑:
crontab -e
- 添加定时任务(例如每天凌晨2点运行):
0 2 * * * /usr/bin/python3 /absolute/path/to/assemblyai_cleanup.py >> /var/log/assemblyai_cleanup.log 2>&1
注意替换脚本的绝对路径,日志路径可自定义
Windows(任务计划程序)
- 创建基本任务,设置触发时间(如每天凌晨2点)
- 操作选择“启动程序”,程序路径选你的Python.exe,参数填脚本的绝对路径
注意事项
- 确保API密钥拥有删除转录文件的权限
- 建议先在测试环境运行脚本,验证筛选逻辑是否符合预期
- 脚本包含基础错误处理,可根据需求扩展日志功能(比如写入文件而非仅打印)
内容的提问来源于stack exchange,提问作者user1522247
相关产品推荐
相关产品推荐

