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"ᴜᴘʟᴏᴀᴅᴇᴅ ᴛᴏ Cloudinary ɪɴ {upload_time} sᴇᴄᴏɴᴅs.\n\n"
f"ᴄᴏᴘʏ ʟɪɴᴋ : {file_url}
")
else:
await waiting_message.edit("ғᴀɪʟᴇᴅ ᴛᴏ ᴜᴘʟᴏᴀᴅ ᴛʜᴇ ғɪʟᴇ.")
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("ʏᴏᴜ ᴀʀᴇ ʙᴇɪɴɢ ʀᴀᴛᴇ-ʟɪᴍɪᴛᴇᴅ. ᴛʀʏ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 10 sᴇᴄᴏɴᴅs.")
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("ғɪʟᴇ sɪᴢᴇ ᴇxᴄᴇᴇᴅs 32 ᴍʙ ʟɪᴍɪᴛ.")
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("sᴇɴᴅ ᴏʀ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴘʜᴏᴛᴏ ᴏʀ ᴠɪᴅᴇᴏ ғᴏʀ ᴜᴘʟᴏᴀᴅ.")