diff --git a/fake_news_checker.db b/fake_news_checker.db index acf0f55..3badb6d 100644 Binary files a/fake_news_checker.db and b/fake_news_checker.db differ diff --git a/src/controller/mainFrameController.py b/src/controller/mainFrameController.py index c712f82..3c1e706 100644 --- a/src/controller/mainFrameController.py +++ b/src/controller/mainFrameController.py @@ -81,12 +81,23 @@ class MainFrameController: self.text_data_list.append(text_data) def sort_provider(self, text_data_list): - provider_names = [text_data.provider for text_data in text_data_list if text_data.provider] - provider_counts = Counter(provider_names) + # Gruppiere TextData-Objekte nach Provider + provider_groups = {} + for text_data in text_data_list: + if text_data.provider: + if text_data.provider not in provider_groups: + provider_groups[text_data.provider] = [] + provider_groups[text_data.provider].append(text_data) + + # Zähle die Häufigkeit jedes Providers + provider_counts = Counter(text_data.provider for text_data in text_data_list if text_data.provider) + + # Erstelle und sortiere die Provider-Liste sorted_providers = [ - Provider(name, count) + Provider(name, count, provider_groups.get(name, [])) for name, count in sorted(provider_counts.items(), key=lambda x: x[1], reverse=True) ] + return sorted_providers def update_provider_list(self): @@ -106,7 +117,7 @@ class MainFrameController: name_label = ctk.CTkLabel(provider_frame, text=provider.title) name_label.pack(side="left", padx=5) - count_label = ctk.CTkLabel(provider_frame, text=str(provider.count)) + count_label = ctk.CTkLabel(provider_frame, text=str(provider.get_fake_percentage())+"%") count_label.pack(side="right", padx=5) diff --git a/src/models/provider.py b/src/models/provider.py index 92e2e54..ca860d9 100644 --- a/src/models/provider.py +++ b/src/models/provider.py @@ -1,5 +1,23 @@ class Provider(): - def __init__(self, title: str, count: int) -> None: + def __init__(self, title: str, count: int, text_data_list) -> None: self.title = title - self.count = count \ No newline at end of file + self.count = count + self.text_data_list = text_data_list + + def get_fake_percentage(self) -> float: + + count_all = 0 + count_fake = 0 + for text_data in self.text_data_list: + print(text_data.is_fake_news) + count_all += 1 + if text_data.is_fake_news: + count_fake += 1 + + if count_all == 0: + return 0.0 + + return (count_fake / count_all) * 100 + + \ No newline at end of file