performance update

This commit is contained in:
AF 2022-12-20 02:18:49 +00:00
parent 39cf4f1691
commit f4dcc1a03a
5 changed files with 19 additions and 11 deletions

View File

@ -1,3 +1,4 @@
aiohttp>=3.7.4,<4 aiohttp>=3.7.4,<4
discord.py[voice]~=2.1.0 discord.py[voice]~=2.1.0
youtube_dl~=2021.12.17 youtube_dl~=2021.12.17
yt-dlp~=2022.11.11

View File

@ -13,16 +13,20 @@ ResponseType: TypeAlias = list | dict | float | str | None
class Api: class Api:
class MisusedApi(KeyError): class MisusedApi(KeyError):
def json(self) -> ResponseType: def json(self) -> dict:
return {'error': list(map(str, self.args)), 'errormessage': str(self)} return {'error': list(map(str, self.args)), 'errormessage': str(self)}
class UnknownApi(MisusedApi): class UnknownApi(MisusedApi):
pass def json(self) -> dict:
return super().json() | {'unknownapi': None}
class ExplicitFailure(MisusedApi): class ExplicitFailure(MisusedApi):
def __init__(self, explicit: Explicit) -> None: def __init__(self, explicit: Explicit) -> None:
super().__init__(*explicit.args) super().__init__(*explicit.args)
def json(self) -> dict:
return super().json() | {'explicit': None}
def __init__(self, client: discord.Client, roles: dict[str, str]) -> None: def __init__(self, client: discord.Client, roles: dict[str, str]) -> None:
self.client = client self.client = client
self.roles = roles self.roles = roles
@ -36,7 +40,8 @@ class Api:
class UserApi: class UserApi:
class UnknownMember(Api.MisusedApi): class UnknownMember(Api.MisusedApi):
pass def json(self) -> dict:
return super().json() | {'unknownmember': None}
def __init__(self, api: Api, request: dict, user_id: int) -> None: def __init__(self, api: Api, request: dict, user_id: int) -> None:
self.pi = api self.pi = api
@ -118,7 +123,8 @@ class UserApi:
class GuildApi(UserApi): class GuildApi(UserApi):
class VoiceNotConnected(Api.MisusedApi): class VoiceNotConnected(Api.MisusedApi):
pass def json(self) -> dict:
return super().json() | {'notconnected': None}
def __init__(self, api: UserApi, member: discord.Member) -> None: def __init__(self, api: UserApi, member: discord.Member) -> None:
super().__init__(api.pi, api.request, member.id) super().__init__(api.pi, api.request, member.id)
@ -199,6 +205,8 @@ class MainApi(VoiceApi):
return self.main.volume return self.main.volume
case {'type': 'playing'}: case {'type': 'playing'}:
return self.vc.is_playing() return self.vc.is_playing()
case {'type': 'paused'}:
return self.vc.is_paused()
case {'type': 'queueformat'}: case {'type': 'queueformat'}:
return await self.main.queue.format() return await self.main.queue.format()
case {'type': 'queuejson'}: case {'type': 'queuejson'}:

View File

@ -1,13 +1,11 @@
import asyncio import asyncio
from concurrent.futures import ProcessPoolExecutor from concurrent.futures import ThreadPoolExecutor
from v6d2ctx.context import Benchmark
from v6d3music.utils.extract import extract from v6d3music.utils.extract import extract
async def aextract(params: dict, url: str, **kwargs): async def aextract(params: dict, url: str, **kwargs):
with ProcessPoolExecutor() as pool: with ThreadPoolExecutor() as pool:
return await asyncio.get_running_loop().run_in_executor( return await asyncio.get_running_loop().run_in_executor(
pool, pool,
extract, extract,

View File

@ -14,7 +14,6 @@ async def entries_for_url(url: str, tor: bool) -> AsyncIterable[
ef = tor_extract ef = tor_extract
info = await ef( info = await ef(
{ {
'playlistend': 128,
'logtostderr': True 'logtostderr': True
}, },
url, url,

View File

@ -1,10 +1,12 @@
import discord.utils import discord.utils
import youtube_dl import yt_dlp
def extract(params: dict, url: str, kwargs: dict): def extract(params: dict, url: str, kwargs: dict):
try: try:
extracted = youtube_dl.YoutubeDL(params=params).extract_info(url, **kwargs) extracted = yt_dlp.YoutubeDL(params=params).extract_info(url, **kwargs)
if not isinstance(extracted, dict):
raise TypeError
if 'entries' in extracted: if 'entries' in extracted:
extracted['entries'] = list(extracted['entries']) extracted['entries'] = list(extracted['entries'])
return extracted return extracted