diff --git a/Video_Uploader.py b/Video_Uploader.py new file mode 100644 index 0000000..a8c3adc --- /dev/null +++ b/Video_Uploader.py @@ -0,0 +1,78 @@ +import sys +from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QLineEdit, QVBoxLayout, QFileDialog, QWidget +import firebase_admin +from firebase_admin import credentials, storage + +class VideoUploader(QMainWindow): + def __init__(self): + super(VideoUploader, self).__init__() + + # Initialize Firebase Admin SDK + cred = credentials.Certificate("/home/knight/Python_Prog/UI/chatbot.json") + firebase_admin.initialize_app(cred, {'storageBucket': 'chatbot-402717.appspot.com'}) + + self.init_ui() + + def init_ui(self): + self.setWindowTitle('Video Uploader') + self.setGeometry(100, 100, 400, 200) + + self.title_label = QLabel('Video Title:', self) + self.title_input = QLineEdit(self) + self.browse_button = QPushButton('Browse', self) + self.upload_button = QPushButton('Upload', self) + self.status_label = QLabel(self) + + layout = QVBoxLayout() + layout.addWidget(self.title_label) + layout.addWidget(self.title_input) + layout.addWidget(self.browse_button) + layout.addWidget(self.upload_button) + layout.addWidget(self.status_label) + + widget = QWidget() + widget.setLayout(layout) + self.setCentralWidget(widget) + + self.browse_button.clicked.connect(self.browse_video) + self.upload_button.clicked.connect(self.upload_video) + + def browse_video(self): + options = QFileDialog.Options() + options |= QFileDialog.DontUseNativeDialog + file_name, _ = QFileDialog.getOpenFileName(self, "Choose Video File", "", "Video Files (*.mp4 *.mkv *.avi);;All Files (*)", options=options) + if file_name: + self.video_path = file_name + self.status_label.setText(f'Selected video: {file_name}') + + def upload_video(self): + try: + title = self.title_input.text() + if not title: + self.status_label.setText('Please enter a title for the video.') + return + + if not hasattr(self, 'video_path'): + self.status_label.setText('Please select a video to upload.') + return + + # Get a reference to the Firebase Storage bucket + bucket = storage.bucket() + + # Upload the video to Firebase Storage within the specified title folder + blob = bucket.blob(f'{title}/{title}.mp4') + blob.upload_from_filename(self.video_path) + print("Video path: ", self.video_path) + + self.status_label.setText('Video uploaded successfully.') + + except Exception as e: + self.status_label.setText(f'Error: {str(e)}') + print (e) + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = VideoUploader() + window.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/__pycache__/question.cpython-38.pyc b/__pycache__/question.cpython-38.pyc new file mode 100644 index 0000000..568fb24 Binary files /dev/null and b/__pycache__/question.cpython-38.pyc differ diff --git a/firebaseconfig.py b/firebaseconfig.py new file mode 100644 index 0000000..833c388 --- /dev/null +++ b/firebaseconfig.py @@ -0,0 +1,13 @@ +firebaseConfig = { + "apiKey": "AIzaSyDooYHn0UTZqH7UsEKzEozTIzvmwUdqBzE", + "authDomain": "chatbot-402717.firebaseapp.com", + "databaseURL": "https://chatbot-402717-default-rtdb.firebaseio.com", + "projectId": "chatbot-402717", + "storageBucket": "chatbot-402717.appspot.com", + "messagingSenderId": "239405860510", + "appId": "1:239405860510:web:3d695496d1c004efab9d8f", + "measurementId": "G-M2YDKYBHS4" +} + +firebase=pyrebase.initialize_app(firebaseConfig) +auth=firebase.auth() \ No newline at end of file diff --git a/new_script.py b/new_script.py new file mode 100644 index 0000000..c750c57 --- /dev/null +++ b/new_script.py @@ -0,0 +1,412 @@ +import sys +from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QLabel, QVBoxLayout, QWidget, QGraphicsOpacityEffect, QGraphicsScene, QGraphicsView +from PyQt5.QtMultimediaWidgets import QVideoWidget +from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent +from PyQt5.QtCore import QUrl, Qt +import speech_recognition as sr +from PyQt5.QtGui import QPainter + + + +class HospitalChatbot: + def __init__(self): + + + self.intents_and_questions = { + + "greet": [ + "hey", + "hello", + "Hello?", + "hello?", + "hi", + "hello there", + "good morning", + "good evening", + "moin", + "hey there", + "let's go", + "hey dude", + "goodmorning", + "goodevening", + "good afternoon"], + + + "goodbye": [ + + "cu", + "good by", + "cee you later", + "good night", + "bye", + "goodbye", + "have a nice day", + "see you around", + "bye bye", + "see you later" + + ], + + + "affirm": [ + + "yes", + "y", + "indeed", + "of course", + "that sounds good", + "correct" + + ], + + + "bot_challenge": [ + + "are you a bot", + "are you a human", + "am I talking to a bot", + "am I talking to a human" + + ], + + "appointment_booking": [ + + "How can I schedule an appointment", + "I need to book an appointment with a doctor", + "what's the procedure for booking an appointment", + "hello, I'd like to schedule an appointment.", + "book an appointment", + "appointment", + "need an appointment" + ], + + + "doctor_information": [ + + "tell me more about dr. abc", + "what's the specialty of dr. abc", + "give me the contact details for dr. abc" + "doctor", + "contact doctor", + "doctor contact", + "doctor detail", + "detail doctor" + + ], + + + "department_information": [ + + "which departments are available in the hospital", + "can you provide details about the cardiology department", + "tell me more about the pediatric department", + "department", + "which department", + "department info" + + ], + + + "visiting_hours":[ + + "what are the visiting hours for patients", + "when can I visit a patient in the hospital", + "is there a specific time for visiting hours", + "visiting time", + "visit", + "time", + "time to visit", + "visit time", + "hospital visit", + "visit hospital" + ], + + + "location_and_directions":[ + + "how do I get to the hospital", + "can you provide me with directions to your location", + "where is the hospital situated", + "direction", + "direction hospital", + "hospital direction", + "location", + "hospital location" + ], + + + "billing_and_insurance": [ + + "how do I pay my medical bills", + "do you accept my insurance", + "what's the billing process for a hospital stay", + "bills", + "insurance", + "pay bill", + ], + + + "medical_records": [ + "how can I access my medical records", + "request my medical history", + "I need a copy of my lab results", + "records", + "medical records", + "record medical", + "results", + "lab results", + "result copy", + "copy result" + ], + + + "emergency_services": [ + "what should I do in case of a medical emergency", + "how do I contact the hospital in an emergency", + "tell me about your emergency services", + "emergency", + "emergency service" + ], + + + "covid19_information": [ + "what safety measures are in place due to COVID-19", + "is it safe to visit the hospital during the pandemic", + "do you offer COVID-19 testing or vaccinations", + "covid19" + + ], + + + "feedback_and_complaints": [ + "I want to provide feedback about my experience", + "how can I file a complaint about a staff member", + "share my thoughts on my recent visit", + "feedback", + "complaints", + "complain", + "share thoughts", + "experiance" + ], + + + "thank_you": [ + "thank you for your help", + "I appreciate your assistance", + "you've been very helpful" + ], + + + "general_information": [ + "tell me more about the hospital", + "what services do you offer", + "is there a cafeteria in the hospital", + "information", + "cafeteria", + "services", + "services offered", + "offered services" + ] + } + + self.intent_responses = { + + "greet": "Hello! How can I assist you today?", + "appointment_booking": "To book an appointment, please call our scheduling department at 1234567897.", + "doctor_information": "Dr. ABC is a specialist in Neuro. You can contact them at 9874563214.", + "department_information": "Our hospital has various departments, including cardiology and pediatrics. How can I help you with a specific department?", + "visiting_hours": "Visiting hours for patients are from 9:30 AM to 8:00 PM. Please feel free to visit during that time.", + "location_and_directions": "Our hospital is located at Ameerpet Hyderabad. Here are directions to our hospital: [Directions].", + "billing_and_insurance": "You can pay your medical bills at the billing department. We accept a variety of insurance plans. If you have any specific questions about billing, please call 789654125.", + "medical_records": "To access your medical records, please visit the medical records department. They can provide you with a copy of your records or lab results.", + "emergency_services": "In case of a medical emergency, please call 911 or go to the nearest emergency room. We also have an emergency department at our hospital.", + "covid19_information": "For information on our COVID-19 safety measures and testing, please visit our website or contact our COVID-19 hotline at [COVID-19 Hotline Number].", + "feedback_and_complaints": "Your feedback is valuable to us. You can provide feedback or file a complaint on our website or by contacting our patient services department.", + "thank_you": "You're welcome! If you have any more questions, feel free to ask.", + "general_information": "Our hospital provides a range of services, including medical, surgical, and emergency care. We also have a cafeteria for your convenience." + + + } + + + + + def match_intent(self, sentence): + sentence = sentence.lower() # Convert to lowercase for case-insensitive matching + for intent, questions in self.intents_and_questions.items(): + for question in questions: + if question in sentence: + return intent + return None + + def get_response(self, sentence): + matched_intent = self.match_intent(sentence) + if matched_intent: + response = self.intent_responses.get(matched_intent, "I'm not sure how to answer that.") + else: + response = "I'm not sure how to answer that." + return response + + def get_video_response(self, intent): + # Your video URLs here + + '''video_urls = { + + "greet": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260372/Output/greet_a1ngxv.mp4", + "appointment_booking": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260367/Output/appointment_booking_hl5uvy.mp4", + "doctor_information": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260369/Output/doctor_information_dq34py.mp4", + "department_information": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260373/Output/department_information_d7fksd.mp4", + "visiting_hours": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260376/Output/visiting_hours_dzvh3d.mp4", + "location_and_directions": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260375/Output/location_and_directions_ktkluz.mp4", + "billing_and_insurance": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260370/Output/billing_and_insurance_ba77n4.mp4", + "medical_records": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260377/Output/medical_records_akgmlx.mp4", + "emergency_services": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260369/Output/emergency_services_et3eyl.mp4", + "covid19_information": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260371/Output/covid19_information_orlff0.mp4", + "feedback_and_complaints": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260371/Output/feedback_and_complaints_i3ftal.mp4", + "thank_you": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260374/Output/thank_you_sgx29d.mp4", + "general_information": "https://res.cloudinary.com/dam12ojlp/video/upload/v1698260375/Output/general_information_nz2zx1.mp4" + + + }''' + + video_urls = { + + "greet": "/home/knight/ChatBot_UI/video/greet.mp4", + "appointment_booking": "/home/knight/ChatBot_UI/video/appointment_booking.mp4", + "doctor_information": "/home/knight/ChatBot_UI/video/doctor_information.mp4", + "department_information": "/home/knight/Python_Prog/UI/video/department_information.mp4", + "visiting_hours": "/home/knight/ChatBot_UI/video/visiting_hours.mp4", + "location_and_directions": "/home/knight/ChatBot_UI/video/location_and_directions.mp4", + "billing_and_insurance": "/home/knight/ChatBot_UI/video/billing_and_insurance.mp4", + "medical_records": "/home/knight/ChatBot_UI/video/medical_records.mp4", + "emergency_services": "/home/knight/ChatBot_UI/video/emergency_services.mp4", + "covid19_information": "/home/knight/ChatBot_UI/video/covid19_information.mp4", + "feedback_and_complaints": "/home/knight/ChatBot_UI/video/feedback_and_complaints.mp4", + "thank_you": "/home/knight/ChatBot_UI/video/thank_you.mp4", + "general_information": "/home/knight/ChatBot_UI/video/general_information.mp4" + + + } + + return video_urls.get(intent, "Video not available for this intent") + + + +class HospitalChatbotGUI(QMainWindow): + def __init__(self): + super().__init__() + + + self.chatbot = HospitalChatbot() + + self.setWindowTitle("Hospital Chatbot") + self.setGeometry(100, 100, 800, 600) + self.central_widget = QWidget(self) + + self.setCentralWidget(self.central_widget) + self.layout = QVBoxLayout() + + + + self.chatbox = QTextEdit(self) + self.layout.addWidget(self.chatbox) + self.chatbox.setFixedWidth(800) + self.chatbox.setFixedHeight(40) + + #self.submit_button = QPushButton("Submit", self) + #self.submit_button.clicked.connect(self.get_response) + #self.layout.addWidget(self.submit_button) + + self.speak_button = QPushButton("Speak", self) + self.speak_button.clicked.connect(self.audio_to_text) + self.layout.addWidget(self.speak_button) + + + self.video_label = QLabel("Video Output:", self) + self.layout.addWidget(self.video_label) + + self.video_url_label = QLabel("Video URL: ", self) + self.layout.addWidget(self.video_url_label) + + self.video_widget = QVideoWidget(self) + + self.layout.addWidget(self.video_widget) + #self.video_widget.setFixedWidth(459) + + + + self.central_widget.setLayout(self.layout) + + self.media_player = QMediaPlayer() + self.media_player.setVideoOutput(self.video_widget) + self.media_player.mediaStatusChanged.connect(self.handle_media_status_changed) + + + self.sample_video_url = "/home/knight/ChatBot_UI/Friendly_new.mp4" + + self.answer_video_url = None # URL for the answer video + self.play_video(self.sample_video_url) + + + + + + def audio_to_text(self): + + self.chatbox.setPlainText("Listening ...") + + init_rec = sr.Recognizer() + print("Let's speak!!") + with sr.Microphone(3) as source: + audio_data = init_rec.record(source, duration=2) + print("Recognizing your text.............") + text = init_rec.recognize_google(audio_data) + self.chatbox.setPlainText(text.strip()) + self.get_response(text.strip()) + print(text) + + + + def get_response(self,text): + print("Response Text: ",text) + #user_input = self.chatbox.toPlainText().strip() + user_input = text.strip() + intent = self.chatbot.match_intent(user_input) + if intent: + video_url = self.chatbot.get_video_response(intent) + if video_url: + self.video_url_label.setText(f"Video URL: {video_url}") + + self.play_video(video_url) + return + + #response = self.chatbot.get_response(user_input) + + self.chatbox.clear() + #self.display_response(response) + self.play_video("/home/knight/ChatBot_UI/Friendly_new.mp4") + + def play_video(self, video_url): + + media_content = QMediaContent(QUrl.fromLocalFile(video_url)) + self.media_player.setMedia(media_content) + self.media_player.play() + + + def handle_media_status_changed(self, status): + if status == QMediaPlayer.EndOfMedia: + print("Video finished playing.") + self.play_video("/home/knight/ChatBot_UI/Friendly_new.mp4") + + + + def display_response(self, response): + self.webview.setHtml(response) + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = HospitalChatbotGUI() + window.show() + + sys.exit(app.exec_()) \ No newline at end of file diff --git a/rough.py b/rough.py new file mode 100644 index 0000000..5b9a287 --- /dev/null +++ b/rough.py @@ -0,0 +1,3 @@ +import question + +print(question.intents_and_question.get('greeting')) \ No newline at end of file diff --git a/upload_dict.py b/upload_dict.py new file mode 100644 index 0000000..a0948a4 --- /dev/null +++ b/upload_dict.py @@ -0,0 +1,27 @@ +import firebase_admin +from firebase_admin import credentials, db +import question + + +cred = credentials.Certificate("/home/knight/ChatBot_UI/chatbot.json") +firebase_admin.initialize_app(cred, { + 'databaseURL': 'https://chatbot-402717-default-rtdb.firebaseio.com/' +}) + +# Assume my_dict is your dictionary +my_dict = question.intents_and_question + +# Reference to the root of your database +root_ref = db.reference('/intents_and_questions') + +# Set the dictionary as the value at the root reference +root_ref.set(my_dict) + + + + +data = root_ref.get() + +print(data) + +