Discord.py和youtube_dl:下载前先查找视频长度

时间:2019-06-20 18:28:57

标签: python discord discord.py-rewrite

因此包含在此在线script (Non-existent)中,我试图先确定要下载的视频/音频的长度。注释包含在脚本中。

我的问题:在下载视频作为音频之前,如何确定视频的长度?

请不要使用或提及repl.it的任何部分。我使用IDLE python 3.7.3,而此部分位于PC上的脚本中,可以运行我的机器人。

对不起,如果我说不出更好的话。

1 个答案:

答案 0 :(得分:0)

如果视频长度小于或等于某个值,您可以尝试处理数据然后下载:

class AudioTooLongError(commands.CommandError): pass

@classmethod
async def from_url(cls, url, *, loop=None, stream=False):
    loop = loop or asyncio.get_event_loop()
    to_run = functools.partial(ytdl.extract_info, url=url, download=False)
    data = await loop.run_in_executor(None, to_run)

    if 'entries' in data:
        # take first item from a playlist
        data = data['entries'][0]

    if data['duration'] > 3600:
        # Forbid downloading of sources more than 1 hour long.
        raise AudioTooLongError

    if not stream:
        try: data = ytdl.process_ie_result(data)
        except PermissionError: pass
        source = ytdl.prepare_filename(data)
        return cls(discord.FFmpegPCMAudio(source), data=data, requester=ctx.author)
    return data['url']

尝试一下!