diff --git a/main.py b/main.py index 2609d1e..26fd3f3 100644 --- a/main.py +++ b/main.py @@ -32,6 +32,43 @@ youtubeUrlRegex = "https?:\/\/(www\.)?(youtu|youtube)\.(com|be)" def is_a_youtube_url(url: str): return bool(re.match(youtubeUrlRegex, url)) +youtube_dl.utils.bug_reports_message = lambda: '' + +ytdl_format_options = { + 'format': 'bestaudio/best', + 'restrictfilenames': True, + 'noplaylist': True, + 'nocheckcertificate': True, + 'ignoreerrors': False, + 'logtostderr': False, + 'quiet': True, + 'no_warnings': True, + 'default_search': 'auto', + 'source_address': '0.0.0.0' # bind to ipv4 since ipv6 addresses cause issues sometimes +} + +ffmpeg_options = { + 'options': '-vn' +} + +ytdl = youtube_dl.YoutubeDL(ytdl_format_options) + +class YTDLSource(discord.PCMVolumeTransformer): + def __init__(self, source, *, data, volume=0.5): + super().__init__(source, volume) + self.data = data + self.title = data.get('title') + self.url = "" + + @classmethod + async def from_url(cls, url, *, loop=None, stream=False): + loop = loop or asyncio.get_event_loop() + data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream)) + if 'entries' in data: + # take first item from a playlist + data = data['entries'][0] + filename = data['title'] if stream else ytdl.prepare_filename(data) + return filename def random_playing_gif(): gifList = ["https://media.tenor.com/Ra6rkhDtYPwAAAAd/anime-dj.gif",