Вы можете попробовать обработать данные и загрузить, если длина видео меньше или равна определенному значению:
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']
Попробуйте это!