import os import subprocess import logging from discord.ext import commands, tasks from cogs.base_cog.bot_base_cog import BotBaseCog class YoutubeDL(BotBaseCog): def __init__(self, bot): super().__init__(bot) self.setup(__class__.__name__) self.check_for_downloads.start() @commands.command() async def youtubedl(self, ctx): try: url = ctx.message.content.split(" ")[1] url = '"' + url + '"' video_or_audio = ctx.message.content.split(" ")[2] process = subprocess.Popen(["python3", "youtubedl.py", url, video_or_audio], cwd="data/ytdl", stdout=subprocess.PIPE, stderr=subprocess.PIPE) process.wait() await ctx.send(f"std out: {process.stdout.read()}, std err: {process.stderr.read()}") await ctx.send(f"Downloading {video_or_audio} from {url}...", suppress_embeds=True) except Exception as e: await ctx.send(f"Error: {e}") await ctx.send("Usage: !youtubedl ") #create a task @tasks.loop(seconds=10) async def check_for_downloads(self): for file in os.listdir("data/ytdl"): if file.endswith(".txt"): with open(f"data/ytdl/{file}", "r") as f: url = f.read() await self.bot.get_channel(544408659174883328).send(f"{url}") #os.remove(f"data/ytdl/{file}") async def setup(bot): await bot.add_cog(YoutubeDL(bot))