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

Discord.py and youtube_dl: looking for video length before download

因此包含在此在线 script (Non-existent) 中,我试图找出将在下载之前下载的 video/audio 的长度。注释包含在脚本中。

我的问题:如何在下载为音频之前找到视频的长度?

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

对不起,如果我不能说得更好。

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

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']

试试这个!