|
import requests |
|
from pyrogram import Client, filters |
|
from Devine import app as Devine |
|
import time |
|
import asyncio |
|
from config import OWNER_ID |
|
|
|
CLOUDINARY_UPLOAD_URL = "https://api.cloudinary.com/v1_1/your_cloud_name/upload" |
|
CLOUD_NAME = "Untitled" |
|
API_KEY = "769593722143466" |
|
API_SECRET = "DztGFORQqYfBoxCdawh0g5jBRCg" |
|
MAX_FILE_SIZE_MB = 32 |
|
USER_UPLOAD_LIMIT = {} |
|
|
|
async def send_temp_message(message, text): |
|
reply = await message.reply(text) |
|
|
|
for i in range(3): |
|
await asyncio.sleep(0.3) |
|
updated_text = text + '.' * (i + 1) |
|
await reply.edit(updated_text) |
|
|
|
return reply |
|
|
|
async def upload_file(client, message, file_path): |
|
waiting_message = await send_temp_message(message, "ᴡᴀɪᴛ") |
|
|
|
start_time = time.time() |
|
|
|
with open(file_path, 'rb') as file: |
|
files = { |
|
"file": file, |
|
"api_key": API_KEY, |
|
"timestamp": int(time.time()), |
|
"signature": API_SECRET |
|
} |
|
response = requests.post(CLOUDINARY_UPLOAD_URL, data=files) |
|
|
|
upload_time = round(time.time() - start_time, 2) |
|
|
|
if response.status_code == 200: |
|
response_data = response.json() |
|
file_url = response_data["secure_url"] |
|
|
|
await waiting_message.edit(f"<b>ᴜᴘʟᴏᴀᴅᴇᴅ ᴛᴏ <a href='{file_url}' target='_blank'>Cloudinary</a> ɪɴ {upload_time} sᴇᴄᴏɴᴅs.</b>\n\n" |
|
f"<b>ᴄᴏᴘʏ ʟɪɴᴋ : <code>{file_url}</code></b> ") |
|
else: |
|
await waiting_message.edit("<b>ғᴀɪʟᴇᴅ ᴛᴏ ᴜᴘʟᴏᴀᴅ ᴛʜᴇ ғɪʟᴇ.</b>") |
|
|
|
async def handle_upload(client, message, target_message): |
|
user_id = message.from_user.id |
|
current_time = time.time() |
|
last_upload_time = USER_UPLOAD_LIMIT.get(user_id, 0) |
|
|
|
if current_time - last_upload_time < 10: |
|
await message.reply("<b>ʏᴏᴜ ᴀʀᴇ ʙᴇɪɴɢ ʀᴀᴛᴇ-ʟɪᴍɪᴛᴇᴅ. ᴛʀʏ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 10 sᴇᴄᴏɴᴅs.</b>") |
|
return |
|
|
|
USER_UPLOAD_LIMIT[user_id] = current_time |
|
|
|
file_size = (target_message.photo or target_message.video).file_size / (1024 * 1024) |
|
if file_size > MAX_FILE_SIZE_MB: |
|
await message.reply("<b>ғɪʟᴇ sɪᴢᴇ ᴇxᴄᴇᴇᴅs 32 ᴍʙ ʟɪᴍɪᴛ.</b>") |
|
else: |
|
file_path = await target_message.download() |
|
await upload_file(client, message, file_path) |
|
|
|
@Devine.on_message(filters.command("xtgm")) |
|
async def upload_command(client, message): |
|
if message.from_user.is_bot: |
|
return |
|
|
|
target_message = message.reply_to_message if message.reply_to_message else message |
|
media = target_message.photo or target_message.video |
|
|
|
if media: |
|
await handle_upload(client, message, target_message) |
|
else: |
|
await message.reply("<b>sᴇɴᴅ ᴏʀ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴘʜᴏᴛᴏ ᴏʀ ᴠɪᴅᴇᴏ ғᴏʀ ᴜᴘʟᴏᴀᴅ.</b>") |
|
|