Add message group trimming to RSS and HTML generation

This commit is contained in:
vvzvlad
2025-02-09 20:30:01 +03:00
parent 94c8068594
commit 232a2d3a0a
+14 -1
View File
@@ -55,6 +55,17 @@ async def create_messages_groups(messages):
return processing_groups
async def trim_messages_groups(messages_groups, limit):
# Remove the oldest group (the one with the lowest message id based on the first message's date)
if messages_groups:
_removed_group = messages_groups.pop()
# Trim groups if they exceed the specified limit
if len(messages_groups) > limit:
messages_groups = messages_groups[:limit]
return messages_groups
async def render_messages_groups(messages_groups, post_parser, exclude_flags: str | None = None):
"""
Render message groups into HTML format
@@ -184,11 +195,12 @@ async def generate_channel_rss(channel: str, post_parser: Optional[PostParser] =
# Collect messages
messages = []
async for message in post_parser.client.get_chat_history(channel, limit=limit):
async for message in post_parser.client.get_chat_history(channel, limit=limit*2):
messages.append(message)
# Process messages into groups and render them
message_groups = await create_messages_groups(messages)
message_groups = await trim_messages_groups(message_groups, limit)
final_posts = await render_messages_groups(message_groups, post_parser, exclude_flags)
# Generate feed entries
@@ -261,6 +273,7 @@ async def generate_channel_html(channel: str, post_parser: Optional[PostParser]
# Process messages into groups and render them
message_groups = await create_messages_groups(messages)
message_groups = await trim_messages_groups(message_groups, limit)
final_posts = await render_messages_groups(message_groups, post_parser, exclude_flags)
# Generate HTML content