v6d3music/v6d3music/core/create_ytaudio.py
2022-06-20 00:35:12 +03:00

33 lines
1.0 KiB
Python

import string
from typing import Any, Optional
from v6d2ctx.context import Context, Explicit, escape
from v6d3music.core.real_url import real_url
from v6d3music.core.ytaudio import YTAudio
from v6d3music.utils.assert_admin import assert_admin
from v6d3music.utils.options_for_effects import options_for_effects
from v6d3music.utils.presets import allowed_effects
async def create_ytaudio(
ctx: Context, info: dict[str, Any], effects: Optional[str], already_read: int, tor: bool
) -> YTAudio:
if effects:
if effects not in allowed_effects:
assert_admin(ctx.member)
if not set(effects) <= set(string.ascii_letters + string.digits + '*,=+-/()|.^:_'):
raise Explicit('malformed effects')
options = options_for_effects(effects)
else:
options = None
return YTAudio(
await real_url(info['url'], False, tor),
info['url'],
f'{escape(info.get("title", "unknown"))} `Rby` {ctx.member}',
options,
ctx.member,
already_read,
tor
)