33 lines
1.0 KiB
Python
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
|
|
)
|