diff --git a/post_parser.py b/post_parser.py index ce45110..dacb82d 100644 --- a/post_parser.py +++ b/post_parser.py @@ -147,27 +147,28 @@ class PostParser: base_url = Config['pyrogram_bridge_url'] if message.media: - file_id = self._get_file_id(message) - print(file_id) - if file_id: + file_unique_id = self._get_file_unique_id(message) + print(file_unique_id) + if file_unique_id: + url = f"{base_url}/media/{message.chat.username}/{message.id}/{file_unique_id}" html_content.append(f'
') if message.media in [MessageMediaType.PHOTO, MessageMediaType.DOCUMENT]: - html_content.append(f'') + html_content.append(f'') elif message.media == MessageMediaType.VIDEO: - html_content.append(f'') + html_content.append(f'') elif message.media == MessageMediaType.ANIMATION: - html_content.append(f'') + html_content.append(f'') elif message.media == MessageMediaType.VIDEO_NOTE: - html_content.append(f'') + html_content.append(f'') elif message.media == MessageMediaType.AUDIO: mime_type = getattr(message.audio, 'mime_type', 'audio/mpeg') - html_content.append(f'') + html_content.append(f'') elif message.media == MessageMediaType.VOICE: mime_type = getattr(message.voice, 'mime_type', 'audio/ogg') - html_content.append(f'') + html_content.append(f'') elif message.media == MessageMediaType.STICKER: emoji = getattr(message.sticker, 'emoji', '') - html_content.append(f'Sticker {emoji}') + html_content.append(f'Sticker {emoji}') html_content.append('
') @@ -221,11 +222,12 @@ class PostParser: base_url = Config['pyrogram_bridge_url'] try: if photo := getattr(webpage, "photo", None): - if file_id := getattr(photo, "file_unique_id", None): + if file_unique_id := getattr(photo, "file_unique_id", None): + url = f"{base_url}/media/{webpage.chat.username}/{webpage.id}/{file_unique_id}" return ( f'
' f'' - f'' + f'' f'
' ) return None @@ -275,7 +277,7 @@ class PostParser: logger.error(f"poll_parsing_error: {str(e)}") return '
[Error displaying poll]
' - def _get_file_id(self, message: Message) -> Union[str, None]: + def _get_file_unique_id(self, message: Message) -> Union[str, None]: try: media_mapping = { MessageMediaType.PHOTO: lambda m: m.photo.file_unique_id, diff --git a/telegram_client.py b/telegram_client.py new file mode 100644 index 0000000..970f311 --- /dev/null +++ b/telegram_client.py @@ -0,0 +1,36 @@ +import logging +from pyrogram import Client +from config import get_settings + + +logger = logging.getLogger(__name__) +settings = get_settings() + +class TelegramClient: + def __init__(self): + if settings["session_string"]: + self.client = Client( + name="pyro_bridge", + session_string=settings["session_string"], + api_id=settings["tg_api_id"], + api_hash=settings["tg_api_hash"], + in_memory=True + ) + else: + self.client = Client( + name="pyro_bridge", + api_id=settings["tg_api_id"], + api_hash=settings["tg_api_hash"], + workdir=settings["session_path"], + in_memory=True + ) + + async def start(self): + if not self.client.is_connected: + await self.client.start() + logger.info("Telegram client connected") + + async def stop(self): + if self.client.is_connected: + await self.client.stop() + logger.info("Telegram client disconnected")