Untitled
unknown
plain_text
3 years ago
12 kB
11
Indexable
#shit
from hachoir.metadata import extractMetadata
from hachoir.parser import createParser
#end shit
from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton
import asyncio, time, os, re
from pyrogram.enums import MessageMediaType
from pyrogram.errors import exceptions
from .. import Bot, bot, bot as Drone, API_ID, API_HASH, userbot
from main.plugins.progress import progress_for_pyrogram
from main.plugins.helpers import screenshot
#fucking login
from pyrogram.errors import (
SessionPasswordNeeded, FloodWait,
PhoneNumberInvalid, ApiIdInvalid,
PhoneCodeInvalid, PhoneCodeExpired
)
#end fucking login
from pyrogram import Client, filters
from pyrogram.errors import ChannelBanned, ChannelInvalid, ChannelPrivate, ChatIdInvalid, ChatInvalid
#from ethon.pyfunc import video_metadata
from telethon import events
def thumbnail(sender):
if os.path.exists(f'{sender}.jpg'):
return f'{sender}.jpg'
else:
return None
async def check(userbot, client, link):
msg_id = int(link.split("/")[-1])
if 't.me/c/' in link:
try:
chat = int('-100' + str(link.split("/")[-2]))
await userbot.get_messages(chat, msg_id)
return True, None
except ValueError:
return False, "Error 601"
except Exception as e:
return False, f"`{str(e)}`"
else:
try:
chat = str(link.split("/")[-2])
await client.get_messages(chat, msg_id)
return True, None
except Exception as e:
return False, f"{str(e)}"
async def get_msg(userbot, client, sender, edit_id, msg_link, i):
edit = ""
chat = ""
msg_id = int(msg_link.split("/")[-1]) + int(i)
if 't.me/c/' in msg_link:
chat = int('-100' + str(msg_link.split("/")[-2]))
try:
msg = await userbot.get_messages(chat, msg_id)
if msg.media:
if msg.media == MessageMediaType.WEB_PAGE:
edit = await client.edit_message_text(sender, edit_id, "Forwarding...")
await client.send_message(sender, msg.text.markdown)
await edit.delete()
return
if not msg.media:
if msg.text:
edit = await client.edit_message_text(sender, edit_id, "Forwarding..")
await client.send_message(sender, msg.text.markdown)
await edit.delete()
return
if msg.empty or msg.service or msg.dice or msg.location:
edit = await client.edit_message_text(sender, edit_id, "Passing message...")
#await client.send_message(sender, msg.text.markdown)
await edit.delete()
return
edit = await client.edit_message_text(sender, edit_id, "📥 Starting Download")
file = await userbot.download_media(
msg,
progress=progress_for_pyrogram,
progress_args=(
client,
"**Downloading:**\n",
edit,
time.time()
)
)
await edit.edit('📤 Uploading...')
#caption = str(file)
#f msg.caption is not None:
# caption = msg.caption
caption = msg.caption
caption_entities=msg.caption_entities
#if str(file).split(".")[-1] in ['mkv', 'mp4', 'webm']:
if msg.video or str(file).split(".")[-1] in ['mkv', 'mp4', 'webm', 'mov', 'MOV']:
if str(file).split(".")[-1] in ['webm', 'mkv']:
path = str(file).split(".")[0] + ".mp4"
os.rename(file, path)
file = str(file).split(".")[0] + ".mp4"
#data = video_metadata(file)
metadata = extractMetadata(createParser(file))
duration = 0
if metadata.has("duration"):
duration = metadata.get('duration').seconds
width = 0
height = 0
#duration = data["duration"]
thumb_path = await screenshot(file, duration, sender)
await client.send_video(
chat_id=sender,
video=file,
caption=caption,
caption_entities=caption_entities,
supports_streaming=True,
duration=duration,
thumb=thumb_path,
progress=progress_for_pyrogram,
progress_args=(
client,
f'**Uploading {caption}**\n',
edit,
time.time()
)
)
try:
os.remove(file)
except:
pass
"""
elif msg.photo:
await edit.edit(f"📷 Uploading {caption}")
await bot.send_file(sender, file, caption=caption)
"""
try:
os.remove(file)
except:
pass
elif msg.audio:
await edit.edit(f"Uploading {caption}.")
await client.send_audio(sender, file, caption=caption, caption_entities=caption_entities)
await edit.delete()
try:
os.remove(file)
except:
pass
else:
thumb_path=thumbnail(sender)
await client.send_document(
sender,
file,
caption=caption,
caption_entities=caption_entities,
thumb=thumb_path,
progress=progress_for_pyrogram,
progress_args=(
client,
f'**Uploading {caption}...**\n',
edit,
time.time()
)
)
await edit.delete()
except (ChannelBanned, ChannelInvalid, ChannelPrivate, ChatIdInvalid, ChatInvalid) as e:
await client.edit_message_text(sender, edit_id, f"Error: {str(e)}")
return
except exceptions.bad_request_400.MessageNotModified:
pass
try:
os.remove(file)
except:
pass
except Exception as e:
await client.edit_message_text(sender, edit_id, f'Somethhing went wrong while downloading `{msg_link}` error is {str(e)}')
await client.send_message("🧭 Trying alt method...")
await client.send_document(sender, file, caption=caption, caption_entities=caption_entities, thumb=thumb_path, progress=progress_for_pyrogram, progress_args=(client,'**Uploading Document...**\n', edit, time.time()))
await asyncio.sleep(2)
try:
os.remove(file)
except:
pass
return
else:
edit = await client.edit_message_text(sender, edit_id, "Forwarding....")
chat = msg_link.split("/")[-2]
try:
await client.copy_message(int(sender), chat, msg_id)
except:
try:
await get_pmsg(userbot, bot, sender, msg_link, edit)
except Exception as e:
await client.send_message("Something Went Wrong,\nError is {str(e)}")
await edit.delete()
##########################Public group#############################
async def get_pmsg(userbot, client, sender, msg_link, edit):
chat = ""
msg_id = int(msg_link.split("/")[-1])
if 't.me/' in msg_link and not 't.me/c' in msg_link:
#st, r = check_timer(sender, process, timer)
#if st == False:
#return await edit.edit(r)
chat = msg_link.split("/")[-2]
try:
msg = await userbot.get_messages(chat, msg_id)
if msg.media:
if msg.media == MessageMediaType.WEB_PAGE:
edit = await client.edit_message_text(sender, edit_id, "⚡")
await client.send_message(sender, msg.text.markdown)
await edit.delete()
return
if not msg.media:
if msg.text:
#edit = await client.edit_message_text(sender, edit_id, "⏳")
await client.send_message(sender, msg.text.markdown)
await edit.delete()
return
if msg.media in [MessageMediaType.SERVICE, MessageMediaType.EMPTY, MessageMediaType.DICE, MessageMediaType.LOCATION]:
edit = await client.edit_message_text(sender, edit_id, "This message doesn't exist.")
return
edit = await edit.edit('Processing...')
#end
file = await userbot.download_media(
msg,
progress=progress_for_pyrogram,
progress_args=(
userbot,
"**Downloading:**\n",
edit,
time.time()
)
)
await edit.edit('UploadinG...')
caption = str(file)
if msg.caption is not None:
caption = msg.caption
if str(file).split(".")[-1] in ['mkv', 'mp4', 'webm']:
if str(file).split(".")[-1] in ['webm', 'mkv']:
path = str(file).split(".")[0] + ".mp4"
os.rename(file, path)
file = str(file).split(".")[0] + ".mp4"
data = video_metadata(file)
duration = data["duration"]
thumb_path = await screenshot(file, duration/2, sender)
await Bot.send_video(
chat_id=sender,
video=file,
caption=caption,
supports_streaming=True,
duration=duration,
thumb=thumb_path,
progress=progress_for_pyrogram,
progress_args=(
client,
'**Uploading:**\n',
edit,
time.time()
)
)
elif str(file).split(".")[-1] in ['jpg', 'jpeg', 'png', 'webp']:
await edit.edit("Uploading image file...")
await Bot.send_photo(sender, file, caption=caption)
await edit.delete()
# await set_timer(client, sender, process, timer)
#for audio
elif str(file).split(".")[-1] in ['mp3', 'ogg', 'wav', 'm4a', 'Flac', 'AAC']:
await edit.edit("Uploading Audio File...")
await Bot.send_audio(sender, file, caption=caption)
await edit.delete()
# await set_timer(client, sender, process, timer)
else:
await Bot.send_document(
sender,
file,
caption=caption,
progress=progress_for_pyrogram,
progress_args=(
client,
'<b><u>Uploading...</b></u>\n',
edit,
time.time()
)
)
await edit.delete()
#await set_timer(client, sender, process, timer)
except Exception as e:
await edit.edit(F'ERROR: {str(e)}')
return
else:
await Bot.send_message(event.chat.id, "🥺 Something unexpected occurred, please let me know.")Editor is loading...