From 307b95ebeb6c75365528800607bf1ab68fb7a252 Mon Sep 17 00:00:00 2001 From: nex Date: Mon, 15 May 2023 18:48:19 +0100 Subject: [PATCH] Add the option to compress audio --- cogs/other.py | 74 +++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/cogs/other.py b/cogs/other.py index eef78c7..797fbb1 100644 --- a/cogs/other.py +++ b/cogs/other.py @@ -813,7 +813,7 @@ class OtherCog(commands.Cog): f"\\* URL: <{friendly_url}>\n" f"\\* Load time: {fetch_time:.2f}ms\n" f"\\* Screenshot render time: {screenshot_time:.2f}ms\n" - f"\\* Total time: {(fetch_time + screenshot_time):.2f}ms\n" + f"\\* Total time: {(fetch_time + screenshot_time):.2f}ms\n" + ( '* Probability of being scat or something else horrifying: 100%' if ctx.user.id == 1019233057519177778 else '' @@ -864,6 +864,7 @@ class OtherCog(commands.Cog): autocomplete=format_autocomplete, default="" ) = "", + extract_audio: bool = False, upload_log: bool = False, compress_if_possible: bool = False ): @@ -980,6 +981,7 @@ class OtherCog(commands.Cog): "paths": paths, "outtmpl": f"{ctx.user.id}-%(title).50s.%(ext)s", "trim_file_name": 128, + "extractaudio": extract_audio, } ) as downloader: try: @@ -1017,42 +1019,43 @@ class OtherCog(commands.Cog): continue st = file.stat().st_size COMPRESS_FAILED = False - if compress_if_possible and file.suffix in (".mp4", ".mkv", ".mov"): - await ctx.edit( - embed=discord.Embed( - title="Compressing...", - description="File name: `%s`\nThis will take a long time." % file.name, - colour=discord.Colour.blurple() - ) - ) - target = file.with_name(file.name + '.compressed' + file.suffix) - ffmpeg_command = [ - "ffmpeg", - "-hide_banner", - "-i", - str(file), - "-crf", - "30", - "-preset", - "slow", - str(target) - ] - - try: - await self.bot.loop.run_in_executor( - None, - partial( - subprocess.run, - ffmpeg_command, - check=True + if st / 1024 / 1024 >= MAX_SIZE_MB or st >= BYTES_REMAINING: + if compress_if_possible and file.suffix in (".mp4", ".mkv", ".mov"): + await ctx.edit( + embed=discord.Embed( + title="Compressing...", + description="File name: `%s`\nThis will take a long time." % file.name, + colour=discord.Colour.blurple() ) ) - except subprocess.CalledProcessError as e: - COMPRESS_FAILED = True - else: - file = target - st = file.stat().st_size - if st / 1024 / 1024 >= MAX_SIZE_MB or st >= BYTES_REMAINING: + target = file.with_name(file.name + '.compressed' + file.suffix) + ffmpeg_command = [ + "ffmpeg", + "-hide_banner", + "-i", + str(file), + "-crf", + "30", + "-preset", + "fast", + str(target) + ] + + try: + await self.bot.loop.run_in_executor( + None, + partial( + subprocess.run, + ffmpeg_command, + check=True + ) + ) + except subprocess.CalledProcessError: + COMPRESS_FAILED = True + else: + file = target + st = file.stat().st_size + units = ["B", "KB", "MB", "GB", "TB"] st_r = st while st_r > 1024: @@ -1083,6 +1086,7 @@ class OtherCog(commands.Cog): await ctx.channel.trigger_typing() embed.description = _desc await ctx.edit(embed=embed, files=files) + await ctx.send() async def bgtask(): await asyncio.sleep(120.0)