performance update
This commit is contained in:
parent
39cf4f1691
commit
f4dcc1a03a
@ -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
|
||||||
|
@ -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'}:
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user