download_upload.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from os import remove
  2. from os.path import isfile
  3. from time import ctime, time
  4. from pyrogram import filters
  5. from pyrogram.types import Message
  6. from wbb import SUDOERS, USERBOT_PREFIX, app2
  7. from wbb.core.sections import section
  8. from wbb.modules.userbot import add_task, eor, rm_task, tasks
  9. from wbb.utils.downloader import download
  10. from wbb.utils.functions import progress
  11. @app2.on_message(
  12. filters.user(SUDOERS)
  13. & filters.command("download", prefixes=USERBOT_PREFIX)
  14. )
  15. async def download_func(_, message: Message):
  16. reply = message.reply_to_message
  17. start = task_id = int(time())
  18. if reply:
  19. m = await eor(message, text="Downloading...")
  20. task = await add_task(
  21. reply.download,
  22. task_id=task_id,
  23. progress=progress,
  24. progress_args=(start, task_id, m),
  25. )
  26. await task
  27. await rm_task(task_id)
  28. elapsed = int(time() - start)
  29. body = {
  30. "Started": ctime(start),
  31. "Time": f"{elapsed}s",
  32. }
  33. return await eor(m, text=section("Downloaded", body))
  34. text = message.text
  35. if len(text.split()) < 2:
  36. return await eor(message, text="Invalid Arguments")
  37. url = text.split(None, 1)[1]
  38. task_id = int(time())
  39. body = {
  40. "Started": ctime(start),
  41. "Task ID": task_id,
  42. "URL": url,
  43. }
  44. m = await eor(
  45. message,
  46. text=section("Downloading", body, underline=False),
  47. disable_web_page_preview=True,
  48. )
  49. try:
  50. await download(
  51. url,
  52. progress_func=(progress, [start, task_id, m]),
  53. task_id=task_id,
  54. )
  55. except Exception as e:
  56. return await eor(m, text=f"**Error:** `{str(e)}`")
  57. elapsed = int(time() - start)
  58. body = {
  59. "Started": ctime(start),
  60. "Took": f"{elapsed}s",
  61. "Task ID": task_id,
  62. }
  63. await eor(m, text=section("Downloaded", body, underline=False))
  64. @app2.on_message(
  65. filters.user(SUDOERS)
  66. & filters.command("upload", prefixes=USERBOT_PREFIX)
  67. )
  68. async def upload_func(_, message: Message):
  69. if len(message.text.split()) != 2:
  70. return await eor(message, text="Invalid Arguments")
  71. url_or_path = message.text.split(None, 1)[1]
  72. m = await eor(message, text="Uploading..")
  73. start = task_id = int(time())
  74. async def upload_file(path):
  75. task = await add_task(
  76. message.reply_document,
  77. task_id,
  78. path,
  79. progress=progress,
  80. progress_args=(start, task_id, m),
  81. )
  82. await task
  83. await rm_task(task_id)
  84. elapsed = int(time() - start)
  85. return await eor(m, text=f"Uploaded in {elapsed}s")
  86. try:
  87. if isfile(url_or_path):
  88. return await upload_file(url_or_path)
  89. path = await download(
  90. url_or_path,
  91. task_id=task_id,
  92. progress_func=(progress, [start, task_id, m]),
  93. )
  94. return await upload_file(path)
  95. except Exception as e:
  96. return await eor(m, text=f"**Error:** `{str(e)}`")