From 8deb96ce38c931fa2acae9efe7d1af72b6b1d078 Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Tue, 15 Apr 2025 18:56:12 +0300 Subject: [PATCH] Refactor PostParser and RSS generator to improve flag handling and HTML footer generation --- post_parser.py | 15 ++++++++------- rss_generator.py | 9 ++++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/post_parser.py b/post_parser.py index 6cb45fb..d1b358b 100644 --- a/post_parser.py +++ b/post_parser.py @@ -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 = ['
'] - for flag in flags: + for flag in flags_list: flags_html.append(f'🏷 {flag}') flags_html.append('
') 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('
') 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('
' + flags_html) html_footer = '\n'.join(content_footer) html_footer = self._sanitize_html(html_footer) diff --git a/rss_generator.py b/rss_generator.py index 25660d0..6356414 100644 --- a/rss_generator.py +++ b/rss_generator.py @@ -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'
{main_message["html"]["header"]}
', f'
{combined_media}
', f'
{combined_html_body}
', - f'' + f'' ] 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: