Refactor PostParser and RSS generator to improve flag handling and HTML footer generation

This commit is contained in:
vvzvlad
2025-04-15 18:56:12 +03:00
parent 1098770c53
commit 8deb96ce38
2 changed files with 14 additions and 10 deletions
+8 -7
View File
@@ -440,14 +440,13 @@ class PostParser:
html_content = '\n'.join(html_content)
return html_content
def _format_flags(self, message: Message) -> str:
def _format_flags(self, flags_list: list) -> str:
if not Config['show_post_flags']:
return ''
flags = self._extract_flags(message)
if flags:
if flags_list:
flags_html = ['<div class="message-flags">']
for flag in flags:
for flag in flags_list:
flags_html.append(f'🏷 {flag}')
flags_html.append('</div>')
return ' '.join(flags_html)
@@ -465,7 +464,7 @@ class PostParser:
'header': self._generate_html_header(message),
'body': self._generate_html_body(message),
'media': self._generate_html_media(message),
'footer': self._generate_html_footer(message)
'footer': self.generate_html_footer(message)
},
'flags': self._extract_flags(message),
'author': self._get_author_info(message),
@@ -663,12 +662,14 @@ class PostParser:
return None
def _generate_html_footer(self, message: Message) -> str:
def generate_html_footer(self, message: Message) -> str:
content_footer = []
content_footer.append('<br>')
if reactions_views_html := self._reactions_views_links(message): # Add reactions, views, date and links
content_footer.append(reactions_views_html)
if flags_html := self._format_flags(message): # Add flags
flags_list = self._extract_flags(message)
if flags_list:
flags_html = self._format_flags(flags_list)
content_footer.append('<br>' + flags_html)
html_footer = '\n'.join(content_footer)
html_footer = self._sanitize_html(html_footer)
+6 -3
View File
@@ -184,13 +184,16 @@ async def _render_messages_groups(messages_groups, post_parser, exclude_flags: s
for msg in processed_messages:
if msg.get('flags'): # Check if flags exist and are not empty
all_flags.update(msg['flags'])
combined_flags = list(all_flags) # Convert back to list if needed, or keep as set
merged_flags = list(all_flags) # Convert back to list if needed, or keep as set
main_message['flags'] = merged_flags
footer_html = post_parser.generate_html_footer(main_message)
html_parts = [
f'<div class="message-header">{main_message["html"]["header"]}</div>',
f'<div class="message-media">{combined_media}</div>',
f'<div class="message-text">{combined_html_body}</div>',
f'<div class="message-footer">{main_message["html"]["footer"]}</div>'
f'<div class="message-footer">{footer_html}</div>'
]
rendered_posts.append({
@@ -200,7 +203,7 @@ async def _render_messages_groups(messages_groups, post_parser, exclude_flags: s
'title': main_message['html']['title'],
'text': combined_text,
'author': main_message['author'],
'flags': combined_flags # Use the combined flags
'flags': merged_flags
})
except Exception as e: