鱼C论坛

 找回密码
 立即注册
查看: 130|回复: 4

[Python] 怎么把yt-dlp -o 1.srt 这种本地字幕文件 直接存入内存文件中?

[复制链接]
发表于 2024-6-5 15:38:20 | 显示全部楼层 |阅读模式
5鱼币
os.system(f'yt-dlp --write-subs --sub-langs 'en'  --skip-download -o 1.srt {video_link}')  这命令将把字幕写入本地文件1.srt里


怎么样把字幕内容直接写入 一个内存文件(用  io.StringIO ?)中呢?(就是越过先存到本地,再从本地读入到内存这一步)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-5 16:15:40 | 显示全部楼层
我查了一下也是利用 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())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-6-5 17:05:36 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-6-5 16:15
我查了一下也是利用 subprocess 模块来捕获 yt-dlp 的输出。

是空的,取不到。

python能在运行时模拟一个内存盘给临时文件用吗?  有没有这种模块呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-5 23:21:06 | 显示全部楼层
blackantt 发表于 2024-6-5 17:05
是空的,取不到。

python能在运行时模拟一个内存盘给临时文件用吗?  有没有这种模块呢?

确保提供的链接可以正确获取字幕文件哦,我 DEMO 中是随便填写的 URL。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-6-6 07:34:54 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-6-5 23:21
确保提供的链接可以正确获取字幕文件哦,我 DEMO 中是随便填写的 URL。

subbug.png

确实是空的,并且会产生一个删不掉的本地文件  -.en-GB.vtt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-24 01:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表