56 lines
2.2 KiB
Python
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
|
|
|