Files
yuming cf40343c51
部署到群晖 / deploy (push) Failing after 10m45s
初始化 telegram-downloader 并接入群晖 CI/CD
2026-04-22 21:29:03 +08:00

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