performance update
This commit is contained in:
parent
39cf4f1691
commit
f4dcc1a03a
@ -1,3 +1,4 @@
|
||||
aiohttp>=3.7.4,<4
|
||||
discord.py[voice]~=2.1.0
|
||||
youtube_dl~=2021.12.17
|
||||
yt-dlp~=2022.11.11
|
||||
|
@ -13,16 +13,20 @@ ResponseType: TypeAlias = list | dict | float | str | None
|
||||
|
||||
class Api:
|
||||
class MisusedApi(KeyError):
|
||||
def json(self) -> ResponseType:
|
||||
def json(self) -> dict:
|
||||
return {'error': list(map(str, self.args)), 'errormessage': str(self)}
|
||||
|
||||
class UnknownApi(MisusedApi):
|
||||
pass
|
||||
def json(self) -> dict:
|
||||
return super().json() | {'unknownapi': None}
|
||||
|
||||
class ExplicitFailure(MisusedApi):
|
||||
def __init__(self, explicit: Explicit) -> None:
|
||||
super().__init__(*explicit.args)
|
||||
|
||||
def json(self) -> dict:
|
||||
return super().json() | {'explicit': None}
|
||||
|
||||
def __init__(self, client: discord.Client, roles: dict[str, str]) -> None:
|
||||
self.client = client
|
||||
self.roles = roles
|
||||
@ -36,7 +40,8 @@ class Api:
|
||||
|
||||
class UserApi:
|
||||
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:
|
||||
self.pi = api
|
||||
@ -118,7 +123,8 @@ class UserApi:
|
||||
|
||||
class GuildApi(UserApi):
|
||||
class VoiceNotConnected(Api.MisusedApi):
|
||||
pass
|
||||
def json(self) -> dict:
|
||||
return super().json() | {'notconnected': None}
|
||||
|
||||
def __init__(self, api: UserApi, member: discord.Member) -> None:
|
||||
super().__init__(api.pi, api.request, member.id)
|
||||
@ -199,6 +205,8 @@ class MainApi(VoiceApi):
|
||||
return self.main.volume
|
||||
case {'type': 'playing'}:
|
||||
return self.vc.is_playing()
|
||||
case {'type': 'paused'}:
|
||||
return self.vc.is_paused()
|
||||
case {'type': 'queueformat'}:
|
||||
return await self.main.queue.format()
|
||||
case {'type': 'queuejson'}:
|
||||
|
@ -1,13 +1,11 @@
|
||||
import asyncio
|
||||
from concurrent.futures import ProcessPoolExecutor
|
||||
|
||||
from v6d2ctx.context import Benchmark
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
from v6d3music.utils.extract import extract
|
||||
|
||||
|
||||
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(
|
||||
pool,
|
||||
extract,
|
||||
|
@ -14,7 +14,6 @@ async def entries_for_url(url: str, tor: bool) -> AsyncIterable[
|
||||
ef = tor_extract
|
||||
info = await ef(
|
||||
{
|
||||
'playlistend': 128,
|
||||
'logtostderr': True
|
||||
},
|
||||
url,
|
||||
|
@ -1,10 +1,12 @@
|
||||
import discord.utils
|
||||
import youtube_dl
|
||||
import yt_dlp
|
||||
|
||||
|
||||
def extract(params: dict, url: str, kwargs: dict):
|
||||
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:
|
||||
extracted['entries'] = list(extracted['entries'])
|
||||
return extracted
|
||||
|
Loading…
Reference in New Issue
Block a user