EX01 / VideoEncoder /plugins /encode_video.py
appniru2's picture
Sync from GitHub via hub-sync
11fa042 verified
Raw
History Blame Contribute Delete
3.7 kB
from pyrogram import Client, filters
from ..utils.helper import check_chat
from ..svcs.user_svc import add_user_if_new
from ..svcs.queue_svc import queue_svc
from ..svcs.encode_svc import start_encode_task
from ..core.cfg import cfg
@Client.on_message(filters.incoming & filters.private & (filters.video | filters.document))
async def encode_video_handler(app, message):
if message.document:
if message.document.mime_type not in cfg.VIDEO_MIMETYPES:
return
await add_user_if_new(app, message)
invite_links = []
for chat_id in cfg.EVERYONE_CHATS:
try:
chat = await app.get_chat(chat_id)
if chat.invite_link:
invite_links.append(f"• <a href='{chat.invite_link}'>{chat.title}</a>")
elif chat.username:
invite_links.append(f"• <a href='https://t.me/{chat.username}'>{chat.title}</a>")
except:
pass
if invite_links:
links_text = "\n".join(invite_links)
await message.reply(
"▸ <b>Encode</b>\n"
"Status: ● Group Only\n\n"
"<blockquote>⚠️ Encoding is only available in authorized groups.\n\n"
f"Join our group to encode videos:\n{links_text}\n\n"
"Use /settings to configure your encoding preferences here.</blockquote>",
disable_web_page_preview=True
)
else:
await message.reply(
"▸ <b>Encode</b>\n"
"Status: ● Group Only\n\n"
"<blockquote>⚠️ Encoding is only available in authorized groups.\n\n"
"Use /settings to configure your encoding preferences here.</blockquote>"
)
@Client.on_message(filters.command(['420p', '480p', '720p', '1080p', 'enc']))
async def quick_encode_handler(app, message):
if not await check_chat(message, chat='Both'):
return
if not message.reply_to_message:
await message.reply(
"▸ <b>Encode</b>\n"
"Status: ✗ Failed\n\n"
"<blockquote>Reply to a video with this command to encode it.</blockquote>"
)
return
reply = message.reply_to_message
if not (reply.video or (reply.document and reply.document.mime_type in cfg.VIDEO_MIMETYPES)):
await message.reply(
"▸ <b>Encode</b>\n"
"Status: ✗ Failed\n\n"
"<blockquote>The replied message is not a video.</blockquote>"
)
return
await add_user_if_new(app, message)
cmd = message.command[0].lower()
overrides = {}
if cmd in ['420p', '480p']:
overrides['resolution'] = '480'
elif cmd == '720p':
overrides['resolution'] = '720'
elif cmd == '1080p':
overrides['resolution'] = '1080'
if len(message.command) > 1:
custom_name = message.text.split(None, 1)[1].strip()
if custom_name:
if "{filename}" in custom_name:
overrides['rename_template'] = custom_name
else:
overrides['rename_template'] = custom_name + " {filename}"
await queue_svc.add(reply, 'tg', start_encode_task, overrides)
status_text = f"Resolution: {cmd.upper()}"
if 'rename_template' in overrides:
status_text += f"\nRename: {overrides['rename_template']}"
if cmd == 'enc':
rename_info = f"\nRename: {overrides['rename_template']}" if 'rename_template' in overrides else ""
await message.reply(f"▸ <b>Encode</b>\nStatus: ● Queued\nUsing your saved settings.{rename_info}")
else:
await message.reply(f"▸ <b>Encode</b>\nStatus: ● Queued\n{status_text}")