sparkytron3000/cogs/ytdl.py

42 lines
1.5 KiB
Python
Raw Normal View History

2024-09-04 19:27:14 -07:00
import os
import subprocess
2024-09-04 22:19:03 -07:00
import logging
2024-09-04 19:27:14 -07:00
from discord.ext import commands, tasks
2024-09-04 19:27:14 -07:00
from cogs.base_cog.bot_base_cog import BotBaseCog
class YoutubeDL(BotBaseCog):
def __init__(self, bot):
super().__init__(bot)
self.setup(__class__.__name__)
2024-09-04 20:41:24 -07:00
self.check_for_downloads.start()
2024-09-04 19:27:14 -07:00
@commands.command()
async def youtubedl(self, ctx):
try:
2024-09-04 22:07:06 -07:00
url = ctx.message.content.split(" ")[1]
2024-09-04 19:31:11 -07:00
url = '"' + url + '"'
2024-09-04 22:07:06 -07:00
video_or_audio = ctx.message.content.split(" ")[2]
process = subprocess.Popen(["python3", "data/ytdl/youtubedl.py", url, video_or_audio])
2024-09-04 22:18:46 -07:00
process.wait()
2024-09-04 22:22:22 -07:00
logging.error(process.stdout.read())
logging.error(process.stderr.read())
logging.error(process.returncode)
await ctx.send(f"Downloading {video_or_audio} from {url}...", suppress_embeds=True)
2024-09-04 22:23:58 -07:00
except Exception as e:
await ctx.send(f"Error: {e}")
2024-09-04 19:27:14 -07:00
await ctx.send("Usage: !youtubedl <url> <video|audio>")
#create a task
@tasks.loop(seconds=10)
async def check_for_downloads(self):
for file in os.listdir("data/ytdl"):
if file.endswith(".txt"):
2024-09-04 20:35:52 -07:00
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}")
2024-09-04 19:27:14 -07:00
async def setup(bot):
await bot.add_cog(YoutubeDL(bot))