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']
试试这个!
因此包含在此在线 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']
试试这个!