async def ff_mpeg_trim_cmd(event): if event.fwd_from: return if not os.path.exists(FF_MPEG_DOWN_LOAD_MEDIA_PATH): if not os.path.isdir(Config.TMP_DOWNLOAD_DIRECTORY): os.makedirs(Config.TMP_DOWNLOAD_DIRECTORY) if event.reply_to_msg_id: start = datetime.now() reply_message = await event.get_reply_message() try: c_time = time.time() downloaded_file_name = await borg.download_media( reply_message, FF_MPEG_DOWN_LOAD_MEDIA_PATH, progress_callback=lambda d, t: asyncio.get_event_loop(). create_task( progress(d, t, event, c_time, "trying to download")), ) except Exception as e: # pylint:disable=C0103,W0703 await event.edit(str(e)) else: end = datetime.now() ms = (end - start).seconds await event.edit("Downloaded to `{}` in {} seconds.".format( downloaded_file_name, ms)) else: await event.edit("Reply to a Telegram media file") else: await event.edit( f"a media file already exists in path. Please remove the media and try again!\n`.exec rm {FF_MPEG_DOWN_LOAD_MEDIA_PATH}`" )
async def _(event): if event.fwd_from: return input_str = event.pattern_match.group(1) reply_message = await event.get_reply_message() if reply_message is None: await event.edit( "reply to a media to use the `nfc` operation.\nInspired by @FileConverterBot" ) return await event.edit("trying to download media file, to my local") try: start = datetime.now() # c_time = time.ctime() downloaded_file_name = await borg.download_media( reply_message, Config.TMP_DOWNLOAD_DIRECTORY, progress_callback=lambda d, t: asyncio.get_event_loop().create_task( progress(d, t, event, c_time, "trying to download") ), ) except Exception as e: # pylint:disable=C0103,W0703 await event.edit(str(e)) else: end = datetime.now() ms = (end - start).seconds await event.edit( "Downloaded to `{}` in {} seconds.".format(downloaded_file_name, ms) ) new_required_file_name = "" new_required_file_caption = "" command_to_run = [] force_document = False voice_note = False supports_streaming = False if input_str == "voice": new_required_file_caption = "NLFC_" + str(round(time.time())) + ".opus" new_required_file_name = ( Config.TMP_DOWNLOAD_DIRECTORY + "/" + new_required_file_caption ) command_to_run = [ "ffmpeg", "-i", downloaded_file_name, "-map", "0:a", "-codec:a", "libopus", "-b:a", "100k", "-vbr", "on", new_required_file_name, ] voice_note = True supports_streaming = True elif input_str == "mp3": new_required_file_caption = "NLFC_" + str(round(time.time())) + ".mp3" new_required_file_name = ( Config.TMP_DOWNLOAD_DIRECTORY + "/" + new_required_file_caption ) command_to_run = [ "ffmpeg", "-i", downloaded_file_name, "-vn", new_required_file_name, ] voice_note = False supports_streaming = True else: await event.edit("not supported") os.remove(downloaded_file_name) return logger.info(command_to_run) # TODO: re-write create_subprocess_exec 😉 process = await asyncio.create_subprocess_exec( *command_to_run, # stdout must a pipe to be accessible as process.stdout stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, ) # Wait for the subprocess to finish stdout, stderr = await process.communicate() stderr.decode().strip() stdout.decode().strip() os.remove(downloaded_file_name) if os.path.exists(new_required_file_name): end_two = datetime.now() await borg.send_file( entity=event.chat_id, file=new_required_file_name, caption=new_required_file_caption, allow_cache=False, silent=True, force_document=force_document, voice_note=voice_note, supports_streaming=supports_streaming, progress_callback=lambda d, t: asyncio.get_event_loop().create_task( progress(d, t, event, c_time, "trying to upload") ), ) ms_two = (end_two - end).seconds os.remove(new_required_file_name) await event.edit(f"converted in {ms_two} seconds")
async def ff_mpeg_trim_cmd(event): if event.fwd_from: return if not os.path.exists(FF_MPEG_DOWN_LOAD_MEDIA_PATH): await event.edit( f"a media file needs to be downloaded, and saved to the following path: `{FF_MPEG_DOWN_LOAD_MEDIA_PATH}`" ) return current_message_text = event.raw_text cmt = current_message_text.split(" ") logger.info(cmt) start = datetime.now() if len(cmt) == 3: # output should be video cmd, start_time, end_time = cmt o = await cult_small_video( FF_MPEG_DOWN_LOAD_MEDIA_PATH, Config.TMP_DOWNLOAD_DIRECTORY, start_time, end_time, ) logger.info(o) try: c_time = time.time() await borg.send_file( event.chat_id, o, caption=" ".join(cmt[1:]), force_document=False, supports_streaming=True, allow_cache=False, # reply_to=event.message.id, progress_callback=lambda d, t: asyncio.get_event_loop(). create_task(progress(d, t, event, c_time, "trying to upload")), ) os.remove(o) except Exception as e: logger.info(str(e)) elif len(cmt) == 2: # output should be image cmd, start_time = cmt o = await take_screen_shot(FF_MPEG_DOWN_LOAD_MEDIA_PATH, Config.TMP_DOWNLOAD_DIRECTORY, start_time) logger.info(o) try: c_time = time.time() await borg.send_file( event.chat_id, o, caption=" ".join(cmt[1:]), force_document=True, # supports_streaming=True, allow_cache=False, # reply_to=event.message.id, progress_callback=lambda d, t: asyncio.get_event_loop(). create_task(progress(d, t, event, c_time, "trying to upload")), ) os.remove(o) except Exception as e: logger.info(str(e)) else: await event.edit("RTFM") return end = datetime.now() ms = (end - start).seconds await event.edit(f"Completed Process in {ms} seconds")