Veracity_AI/src/controller/mainFrameController.py

56 lines
2.2 KiB
Python

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