我查了一下也是利用 subprocess 模块来捕获 yt-dlp 的输出。
import subprocess
import io
def get_subtitles(video_link):
# 运行yt-dlp命令并捕获输出
result = subprocess.run(
['yt-dlp', '--write-subs', '--sub-langs', 'en', '--skip-download', '-o', '-', video_link],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
# 检查命令是否成功执行
if result.returncode != 0:
raise Exception(f"yt-dlp错误: {result.stderr}")
# 创建一个内存文件对象
subtitle_content = io.StringIO(result.stdout)
return subtitle_content
video_link = 'https://www.bilibili.com/video/BV1c4411e77t/' # 替换为你的Bilibili视频链接
subtitles = get_subtitles(video_link)
# 示例:如何使用字幕内容
print(subtitles.getvalue())
|