Chodzi o stworzenie interfejsu graficznego dla prostego programu typu chatbot/asystent (wystarczy zwykłe pole), do którego będzie się wpisywać zamiast w konsoli debug/run komendy (przykładowo w pycharmie) to w zaprogramowanym okienku. Zaznaczam że dopiero zaczynam z Pythonem ( to mój pierwszy większy projekt). Jakie biblioteki, publikacje albo jakieś poradniki polecacie? tutaj skrócona wersja kodu:
import random
import re
import webbrowser
from gtts import gTTS
import os
import pygame
import wikipediaapi
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from answers import answers
directory = "C:/chatbot/logi"
if not os.path.exists(directory):
os.makedirs(directory)
directory = "C:/chatbot/notatki"
if not os.path.exists(directory):
os.makedirs(directory)
# odtwarzanie głosowe
def read_aloud(text):
tts = gTTS(text=text, lang='pl')
tts.save("response.mp3")
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load("response.mp3")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
pygame.mixer.music.stop()
pygame.quit()
os.remove("response.mp3")
#wprowadzanie głosowe
# formatowanie tekstu
def preprocess_question(question):
# usuwanie znaków zapytania i przecinków
question = re.sub("[?,]", "", question)
# zamiana na małe litery
return question.lower()
# wikipedia
wiki_wiki = wikipediaapi.Wikipedia(language='pl', extract_format=wikipediaapi.ExtractFormat.WIKI)
# notatki
def create_note(title, text):
note = title + "\n" + text
with open(os.path.join("C:/chatbot/notatki", title + ".txt"), "w") as f:
f.write(note)
def open_note(title):
with open(os.path.join("C:/chatbot/notatki", title + ".txt"), "r") as f:
return f.read()
# e-mail - 1
def send_email(to, subject, message):
# Tworzenie obiektu MIMEMultipart
msg = MIMEMultipart()
# Dodawanie nagłówków
msg['From'] = "antekswi123@gmail.com"
msg['To'] = to
msg['Subject'] = subject
# Dodawanie treści wiadomości
msg.attach(MIMEText(message, 'plain'))
# Wysyłanie wiadomości
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login("antekswi123@gmail.com", "pasztet888")
server.send_message(msg)
server.quit()
# wikipedia - 2
def search_wikipedia(query):
page_py = wiki_wiki.page(query)
if page_py.exists():
return page_py.text[0:min(len(page_py.text), 1500)]
else:
return "Nie znalazłem artykułu"
def chatbot_response(question):
preprocessed_question = preprocess_question(question)
if preprocessed_question in answers:
return random.choice(answers[preprocessed_question])
# sprawdzenie, czy pytanie zaczyna się od "otworz "
if preprocessed_question.startswith("otwórz "):
# otwieranie pliku chrome
if preprocessed_question == "otwórz chrome":
webbrowser.open("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe")
return "Otwieranie Chrome"
else:
return "Nieznana komenda"
# Wyszukiwanie w googl
elif preprocessed_question.startswith("wyszukaj") or preprocessed_question.startswith(
"znajdź") or preprocessed_question.startswith("szukaj") or preprocessed_question.startswith(
"co to") or preprocessed_question.startswith("kto to") or preprocessed_question.startswith("czym jest"):
query = preprocessed_question.replace("wyszukaj", "").replace("znajdź", "").replace("szukaj", "").replace(
"co to", "").replace("kto to", "").replace("czym jest", "").strip()
webbrowser.open(f"https://www.google.com/search?q={query}")
return f"Wyszukiwanie '{query}' w Google"
#kod
##################################### wikipedia ciąg dalszy
if "wikipedia" in preprocessed_question or "wikipedii" in preprocessed_question:
query = preprocessed_question.replace("wikipedia", "").replace("wikipedii", "").strip()
response = search_wikipedia(query)
return response
# mail ciąg dalszy
elif preprocessed_question == "wyślij maila" or preprocessed_question == "mail" or preprocessed_question == "e-mail" or preprocessed_question == "wyślij e-mail":
read_aloud("Rozpoczynanie funkcji wysyłania e-maila. Podaj adres e-mail odbiorcy:")
recipient_email = input("Podaj adres e-mail odbiorcy: ")
read_aloud("Podaj temat e-maila:")
subject = input("Podaj temat e-maila: ")
read_aloud("Podaj treść e-maila:")
message = input("Podaj treść e-maila: ")
send_email(recipient_email, subject, message)
return "Wysłano e-mail"
# notatka ciąg dalszy
if question.startswith("utwórz notatkę") or question.startswith("zrób notatkę") or question.startswith("notatka") or question.startswith("dodaj notatkę"):
title = input("Podaj tytuł notatki: ")
te = input("Podaj treść notatki: ")
create_note(title, te)
return "Notatka została utworzona"
elif question.startswith("otwórz notatkę") or question.startswith("pokaż notatkę") or question.startswith(
"uruchom notatkę"):
title = input("Podaj tytuł notatki: ")
text = open_note(title)
return te
# pytania i odpowiedzi 2
elif preprocessed_question in answers:
# losowe wybranie odpowiedzi z dostępnych
return random.choice(answers[preprocessed_question])
else:
with open("C:/chatbot/logi/logi.txt", "a") as f:
f.write("Pytanie: " + question + "\n")
f.write("Odpowiedź: Brak odpowiedzi\n")
return "Niestety nie jestem w stanie odpowiedzieć na to pytanie."
while True:
question = input("Pytanie: ")
response = chatbot_response(question)
print("Odpowiedź: ", response)
read_aloud(response)