From 2a6470462ddc377f2c9e542cb2bdebdf8dc2b904 Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Sun, 2 Feb 2025 03:56:42 +0300 Subject: [PATCH] Add channel title and icon to RSS feed generation --- api_server.py | 9 ++++++++- telegram_client.py | 11 ++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/api_server.py b/api_server.py index 082af33..dad1eca 100644 --- a/api_server.py +++ b/api_server.py @@ -129,11 +129,18 @@ async def get_rss_feed(channel: str): # Create FeedGenerator fg = FeedGenerator() - fg.title(channel) + channel_title = posts[0].get('channel_title', channel) if posts else channel + channel_icon = posts[0].get('channel_icon', '') if posts else '' + + fg.title(channel_title) fg.link(href=f"https://t.me/{channel}", rel='alternate') fg.description(f'Telegram channel {channel} RSS feed') fg.language('ru-ru') + if channel_icon: + fg.logo(f"{settings['pyrogram_bridge_url']}/media/{channel_icon}") + fg.icon(f"{settings['pyrogram_bridge_url']}/media/{channel_icon}") + # Add channel metadata fg.id(f"{settings['pyrogram_bridge_url']}/rss/{channel}") fg.link(href=f"{settings['pyrogram_bridge_url']}/rss/{channel}", rel='self', type='application/rss+xml') diff --git a/telegram_client.py b/telegram_client.py index fc23368..b812c20 100644 --- a/telegram_client.py +++ b/telegram_client.py @@ -542,15 +542,24 @@ class TelegramClient: await self.start() posts = [] + channel_title = "" + channel_icon = "" async for message in self.client.get_chat_history( chat_id=channel, limit=limit ): + if not channel_title and message.sender_chat: + channel_title = getattr(message.sender_chat, "title", channel) + if hasattr(message.sender_chat, "photo") and message.sender_chat.photo: + channel_icon = message.sender_chat.photo.small_file_id + parsed = await self._parse_message(message) - if parsed and parsed.get('html'): # Skip None and empty + if parsed and parsed.get('html'): posts.append({ "id": message.id, "date": message.date, + "channel_title": channel_title, + "channel_icon": channel_icon, "title": self._generate_title(parsed.get("raw_text", "")), "html": parsed["html"], "media": parsed.get("media", [])