You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动删除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)

  1. 打开cron任务编辑:
crontab -e
  1. 添加定时任务(例如每天凌晨2点运行):
0 2 * * * /usr/bin/python3 /absolute/path/to/assemblyai_cleanup.py >> /var/log/assemblyai_cleanup.log 2>&1

注意替换脚本的绝对路径,日志路径可自定义

Windows(任务计划程序)

  1. 创建基本任务,设置触发时间(如每天凌晨2点)
  2. 操作选择“启动程序”,程序路径选你的Python.exe,参数填脚本的绝对路径

注意事项

  • 确保API密钥拥有删除转录文件的权限
  • 建议先在测试环境运行脚本,验证筛选逻辑是否符合预期
  • 脚本包含基础错误处理,可根据需求扩展日志功能(比如写入文件而非仅打印)

内容的提问来源于stack exchange,提问作者user1522247

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:30:12