Class Diagrams
Core Source System Classes
classDiagram
class BaseSource {
+name
+display_name
+category
+__init__()
+get_articles(count)
+get_article_content(url)
+validate()
+get_rate_limit()
+get_user_agent()
}
class ConfigDrivenSource {
+config
+selectors
+__init__(config)
+get_articles(count)
+get_article_content(url)
+validate()
-_parse_article_list(html)
-_extract_content(html)
}
class CustomSource {
+__init__()
+get_articles(count)
+get_article_content(url)
+get_comments(url)
-_custom_processing()
}
class HackerNewsSource {
+api_base
+__init__()
+get_articles(count)
+get_article_content(url)
+get_comments(url)
-_fetch_from_api(endpoint)
-_process_comments(comments)
}
class BBCSource {
+rss_url
+__init__()
+get_articles(count)
+get_article_content(url)
-_parse_rss(xml)
-_extract_bbc_content(html)
}
class SourceFactory {
+registry
+__init__(registry)
+create_source(name)
+get_available_sources()
+validate_source(name)
-_resolve_source_type(name)
}
class SourceRegistry {
+sources
+__init__()
+register_source(metadata)
+get_source_metadata(name)
+list_sources()
+discover_sources()
-_load_config_driven_sources()
-_load_custom_sources()
}
class Article {
+title
+url
+content
+author
+published_date
+source
+metadata
+comments
+media_urls
}
class Comment {
+author
+content
+timestamp
+replies
+score
}
BaseSource <|-- ConfigDrivenSource
BaseSource <|-- CustomSource
CustomSource <|-- HackerNewsSource
CustomSource <|-- BBCSource
SourceFactory --> BaseSource : creates
SourceFactory --> SourceRegistry : uses
SourceRegistry --> BaseSource : manages
BaseSource --> Article : produces
Article --> Comment : contains
Use the free software Draw.io to clearly visualize the mermaid diagrams.
Copy the mermaid code and from the drop-down menu select: Arrange → Insert → Advanced → Mermaid.
Media Processing Classes
classDiagram
class UnifiedMediaProcessor {
+session
+output_dir
+download_media
+__init__(session, output_dir, download_media)
+process_article_media(article)
+download_images(urls)
+download_media_files(urls)
-_detect_media_type(url)
-_organize_media_files()
}
class ImageProcessor {
+max_size
+quality
+__init__(max_size, quality)
+process_image(file_path)
+resize_image(image)
+optimize_image(image)
+convert_format(image)
-_validate_image(file_path)
}
class MediaDownloader {
+session
+timeout
+retry_count
+__init__(session, timeout, retry_count)
+download_file(url)
+get_file_info(url)
+validate_download(file_path)
-_create_directories(path)
-_handle_download_error(error)
}
class ContentFormatter {
+markdown_options
+__init__(options)
+html_to_markdown(html)
+process_images(content)
+update_links(content)
+clean_html(html)
-_convert_tables(html)
-_handle_code_blocks(html)
}
UnifiedMediaProcessor --> ImageProcessor : uses
UnifiedMediaProcessor --> MediaDownloader : uses
UnifiedMediaProcessor --> ContentFormatter : uses
ImageProcessor --> PIL : uses
MediaDownloader --> requests : uses
ContentFormatter --> BeautifulSoup : uses
Use the free software Draw.io to clearly visualize the mermaid diagrams.
Copy the mermaid code and from the drop-down menu select: Arrange → Insert → Advanced → Mermaid.
HTML Generation Classes
classDiagram
class BaseHTMLGenerator {
+template_dir
+theme
+__init__(template_dir, theme)
+generate_html(article)
+load_template(name)
+render_template(template)
-_prepare_context(article)
-_copy_assets(output_dir)
}
class ArticleHTMLGenerator {
+source_config
+__init__(template_dir, theme, source_config)
+generate_html(article)
+generate_index(articles)
-_generate_navigation(articles)
-_process_article_content(content)
}
class CommentHTMLGenerator {
+comment_template
+__init__(template_dir, theme)
+render_comments(comments)
+render_comment_tree(comment)
-_anonymize_usernames(comments)
-_format_timestamps(comments)
}
class ThemeManager {
+themes_dir
+current_theme
+__init__(themes_dir, default_theme)
+load_theme(name)
+get_css_files(theme)
+get_js_files(theme)
+validate_theme(name)
-_copy_theme_assets(theme)
}
BaseHTMLGenerator <|-- ArticleHTMLGenerator
ArticleHTMLGenerator --> CommentHTMLGenerator : uses
BaseHTMLGenerator --> ThemeManager : uses
ThemeManager --> Jinja2 : uses
Use the free software Draw.io to clearly visualize the mermaid diagrams.
Copy the mermaid code and from the drop-down menu select: Arrange → Insert → Advanced → Mermaid.
Configuration Classes
classDiagram
class ConfigManager {
+config_file
+config_data
+__init__(config_file)
+load_config()
+get_setting(key)
+update_setting(key)
+save_config()
+validate_config()
-_merge_configs(base)
-_expand_environment_variables(config)
}
class SourceConfig {
+name
+display_name
+base_url
+category
+selectors
+rate_limit
+__init__(config_dict)
+validate()
+to_dict()
-_validate_selectors()
-_validate_urls()
}
class CLIConfig {
+args
+__init__(args)
+get_sources()
+get_output_dir()
+get_count()
+should_download_media()
+should_generate_html()
+get_log_level()
}
ConfigManager --> SourceConfig : creates
CLIConfig --> ConfigManager : uses
Use the free software Draw.io to clearly visualize the mermaid diagrams.
Copy the mermaid code and from the drop-down menu select: Arrange → Insert → Advanced → Mermaid.