make function async

This commit is contained in:
phixxy 2024-09-05 18:43:40 -07:00
parent 71bb156d8b
commit 8756947298

View file

@ -1,6 +1,6 @@
import os
import subprocess
import logging
import asyncio
from discord.ext import commands, tasks
from cogs.base_cog.bot_base_cog import BotBaseCog
@ -12,7 +12,7 @@ class YoutubeDL(BotBaseCog):
self.setup(__class__.__name__)
self.check_for_downloads.start()
@commands.command()
''' @commands.command()
async def youtubedl(self, ctx):
try:
# Expecting the command format to be !youtubedl <url> <video|audio>
@ -42,8 +42,43 @@ class YoutubeDL(BotBaseCog):
except Exception as e:
#await ctx.send(f"Error: {e}")
await ctx.send("Usage: !youtubedl <url> <video|audio>")
await ctx.send("Usage: !youtubedl <url> <video|audio>")'''
@commands.command()
async def youtubedl(self, ctx):
try:
# Expecting the command format to be !youtubedl <url> <video|audio>
parts = ctx.message.content.split(" ")
if len(parts) < 3:
await ctx.send("Usage: !youtubedl <url> <video|audio>")
return
url = parts[1]
video_or_audio = parts[2]
# Create a subprocess
process = await asyncio.create_subprocess_exec(
"python3", "youtubedl.py", url, video_or_audio,
cwd="data/ytdl",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
# Write a message that the download has started
await ctx.send(f"Downloading {video_or_audio} from {url}...")
# Read stdout and stderr (non-blocking)
stdout, stderr = await process.communicate()
# Send the output back to the user
if stdout:
await ctx.send(f"std out: {stdout.decode('utf-8')}")
if stderr:
await ctx.send(f"std err: {stderr.decode('utf-8')}")
except Exception as e:
await ctx.send(f"Error: {e}")
#create a task
@tasks.loop(seconds=10)
async def check_for_downloads(self):