bay.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import os
  2. import requests
  3. import aiohttp
  4. import aiofiles
  5. from wbb import app, SUDOERS
  6. from pyrogram import filters
  7. from random import randint
  8. from wbb.core.decorators.errors import capture_err
  9. __MODULE__ = "BAYFILES"
  10. __HELP__ = """/url [URL] To upload a url to bayfiles. [SUDO ONLY]
  11. /tg To Upload a telegram file to bayfiles. [SUDO ONLY]"""
  12. @app.on_message(filters.command("url") & filters.user(SUDOERS))
  13. @capture_err
  14. async def url(_, message):
  15. if len(message.command) != 2:
  16. await message.reply_text("/url [url]")
  17. return
  18. m = await message.reply_text("Downloading")
  19. lenk = message.text.split(None, 1)[1]
  20. try:
  21. filename = await download(lenk)
  22. files = {'file': open(filename, 'rb')}
  23. await m.edit("Uploading....")
  24. r = requests.post("https://api.bayfiles.com/upload", files=files)
  25. text = r.json()
  26. output = f"""
  27. **status:** `{text['status']}`
  28. **link:** {text['data']['file']['url']['full']}
  29. **id:** `{text['data']['file']['metadata']['id']}`
  30. **name:** `{text['data']['file']['metadata']['name']}`
  31. **size:** `{text['data']['file']['metadata']['size']['readable']}`"""
  32. await m.edit(output)
  33. os.remove(filename)
  34. except Exception as e:
  35. print(str(e))
  36. await m.edit(str(e))
  37. return
  38. @app.on_message(filters.command("tg") & filters.user(SUDOERS))
  39. @capture_err
  40. async def tg(_, message):
  41. if not message.reply_to_message:
  42. await message.reply_text("Reply To A File With /tg To Upload")
  43. return
  44. if not message.reply_to_message.media:
  45. await message.reply_text("Reply To A File With /tg To Upload")
  46. return
  47. m = await message.reply_text("Downloading Document.")
  48. fn = await message.reply_to_message.download()
  49. try:
  50. files = {'file': open(fn, 'rb')}
  51. await m.edit("Uploading....")
  52. r = requests.post("https://api.bayfiles.com/upload", files=files)
  53. text = r.json()
  54. output = f"""
  55. **Status:** `{text['status']}`
  56. **Link:** {text['data']['file']['url']['full']}
  57. **ID:** `{text['data']['file']['metadata']['id']}`
  58. **Name:** `{text['data']['file']['metadata']['name']}`
  59. **Size:** `{text['data']['file']['metadata']['size']['readable']}`"""
  60. await m.edit(output)
  61. os.remove(fn)
  62. except Exception as e:
  63. print(str(e))
  64. await m.edit(str(e))
  65. return
  66. async def download(url):
  67. ext = url.split(".")[-1]
  68. filename = str(randint(1000, 9999)) + "." + ext
  69. async with aiohttp.ClientSession() as session:
  70. async with session.get(url) as resp:
  71. if resp.status == 200:
  72. f = await aiofiles.open(filename, mode='wb')
  73. await f.write(await resp.read())
  74. await f.close()
  75. return filename