From 3719fc69b5debca2deb02805c9e1c582a62b76a2 Mon Sep 17 00:00:00 2001 From: ErrorNoInternet Date: Wed, 5 Feb 2025 21:51:45 -0500 Subject: [PATCH] refactor(youtubedl): use CustomAudioSource as hint for PCMVolumeTransformer --- youtubedl.py | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/youtubedl.py b/youtubedl.py index 001e2d3..9233985 100644 --- a/youtubedl.py +++ b/youtubedl.py @@ -12,30 +12,6 @@ from constants import BAR_LENGTH, EMBED_COLOR, YTDL_OPTIONS ytdl = yt_dlp.YoutubeDL(YTDL_OPTIONS) -class PCMVolumeTransformer(disnake.AudioSource): - def __init__(self, original: disnake.AudioSource, volume: float = 1.0) -> None: - if original.is_opus(): - raise disnake.ClientException("AudioSource must not be Opus encoded.") - - self.original = original - self.volume = volume - - @property - def volume(self) -> float: - return self._volume - - @volume.setter - def volume(self, value: float) -> None: - self._volume = max(value, 0.0) - - def cleanup(self) -> None: - self.original.cleanup() - - def read(self) -> bytes: - ret = self.original.read() - return audioop.mul(ret, 2, self._volume) - - class CustomAudioSource(disnake.AudioSource): def __init__(self, source): self._source = source @@ -56,6 +32,30 @@ class CustomAudioSource(disnake.AudioSource): return self.read_count * 0.02 +class PCMVolumeTransformer(disnake.AudioSource): + def __init__(self, original: CustomAudioSource, volume: float = 1.0) -> None: + if original.is_opus(): + raise disnake.ClientException("AudioSource must not be Opus encoded.") + + self.original = original + self.volume = volume + + @property + def volume(self) -> float: + return self._volume + + @volume.setter + def volume(self, value: float) -> None: + self._volume = max(value, 0.0) + + def cleanup(self) -> None: + self.original.cleanup() + + def read(self) -> bytes: + ret = self.original.read() + return audioop.mul(ret, 2, self._volume) + + class YTDLSource(PCMVolumeTransformer): def __init__( self, source: CustomAudioSource, *, data: dict[str, Any], volume: float = 0.5