204 lines
5.9 KiB
Python
204 lines
5.9 KiB
Python
import datetime
|
|
import platform
|
|
|
|
from pyrogram.file_id import PHOTO_TYPES, FileType
|
|
|
|
|
|
class Chat:
|
|
def __init__(self, chat_id, chat_title):
|
|
self.id = chat_id
|
|
self.title = chat_title
|
|
|
|
|
|
class Date:
|
|
def __init__(self, date):
|
|
self.date = date
|
|
|
|
def strftime(self, str) -> str:
|
|
return ""
|
|
|
|
|
|
class MockMessage:
|
|
def __init__(self, **kwargs):
|
|
self.id = kwargs.get("id")
|
|
self.media = kwargs.get("media")
|
|
self.audio = kwargs.get("audio", None)
|
|
self.document = kwargs.get("document", None)
|
|
self.photo = kwargs.get("photo", None)
|
|
self.video = kwargs.get("video", None)
|
|
self.voice = kwargs.get("voice", None)
|
|
self.video_note = kwargs.get("video_note", None)
|
|
self.media_group_id = kwargs.get("media_group_id", None)
|
|
self.caption = kwargs.get("caption", None)
|
|
self.text = kwargs.get("text", None)
|
|
self.empty = kwargs.get("empty", False)
|
|
self.from_user = kwargs.get("from_user", None)
|
|
self.reply_to_message_id = kwargs.get("reply_to_message_id", None)
|
|
self.caption_entities = kwargs.get("caption_entities", None)
|
|
|
|
if kwargs.get("dis_chat") == None:
|
|
self.chat = Chat(
|
|
kwargs.get("chat_id", None), kwargs.get("chat_title", None)
|
|
)
|
|
else:
|
|
self.chat = kwargs.get("chat", None)
|
|
self.date: datetime = None
|
|
if kwargs.get("date") != None:
|
|
self.date = kwargs["date"]
|
|
|
|
|
|
class MockUser:
|
|
def __init__(self, **kwargs):
|
|
self.id = kwargs.get("id", 0)
|
|
self.username = kwargs.get("username", "")
|
|
|
|
|
|
class MockAudio:
|
|
def __init__(self, **kwargs):
|
|
self.file_name = kwargs["file_name"]
|
|
self.mime_type = kwargs["mime_type"]
|
|
self.file_id = "AUDIO"
|
|
if kwargs.get("file_size"):
|
|
self.file_size = kwargs["file_size"]
|
|
else:
|
|
self.file_size = 1024
|
|
|
|
|
|
class MockDocument:
|
|
def __init__(self, **kwargs):
|
|
self.file_name = kwargs["file_name"]
|
|
self.mime_type = kwargs["mime_type"]
|
|
self.file_id = "DOCUMENT"
|
|
if kwargs.get("file_size"):
|
|
self.file_size = kwargs["file_size"]
|
|
else:
|
|
self.file_size = 1024
|
|
|
|
|
|
class MockPhoto:
|
|
def __init__(self, **kwargs):
|
|
self.date = kwargs["date"]
|
|
self.file_unique_id = kwargs["file_unique_id"]
|
|
self.file_id = "PHOTO"
|
|
if kwargs.get("file_size"):
|
|
self.file_size = kwargs["file_size"]
|
|
else:
|
|
self.file_size = 1024
|
|
|
|
|
|
class MockVoice:
|
|
def __init__(self, **kwargs):
|
|
self.mime_type = kwargs["mime_type"]
|
|
self.date = kwargs["date"]
|
|
self.file_id = "VOICE"
|
|
if kwargs.get("file_size"):
|
|
self.file_size = kwargs["file_size"]
|
|
else:
|
|
self.file_size = 1024
|
|
|
|
|
|
class MockVideo:
|
|
def __init__(self, **kwargs):
|
|
self.file_name = kwargs.get("file_name")
|
|
self.mime_type = kwargs["mime_type"]
|
|
self.file_id = "VIDEO"
|
|
if kwargs.get("file_size"):
|
|
self.file_size = kwargs["file_size"]
|
|
else:
|
|
self.file_size = 1024
|
|
|
|
if kwargs.get("width"):
|
|
self.width = kwargs["width"]
|
|
else:
|
|
self.width = 1920
|
|
|
|
if kwargs.get("height"):
|
|
self.height = kwargs["height"]
|
|
else:
|
|
self.height = 1080
|
|
|
|
if kwargs.get("duration"):
|
|
self.duration = kwargs["duration"]
|
|
else:
|
|
self.duration = 1024
|
|
|
|
|
|
class MockVideoNote:
|
|
def __init__(self, **kwargs):
|
|
self.mime_type = kwargs["mime_type"]
|
|
self.file_id = "VIDEO_NOTE"
|
|
self.date = kwargs["date"]
|
|
|
|
|
|
def platform_generic_path(_path: str) -> str:
|
|
platform_specific_path: str = _path
|
|
if platform.system() == "Windows":
|
|
platform_specific_path = platform_specific_path.replace("/", "\\")
|
|
return platform_specific_path
|
|
|
|
|
|
def get_file_type(file_id: str):
|
|
if file_id == "THUMBNAIL":
|
|
return FileType.THUMBNAIL
|
|
elif file_id == "CHAT_PHOTO":
|
|
return FileType.CHAT_PHOTO
|
|
elif file_id == "PHOTO":
|
|
return FileType.PHOTO
|
|
elif file_id == "VOICE":
|
|
return FileType.VOICE
|
|
elif file_id == "VIDEO":
|
|
return FileType.VIDEO
|
|
elif file_id == "DOCUMENT":
|
|
return FileType.DOCUMENT
|
|
elif file_id == "ENCRYPTED":
|
|
return FileType.ENCRYPTED
|
|
elif file_id == "TEMP":
|
|
return FileType.TEMP
|
|
elif file_id == "STICKER":
|
|
return FileType.STICKER
|
|
elif file_id == "AUDIO":
|
|
return FileType.AUDIO
|
|
elif file_id == "ANIMATION":
|
|
return FileType.ANIMATION
|
|
elif file_id == "ENCRYPTED_THUMBNAIL":
|
|
return FileType.ENCRYPTED_THUMBNAIL
|
|
elif file_id == "WALLPAPER":
|
|
return FileType.WALLPAPER
|
|
elif file_id == "VIDEO_NOTE":
|
|
return FileType.VIDEO_NOTE
|
|
elif file_id == "SECURE_RAW":
|
|
return FileType.SECURE_RAW
|
|
elif file_id == "SECURE":
|
|
return FileType.SECURE
|
|
elif file_id == "BACKGROUND":
|
|
return FileType.BACKGROUND
|
|
elif file_id == "DOCUMENT_AS_FILE":
|
|
return FileType.DOCUMENT_AS_FILE
|
|
|
|
raise ValueError("error file id!")
|
|
|
|
|
|
def get_extension(file_id: str, mime_type: str, dot: bool = True):
|
|
file_type = get_file_type(file_id=file_id)
|
|
guessed_extension = ""
|
|
|
|
if file_type in PHOTO_TYPES:
|
|
extension = "jpg"
|
|
elif file_type == FileType.VOICE:
|
|
extension = guessed_extension or "ogg"
|
|
elif file_type in (FileType.VIDEO, FileType.ANIMATION, FileType.VIDEO_NOTE):
|
|
extension = guessed_extension or "mp4"
|
|
elif file_type == FileType.DOCUMENT:
|
|
extension = guessed_extension or "zip"
|
|
elif file_type == FileType.STICKER:
|
|
extension = guessed_extension or "webp"
|
|
elif file_type == FileType.AUDIO:
|
|
extension = guessed_extension or "mp3"
|
|
else:
|
|
extension = "unknown"
|
|
|
|
if dot:
|
|
extension = "." + extension
|
|
|
|
return extension
|