from views.mainScreen import MainFrame from models.data import TextData from Ai.interence import VeraMindInference from utils.database.database import FakeNewsChecker from urllib.parse import urlparse class MainFrameController: def __init__(self,frame:MainFrame) -> None: self.frame = frame self.model_inference = VeraMindInference('VeraMind-Mini') self.db = FakeNewsChecker() def get_textdata(self) -> TextData: text_data = TextData() text_data.url = self.frame.entry_url.get() if text_data.text_from_url(): text_data.text = self.frame.input_textbox.get("0.0", "end") return text_data def press_check_button(self): text_data = self.get_textdata() print(f"text:{text_data.text}") text_data = self.prediction(text_data) self.addDB(textData=text_data) self.frame.output_textbox.configure(state="normal") self.frame.output_textbox.delete("0.0", "end") self.frame.output_textbox.insert("0.0",f"{text_data.get_output()}") self.frame.output_textbox.configure(state="disabled") def prediction(self, text_data:TextData) -> TextData: result = self.model_inference.predict(text_data.text) text_data.confidence = result["confidence"] text_data.result = result["result"] text_data.is_fake_news = result["is_fake"] print(f"Prediction: {text_data.result}") print(f"Confidence: {text_data.confidence}") return text_data def addDB(self, textData: TextData): if self.is_valid_url(textData.url): parsed_url = urlparse(textData.url) anbieter = parsed_url.netloc.split('.')[-2] + '.' + parsed_url.netloc.split('.')[-1] print("Hauptdomain:", anbieter) self.db.insert_data(url= textData.url, anbieter= anbieter,is_fake_news=textData.is_fake_news) else: self.db.insert_data(url= textData.url, anbieter= "None",is_fake_news=textData.is_fake_news) def is_valid_url(self, url): try: result = urlparse(url) return all([result.scheme, result.netloc]) except ValueError: return False