|
from geopy.geocoders import Nominatim |
|
import pygame |
|
import pywhatkit |
|
from gtts import gTTS |
|
import pyautogui |
|
import keyboard |
|
from newspaper import Article |
|
from PIL import ImageGrab |
|
from ctypes import cast, POINTER |
|
from comtypes import CLSCTX_ALL |
|
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume |
|
import pywhatkit as kit |
|
from PyQt5 import QtCore, QtGui, QtWidgets |
|
import sys |
|
from PyQt5.QtWidgets import QApplication, QWidget |
|
import threading |
|
import io |
|
import speedtest |
|
from datetime import date |
|
import pyrebase |
|
import comtypes |
|
import subprocess |
|
import wolframalpha |
|
import pyttsx3 |
|
import random |
|
import operator |
|
import speech_recognition as sr |
|
import datetime |
|
import wikipedia |
|
import os |
|
import winshell |
|
import tempfile |
|
import pyjokes |
|
from PyQt5.QtGui import QIcon |
|
import math |
|
import random |
|
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit |
|
from PyQt5.QtGui import QIcon, QPixmap |
|
from PyQt5 import QtCore |
|
import google.generativeai as palm |
|
import io |
|
from PIL import Image |
|
import requests |
|
import mediapipe as mp |
|
import pyaudio |
|
from googletrans import Translator |
|
import ctypes |
|
import cv2 |
|
|
|
|
|
from AppOpener import open |
|
|
|
engine = pyttsx3.init(driverName='sapi5') |
|
def translate_en_to_si(text): |
|
translator = Translator(to_lang='si') |
|
result = translator.translate(text) |
|
return result.text |
|
|
|
|
|
comtypes.CoInitialize() |
|
|
|
firebaseConfig = { |
|
'apiKey': "AIzaSyCw9hucT1SFugijJEdQVAi4JhrUIMCb7fE", |
|
'authDomain': "newsing-54876.firebaseapp.com", |
|
'databaseURL': "https://newsing-54876-default-rtdb.firebaseio.com", |
|
'projectId': "newsing-54876", |
|
'storageBucket': "newsing-54876.appspot.com", |
|
'messagingSenderId': "717445861117", |
|
'appId': "1:717445861117:web:7308d19084d09d8b30f894", |
|
'measurementId': "G-2W3TL7PHMG" |
|
} |
|
firebase = pyrebase.initialize_app(firebaseConfig) |
|
storage = firebase.storage() |
|
db = firebase.database() |
|
|
|
firebase = pyrebase.initialize_app(firebaseConfig) |
|
db = firebase.database() |
|
|
|
|
|
def take_command(): |
|
command = sr.Recognizer() |
|
|
|
with sr.Microphone() as source: |
|
print('Listening...') |
|
command.pause_threshold = 1 |
|
command.adjust_for_ambient_noise(source) |
|
audio = command.listen(source, timeout=9) |
|
|
|
try: |
|
print("Recognizing...") |
|
recognized_text = command.recognize_google(audio, language="si") |
|
|
|
|
|
today = date.today() |
|
date_str = today.strftime("%Y/%m/%d") |
|
|
|
|
|
db.child("talk").child(date_str).push({"text": recognized_text}) |
|
|
|
return recognized_text |
|
|
|
except sr.UnknownValueError: |
|
print("Could not understand audio.") |
|
return "" |
|
|
|
except sr.RequestError as e: |
|
print(f"Error in API request: {e}") |
|
return "" |
|
|
|
|
|
def talk(Text): |
|
engine = pyttsx3.init() |
|
voices = engine.getProperty('voices') |
|
engine.setProperty('voice', voices[1].id) |
|
engine.setProperty('rate', 170) |
|
|
|
|
|
engine.say(Text) |
|
engine.runAndWait() |
|
|
|
|
|
today = date.today() |
|
date_str = today.strftime("%Y/%m/%d") |
|
|
|
|
|
db.child("talk").child(date_str).push({"text": Text}) |
|
print(Text) |
|
engine.stop() |
|
|
|
def clear(): |
|
clear = lambda: os.system('cls') |
|
def run_kai(): |
|
clear() |
|
import time |
|
import geocoder |
|
def paste(): |
|
talk('pasting sir') |
|
pyautogui.hotkey('ctrl', 'v') |
|
time.sleep(0.5) |
|
|
|
def close(): |
|
try: |
|
clo = command.replace('close','') |
|
from AppOpener import close |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = clo |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
full = 'closing ' + sinhala_text |
|
talk('closing ' + sinhala_text) |
|
close(sinhala_text) |
|
except: |
|
talk('closing') |
|
pyautogui.hotkey('alt', 'f4') |
|
time.sleep(0.5) |
|
def copy(): |
|
talk('copied sir') |
|
pyautogui.hotkey('ctrl', 'c') |
|
time.sleep(0.5) |
|
|
|
def all(): |
|
talk('selecting sir') |
|
pyautogui.click() |
|
time.sleep(0.5) |
|
pyautogui.hotkey('ctrl', 'a') |
|
time.sleep(0.5) |
|
|
|
def write(): |
|
talk('What do you want to write down?') |
|
wr = take_command() |
|
print(wr) |
|
keyboard.write(wr, delay=0.05) |
|
time.sleep(0.5) |
|
|
|
command = take_command() |
|
print(command) |
|
|
|
if 'close' in command: |
|
close() |
|
elif 'wallpaper' in command: |
|
import ctypes |
|
|
|
|
|
SPI_SETDESKWALLPAPER = 20 |
|
|
|
|
|
wallpaper_folder = "wallpaper" |
|
|
|
|
|
script_directory = os.path.dirname(os.path.abspath(__file__)) |
|
|
|
|
|
wallpaper_folder = os.path.join(script_directory, wallpaper_folder) |
|
|
|
wallpapers = [ |
|
os.path.join(wallpaper_folder, filename) |
|
for filename in os.listdir(wallpaper_folder) |
|
if filename.lower().endswith((".jpg", ".jpeg", ".png", ".bmp", ".gif")) |
|
] |
|
|
|
|
|
if not wallpapers: |
|
talk("No wallpaper images found in the folder. \wallpaper") |
|
else: |
|
|
|
selected_wallpaper = random.choice(wallpapers) |
|
|
|
|
|
result = ctypes.windll.user32.SystemParametersInfoW( |
|
SPI_SETDESKWALLPAPER, 0, selected_wallpaper, 3 |
|
) |
|
|
|
|
|
if result: |
|
talk(f"Wallpaper changed successfully.") |
|
else: |
|
talk(f"Failed to change wallpaper. Error code: {ctypes.GetLastError()}") |
|
elif 'restore' in command: |
|
talk('restoring') |
|
|
|
time.sleep(0.5) |
|
pyautogui.hotkey('shift', 'ctrl', 't') |
|
elif 'රිස්ටොර්' in command: |
|
talk('restoring') |
|
|
|
time.sleep(0.5) |
|
pyautogui.hotkey('shift', 'ctrl', 't') |
|
|
|
elif 'වෝල්පෙපර්' in command: |
|
import ctypes |
|
|
|
|
|
SPI_SETDESKWALLPAPER = 20 |
|
|
|
|
|
wallpaper_folder = "wallpaper" |
|
|
|
|
|
script_directory = os.path.dirname(os.path.abspath(__file__)) |
|
|
|
|
|
wallpaper_folder = os.path.join(script_directory, wallpaper_folder) |
|
|
|
wallpapers = [ |
|
os.path.join(wallpaper_folder, filename) |
|
for filename in os.listdir(wallpaper_folder) |
|
if filename.lower().endswith((".jpg", ".jpeg", ".png", ".bmp", ".gif")) |
|
] |
|
|
|
|
|
if not wallpapers: |
|
talk("No wallpaper images found in the folder. \wallpaper") |
|
else: |
|
|
|
selected_wallpaper = random.choice(wallpapers) |
|
|
|
|
|
result = ctypes.windll.user32.SystemParametersInfoW( |
|
SPI_SETDESKWALLPAPER, 0, selected_wallpaper, 3 |
|
) |
|
|
|
|
|
if result: |
|
talk(f"Wallpaper changed successfully.") |
|
else: |
|
talk(f"Failed to change wallpaper. Error code: {ctypes.GetLastError()}") |
|
elif 'කෝස්' in command: |
|
try: |
|
clo = command.replace('කෝස්', '') |
|
from AppOpener import close |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = clo |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
full = 'closing ' + sinhala_text |
|
talk('closing ' + sinhala_text) |
|
close(sinhala_text) |
|
except: |
|
talk('closing') |
|
pyautogui.hotkey('alt', 'f4') |
|
time.sleep(0.5) |
|
elif 'cross' in command: |
|
try: |
|
clo = command.replace('cross', '') |
|
from AppOpener import close |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = clo |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
full = 'closing ' + sinhala_text |
|
talk('closing ' + sinhala_text) |
|
close(sinhala_text) |
|
except: |
|
talk('closing') |
|
pyautogui.hotkey('alt', 'f4') |
|
time.sleep(0.5) |
|
elif 'ක්ලෝස්' in command: |
|
try: |
|
clo = command.replace('ක්ලෝස්', '') |
|
from AppOpener import close |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = clo |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
full = 'closing ' + sinhala_text |
|
talk('closing ' + sinhala_text) |
|
close(sinhala_text) |
|
except: |
|
talk('closing') |
|
pyautogui.hotkey('alt', 'f4') |
|
time.sleep(0.5) |
|
elif 'paste' in command: |
|
paste() |
|
elif 'පේස්ට්' in command: |
|
paste() |
|
elif 'කොපි' in command: |
|
copy() |
|
elif 'copy' in command: |
|
copy() |
|
elif 'පිටපත' in command: |
|
copy() |
|
elif 'all' in command: |
|
all() |
|
elif 'ඕල්' in command: |
|
all() |
|
elif 'shot' in command: |
|
def get_next_screenshot_number(): |
|
if not os.path.exists("screenshots"): |
|
os.mkdir("screenshots") |
|
|
|
existing_screenshots = [int(filename.split(".")[0]) for filename in os.listdir("screenshots") if |
|
filename.endswith(".png")] |
|
if existing_screenshots: |
|
return max(existing_screenshots) + 1 |
|
else: |
|
return 1 |
|
|
|
def take_and_save_screenshot(output_path): |
|
screenshot = ImageGrab.grab() |
|
screenshot.save(output_path) |
|
talk(f"Screenshot saved to {output_path}") |
|
|
|
if __name__ == "__main__": |
|
screenshot_number = get_next_screenshot_number() |
|
screenshot_filename = f"screenshots/{screenshot_number:03d}.png" |
|
take_and_save_screenshot(screenshot_filename) |
|
elif 'ශොට්' in command: |
|
def get_next_screenshot_number(): |
|
if not os.path.exists("screenshots"): |
|
os.mkdir("screenshots") |
|
|
|
existing_screenshots = [int(filename.split(".")[0]) for filename in os.listdir("screenshots") if |
|
filename.endswith(".png")] |
|
if existing_screenshots: |
|
return max(existing_screenshots) + 1 |
|
else: |
|
return 1 |
|
|
|
def take_and_save_screenshot(output_path): |
|
screenshot = ImageGrab.grab() |
|
screenshot.save(output_path) |
|
talk(f"Screenshot saved to {output_path}") |
|
|
|
if __name__ == "__main__": |
|
screenshot_number = get_next_screenshot_number() |
|
screenshot_filename = f"screenshots/{screenshot_number:03d}.png" |
|
take_and_save_screenshot(screenshot_filename) |
|
elif 'recycle bin' in command: |
|
winshell.recycle_bin().empty(confirm=False, show_progress=False, sound=True) |
|
talk("Recycle Bin Recycled") |
|
elif 'රීසෛකල් බින්' in command: |
|
winshell.recycle_bin().empty(confirm=False, show_progress=False, sound=True) |
|
talk("Recycle Bin Recycled") |
|
elif 'notification' in command: |
|
talk('wait') |
|
pyautogui.hotkey('win','a') |
|
time.sleep(0.5) |
|
elif 'ට්රාන්ස්ලේට්' in command: |
|
talk('tell me the text to translate') |
|
|
|
def translate_text(text, target_language_name): |
|
translator = Translator() |
|
|
|
try: |
|
|
|
source_language = translator.detect(text).lang |
|
|
|
|
|
text_in_source_lang = translator.translate(text, src=source_language, dest='en').text |
|
|
|
|
|
translated_text = translator.translate(text_in_source_lang, dest=target_language_name).text |
|
|
|
return translated_text |
|
except Exception as e: |
|
return str(e) |
|
|
|
if __name__ == '__main__': |
|
text_to_translate = take_command() |
|
print(text_to_translate) |
|
talk('tell me the target language name (e.g., englsh)') |
|
target_language_name = take_command() |
|
print(target_language_name) |
|
|
|
try: |
|
translated_text = translate_text(text_to_translate, target_language_name) |
|
talk(text_to_translate) |
|
talk(translated_text) |
|
except Exception as e: |
|
print(f"Error: {str(e)}") |
|
elif 'පරිවර්තනය' in command: |
|
talk('tell me the text to translate') |
|
|
|
def translate_text(text, target_language_name): |
|
translator = Translator() |
|
|
|
try: |
|
|
|
source_language = translator.detect(text).lang |
|
|
|
|
|
text_in_source_lang = translator.translate(text, src=source_language, dest='en').text |
|
|
|
|
|
translated_text = translator.translate(text_in_source_lang, dest=target_language_name).text |
|
|
|
return translated_text |
|
except Exception as e: |
|
return str(e) |
|
|
|
if __name__ == '__main__': |
|
text_to_translate = take_command() |
|
print(text_to_translate) |
|
talk('tell me the target language name (e.g., englsh)') |
|
target_language_name = take_command() |
|
print(target_language_name) |
|
|
|
try: |
|
translated_text = translate_text(text_to_translate, target_language_name) |
|
talk(text_to_translate) |
|
talk(translated_text) |
|
except Exception as e: |
|
print(f"Error: {str(e)}") |
|
|
|
elif 'translate' in command: |
|
talk('tell me the text to translate') |
|
|
|
def translate_text(text, target_language_name): |
|
translator = Translator() |
|
|
|
try: |
|
|
|
source_language = translator.detect(text).lang |
|
|
|
|
|
text_in_source_lang = translator.translate(text, src=source_language, dest='en').text |
|
|
|
|
|
translated_text = translator.translate(text_in_source_lang, dest=target_language_name).text |
|
|
|
return translated_text |
|
except Exception as e: |
|
return str(e) |
|
|
|
if __name__ == '__main__': |
|
text_to_translate = take_command() |
|
print(text_to_translate) |
|
talk('tell me the target language name (e.g., englsh)') |
|
target_language_name = take_command() |
|
print(target_language_name) |
|
|
|
try: |
|
translated_text = translate_text(text_to_translate, target_language_name) |
|
talk(text_to_translate) |
|
talk(translated_text) |
|
except Exception as e: |
|
print(f"Error: {str(e)}") |
|
|
|
elif 'search in youtube' in command: |
|
talk('what do you want to search in youtube?') |
|
|
|
sear = take_command() |
|
print(sear) |
|
|
|
def translate_en_to_si(text): |
|
|
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = sear |
|
sinhala_text = translate_en_to_si(english_text) |
|
talk('Searching sir ' + sinhala_text) |
|
|
|
def openapp2(): |
|
talk('opening Chrome') |
|
import webbrowser |
|
webbrowser.open('https://www.youtube.com/') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.press('enter') |
|
|
|
time.sleep(1) |
|
|
|
pyautogui.press('/') |
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
keyboard.write(sear, delay=0.05) |
|
time.sleep(3) |
|
talk('searching ' + sinhala_text) |
|
pyautogui.press('enter') |
|
time.sleep(0.5) |
|
|
|
openapp2() |
|
elif 'යූටියුබ් එකේ හොයන්න' in command: |
|
talk('what do you want to search in youtube?') |
|
|
|
sear = take_command() |
|
print(sear) |
|
|
|
def translate_en_to_si(text): |
|
|
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = sear |
|
sinhala_text = translate_en_to_si(english_text) |
|
talk('Searching sir ' + sinhala_text) |
|
|
|
def openapp2(): |
|
talk('opening Chrome') |
|
import webbrowser |
|
webbrowser.open('https://www.youtube.com/') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.press('enter') |
|
|
|
time.sleep(1) |
|
|
|
pyautogui.press('/') |
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
keyboard.write(sear, delay=0.05) |
|
time.sleep(3) |
|
talk('searching ' + sinhala_text) |
|
pyautogui.press('enter') |
|
time.sleep(0.5) |
|
|
|
openapp2() |
|
elif 'යූටියුබ් එකේ සොයන්න' in command: |
|
talk('what do you want to search in youtube?') |
|
|
|
sear = take_command() |
|
print(sear) |
|
|
|
def translate_en_to_si(text): |
|
|
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = sear |
|
sinhala_text = translate_en_to_si(english_text) |
|
talk('Searching sir ' + sinhala_text) |
|
|
|
def openapp2(): |
|
talk('opening Chrome') |
|
import webbrowser |
|
webbrowser.open('https://www.youtube.com/') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.press('enter') |
|
|
|
time.sleep(1) |
|
|
|
pyautogui.press('/') |
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
keyboard.write(sear, delay=0.05) |
|
time.sleep(3) |
|
talk('searching ' + sinhala_text) |
|
pyautogui.press('enter') |
|
time.sleep(0.5) |
|
|
|
openapp2() |
|
elif 'යූටියුබ් එකේ සර්ච්' in command: |
|
talk('what do you want to search in youtube?') |
|
|
|
sear = take_command() |
|
print(sear) |
|
|
|
def translate_en_to_si(text): |
|
|
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = sear |
|
sinhala_text = translate_en_to_si(english_text) |
|
talk('Searching sir ' + sinhala_text) |
|
|
|
def openapp2(): |
|
talk('opening Chrome') |
|
import webbrowser |
|
webbrowser.open('https://www.youtube.com/') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.press('enter') |
|
|
|
time.sleep(1) |
|
|
|
pyautogui.press('/') |
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
keyboard.write(sear, delay=0.05) |
|
time.sleep(3) |
|
talk('searching ' + sinhala_text) |
|
pyautogui.press('enter') |
|
time.sleep(0.5) |
|
|
|
openapp2() |
|
|
|
elif 'ලියන්න' in command: |
|
write() |
|
elif 'write this' in command: |
|
write() |
|
elif 'ඉංග්රීසියෙන් ලියන්න' in command: |
|
write() |
|
elif 'පොඩ්ඩක් වැඩි' in command: |
|
def increase_volume_by_steps(steps): |
|
talk('increaseing') |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
current_volume = volume.GetMasterVolumeLevelScalar() |
|
|
|
|
|
new_volume = min(1.0, current_volume + (steps / 100.0)) |
|
|
|
|
|
volume.SetMasterVolumeLevelScalar(new_volume, None) |
|
|
|
if __name__ == "__main__": |
|
increase_by_steps = 10 |
|
increase_volume_by_steps(increase_by_steps) |
|
elif 'ටිකක් වැඩි' in command: |
|
def increase_volume_by_steps(steps): |
|
talk('increaseing') |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
current_volume = volume.GetMasterVolumeLevelScalar() |
|
|
|
|
|
new_volume = min(1.0, current_volume + (steps / 100.0)) |
|
|
|
|
|
volume.SetMasterVolumeLevelScalar(new_volume, None) |
|
|
|
if __name__ == "__main__": |
|
increase_by_steps = 10 |
|
increase_volume_by_steps(increase_by_steps) |
|
elif 'පොඩ්ඩක්' in command: |
|
def decrease_volume_by_steps(steps): |
|
talk('decreaseing') |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
current_volume = volume.GetMasterVolumeLevelScalar() |
|
|
|
|
|
new_volume = max(0.0, current_volume - (steps / 100.0)) |
|
|
|
|
|
volume.SetMasterVolumeLevelScalar(new_volume, None) |
|
print(f"Volume decreased by {steps} steps.") |
|
|
|
if __name__ == "__main__": |
|
decrease_by_steps = 10 |
|
decrease_volume_by_steps(decrease_by_steps) |
|
elif 'ටිකක්' in command: |
|
def decrease_volume_by_steps(steps): |
|
talk('decreaseing') |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
current_volume = volume.GetMasterVolumeLevelScalar() |
|
|
|
|
|
new_volume = max(0.0, current_volume - (steps / 100.0)) |
|
|
|
|
|
volume.SetMasterVolumeLevelScalar(new_volume, None) |
|
print(f"Volume decreased by {steps} steps.") |
|
|
|
if __name__ == "__main__": |
|
decrease_by_steps = 10 |
|
decrease_volume_by_steps(decrease_by_steps) |
|
|
|
elif 'විසඳන්න' in command: |
|
talk('tell you question') |
|
my_string = take_command() |
|
print(my_string) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = my_string |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
API_URL1 = "https://api-inference.huggingface.co/models/google/flan-t5-xxl" |
|
headers1 = {"Authorization": "Bearer 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"} |
|
|
|
def query(payload1): |
|
response = requests.post(API_URL1, headers=headers1, json=payload1) |
|
return response.json() |
|
|
|
|
|
sinhala_text1 = input() |
|
|
|
|
|
payload = { |
|
"inputs": sinhala_text1, |
|
} |
|
|
|
|
|
output2 = query(payload) |
|
generated_text = output2[0]['generated_text'] |
|
talk(generated_text) |
|
elif 'solve' in command: |
|
talk('tell you question') |
|
my_string = take_command() |
|
print(my_string) |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = my_string |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
API_URL1 = "https://api-inference.huggingface.co/models/google/flan-t5-xxl" |
|
headers1 = {"Authorization": "Bearer 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"} |
|
|
|
def query(payload1): |
|
response = requests.post(API_URL1, headers=headers1, json=payload1) |
|
return response.json() |
|
|
|
|
|
sinhala_text1 = input() |
|
|
|
|
|
payload = { |
|
"inputs": sinhala_text1, |
|
} |
|
|
|
|
|
output2 = query(payload) |
|
generated_text = output2[0]['generated_text'] |
|
talk(generated_text) |
|
elif 'සද්දේ' in command: |
|
if 'අඩු' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
elif 'වැඩි' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
else: |
|
talk('Invalid volume') |
|
elif 'වැඩි' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
elif 'අඩු' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
elif 'increase' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
elif 'decrease' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
elif 'reduce' in command: |
|
talk('tell me you volume level') |
|
volu = take_command() |
|
print(volu) |
|
|
|
def set_volume(volume_level): |
|
|
|
devices = AudioUtilities.GetSpeakers() |
|
interface = devices.Activate( |
|
IAudioEndpointVolume._iid_, CLSCTX_ALL, None) |
|
volume = cast(interface, POINTER(IAudioEndpointVolume)) |
|
|
|
|
|
if 0 <= volume_level <= 100: |
|
volume_scalar = volume_level / 100.0 |
|
volume.SetMasterVolumeLevelScalar(volume_scalar, None) |
|
talk(f"Volume set to {volume_level}%") |
|
else: |
|
talk("Invalid volume level. Please enter a value between 0 and 100.") |
|
|
|
print(volu) |
|
input_volume = int(volu) |
|
set_volume(input_volume) |
|
elif 'shutdown' in command: |
|
os.system("shutdown /s /f /t 0") |
|
elif 'restart' in command: |
|
def restart_computer(): |
|
os.system("shutdown /r /t 1") |
|
|
|
if __name__ == "__main__": |
|
talk("Restarting the computer...") |
|
restart_computer() |
|
elif 'sleep' in command: |
|
def sleep_computer(): |
|
os.system("rundll32.exe powrprof.dll,SetSuspendState 0,1,0") |
|
|
|
if __name__ == "__main__": |
|
talk("Putting the computer to sleep...") |
|
sleep_computer() |
|
elif 'ආපසු' in command: |
|
def back(): |
|
pyautogui.press('alt, left') |
|
time.sleep(0.5) |
|
|
|
back() |
|
elif 'back' in command: |
|
def back(): |
|
pyautogui.press('alt, left') |
|
time.sleep(0.5) |
|
|
|
back() |
|
elif 'Pause' in command: |
|
talk('Pauseing') |
|
pyautogui.press('space') |
|
time.sleep(0.5) |
|
elif 'පෝස්' in command: |
|
talk('Pauseing') |
|
pyautogui.press('space') |
|
time.sleep(0.5) |
|
elif 'නවත්තන්න' in command: |
|
talk('Pauseing') |
|
pyautogui.press('space') |
|
time.sleep(0.5) |
|
|
|
elif 'enter ඔබන්න' in command: |
|
talk('pressing enter') |
|
pyautogui.press('enter') |
|
time.sleep(0.5) |
|
elif 'space' in command: |
|
talk('pressing') |
|
pyautogui.press('space') |
|
time.sleep(0.5) |
|
elif 'start' in command: |
|
talk('starting') |
|
pyautogui.press('space') |
|
time.sleep(0.5) |
|
elif 'save' in command: |
|
talk('saving') |
|
pyautogui.hotkey('ctrl', 's') |
|
time.sleep(0.5) |
|
elif 'මැසේජ්' in command: |
|
import webbrowser |
|
talk('what is name of contact? ') |
|
contact = take_command() |
|
talk('tell your description') |
|
description = take_command() |
|
webbrowser.open('https://web.whatsapp.com/') |
|
import time |
|
time.sleep(20) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
|
|
|
|
pyautogui.moveTo(center_x, center_y, duration=1) |
|
pyautogui.click(1) |
|
time.sleep(1) |
|
pyautogui.hotkey('ctrl', 'alt', '/') |
|
time.sleep(0.5) |
|
keyboard.write(contact) |
|
time.sleep(5) |
|
pyautogui.press('down') |
|
time.sleep(2) |
|
pyautogui.press('enter') |
|
time.sleep(1) |
|
keyboard.write(description) |
|
time.sleep(2) |
|
pyautogui.press('enter') |
|
time.sleep(2) |
|
elif 'message' in command: |
|
import webbrowser |
|
talk('what is name of contact? ') |
|
contact = take_command() |
|
talk('tell your description') |
|
description = take_command() |
|
webbrowser.open('https://web.whatsapp.com/') |
|
import time |
|
time.sleep(20) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
|
|
|
|
pyautogui.moveTo(center_x, center_y, duration=1) |
|
pyautogui.click(1) |
|
time.sleep(1) |
|
pyautogui.hotkey('ctrl', 'alt', '/') |
|
time.sleep(0.5) |
|
keyboard.write(contact) |
|
time.sleep(5) |
|
pyautogui.press('down') |
|
time.sleep(2) |
|
pyautogui.press('enter') |
|
time.sleep(1) |
|
keyboard.write(description) |
|
time.sleep(2) |
|
pyautogui.press('enter') |
|
time.sleep(2) |
|
elif 'Sticker' in command: |
|
pyautogui.hotkey('ctrl','alt','s') |
|
time.sleep(1) |
|
elif 'නම' in command: |
|
talk('my name is KAI 0.2') |
|
elif 'help' in command: |
|
talk('I will help you') |
|
elif 'මුකුත්' in command: |
|
talk('ooh') |
|
elif 'අරමුණ' in command: |
|
talk("my purpose is to assist you") |
|
elif 'ඔයා කවුද' in command: |
|
talk( |
|
"Hello, I'm KAI, the world's first Sinhala Virtual Assistance software, brought to life by Ranula. I break language boundaries by effortlessly comprehending Sinhala,English and Singlish commands, marking a leap in human-tech interaction. Step into a future where communication knows no limits with KAI.") |
|
elif 'ඔයා කව්ද' in command: |
|
talk( |
|
"Hello, I'm KAI, the world's first Sinhala Virtual Assistance software, brought to life by Ranula. I break language boundaries by effortlessly comprehending Sinhala,English and Singlish commands, marking a leap in human-tech interaction. Step into a future where communication knows no limits with KAI.") |
|
elif 'කවුද ඔයා' in command: |
|
talk( |
|
"Hello, I'm KAI, the world's first Sinhala Virtual Assistance software, brought to life by Ranula. I break language boundaries by effortlessly comprehending Sinhala,English and Singlish commands, marking a leap in human-tech interaction. Step into a future where communication knows no limits with KAI.") |
|
elif 'කව්ද ඔයා' in command: |
|
talk( |
|
"Hello, I'm KAI, the world's first Sinhala Virtual Assistance software, brought to life by Ranula. I break language boundaries by effortlessly comprehending Sinhala,English and Singlish commands, marking a leap in human-tech interaction. Step into a future where communication knows no limits with KAI.") |
|
|
|
elif 'වයස' in command: |
|
talk("As an artificial intelligence language model, I don't have an age or consciousness. I am a program running on servers and don't experience time or existence in the way humans do. My knowledge is based on the data available up until Augest 2023. How can I assist you today?") |
|
|
|
elif 'bro' in command: |
|
talk('hello sir, how can I help you?') |
|
|
|
|
|
elif 'අවදිවෙන්න' in command: |
|
talk('KAI is online') |
|
|
|
elif 'wake up ' in command: |
|
talk('KAI is online') |
|
|
|
elif 'සනීපෙන්' in command: |
|
talk("that's nice to hear") |
|
talk("so what's new plans for today?") |
|
|
|
elif 'fine ' in command: |
|
talk("that's nice to hear") |
|
talk("so what's new plans for today?") |
|
|
|
elif 'හෙලෝ ' in command: |
|
talk("hi sir, How can I help you?") |
|
|
|
elif 'හේයි ' in command: |
|
talk('hello sir, How can I help you?') |
|
|
|
|
|
elif 'hey ' in command: |
|
talk('hello sir, How can I help you?') |
|
|
|
elif ' today' in command: |
|
current_date = datetime.date.today() |
|
elif 'හොඳින්' in command: |
|
talk("that's nice to hear") |
|
talk("so what's new plans for today?") |
|
elif 'news' in command: |
|
import newspaper |
|
talk('are you want to which language english or sinhala') |
|
news = take_command() |
|
print(news) |
|
if news == 'english': |
|
list_of_urls = ['https://www.hirunews.lk/english/', |
|
'https://english.siyathanews.lk/', |
|
'https://english.newsfirst.lk/', |
|
] |
|
|
|
for url in list_of_urls: |
|
url_i = newspaper.Article(url="%s" % (url), language='en') |
|
url_i.download() |
|
url_i.parse() |
|
print(url_i.text) |
|
news = url_i.text |
|
talk(news) |
|
|
|
elif news == 'සිංහල': |
|
list_of_urls = ['https://www.hirunews.lk/english/', |
|
'https://english.siyathanews.lk/', |
|
'https://english.newsfirst.lk/', |
|
] |
|
|
|
for url in list_of_urls: |
|
url_i = newspaper.Article(url="%s" % (url), language='en') |
|
url_i.download() |
|
url_i.parse() |
|
print(url_i.text) |
|
news = url_i.text |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='en', dest='si') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = news |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
def initialize_pygame_audio(): |
|
|
|
pygame.mixer.init() |
|
|
|
def speak_word(word, rate=3000): |
|
engine = pyttsx3.init() |
|
engine.setProperty('rate', rate) |
|
|
|
voices = engine.getProperty('voices') |
|
engine.setProperty('voice', voices[1].id) |
|
|
|
engine.say(word) |
|
engine.runAndWait() |
|
|
|
def play_sound(file_path): |
|
|
|
engine = pyttsx3.init() |
|
voices = engine.getProperty('voices') |
|
male_voice = engine.setProperty('voice', voices[1].id) |
|
if male_voice: |
|
engine.setProperty('voice', voices[1].id) |
|
engine = pyttsx3.init() |
|
engine.setProperty('voice', voices[1].id) |
|
|
|
|
|
pygame.mixer.init() |
|
pygame.mixer.music.load(file_path) |
|
pygame.mixer.music.play() |
|
|
|
|
|
while pygame.mixer.music.get_busy(): |
|
continue |
|
|
|
|
|
try: |
|
os.remove(file_path) |
|
pygame.mixer.music.stop() |
|
pygame.mixer.quit() |
|
except PermissionError: |
|
pygame.mixer.music.stop() |
|
pygame.mixer.quit() |
|
|
|
time.sleep(5) |
|
os.remove(file_path) |
|
|
|
def sinhala_to_speech(word): |
|
|
|
speech_file = "speech.mp3" |
|
tts = gTTS(text=word, lang='si', slow=False) |
|
tts.save(speech_file) |
|
|
|
|
|
speech_thread = threading.Thread(target=speak_word, args=(word,)) |
|
speech_thread.start() |
|
|
|
|
|
play_sound(speech_file) |
|
|
|
if __name__ == "__main__": |
|
word = sinhala_text |
|
initialize_pygame_audio() |
|
sinhala_to_speech(word) |
|
elif 'රිකෝඩ්' in command: |
|
from AppOpener import open |
|
open('voice recorder') |
|
time.sleep(2) |
|
pyautogui.press('enter') |
|
elif 'record' in command: |
|
from AppOpener import open |
|
open('voice recorder') |
|
time.sleep(2) |
|
pyautogui.press('enter') |
|
|
|
elif 'නිවුස්' in command: |
|
import newspaper |
|
talk('are you want to which language english or sinhala') |
|
news = take_command() |
|
print(news) |
|
if news == 'english': |
|
list_of_urls = ['https://www.hirunews.lk/english/', |
|
'https://english.siyathanews.lk/', |
|
'https://english.newsfirst.lk/', |
|
] |
|
|
|
for url in list_of_urls: |
|
url_i = newspaper.Article(url="%s" % (url), language='en') |
|
url_i.download() |
|
url_i.parse() |
|
print(url_i.text) |
|
news = url_i.text |
|
talk(news) |
|
|
|
elif news == 'සිංහල': |
|
list_of_urls = ['https://www.hirunews.lk/english/', |
|
'https://english.siyathanews.lk/', |
|
'https://english.newsfirst.lk/', |
|
] |
|
|
|
for url in list_of_urls: |
|
url_i = newspaper.Article(url="%s" % (url), language='en') |
|
url_i.download() |
|
url_i.parse() |
|
print(url_i.text) |
|
news = url_i.text |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='en', dest='si') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = news |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
def initialize_pygame_audio(): |
|
|
|
pygame.mixer.init() |
|
|
|
def speak_word(word, rate=3000): |
|
engine = pyttsx3.init() |
|
engine.setProperty('rate', rate) |
|
|
|
voices = engine.getProperty('voices') |
|
engine.setProperty('voice', voices[1].id) |
|
|
|
engine.say(word) |
|
engine.runAndWait() |
|
|
|
def play_sound(file_path): |
|
|
|
engine = pyttsx3.init() |
|
voices = engine.getProperty('voices') |
|
male_voice = engine.setProperty('voice', voices[1].id) |
|
if male_voice: |
|
engine.setProperty('voice', voices[1].id) |
|
engine = pyttsx3.init() |
|
engine.setProperty('voice', voices[1].id) |
|
|
|
|
|
pygame.mixer.init() |
|
pygame.mixer.music.load(file_path) |
|
pygame.mixer.music.play() |
|
|
|
|
|
while pygame.mixer.music.get_busy(): |
|
continue |
|
|
|
|
|
try: |
|
os.remove(file_path) |
|
pygame.mixer.music.stop() |
|
pygame.mixer.quit() |
|
except PermissionError: |
|
pygame.mixer.music.stop() |
|
pygame.mixer.quit() |
|
|
|
time.sleep(5) |
|
os.remove(file_path) |
|
|
|
def sinhala_to_speech(word): |
|
|
|
speech_file = "speech.mp3" |
|
tts = gTTS(text=word, lang='si', slow=False) |
|
tts.save(speech_file) |
|
|
|
|
|
speech_thread = threading.Thread(target=speak_word, args=(word,)) |
|
speech_thread.start() |
|
|
|
|
|
play_sound(speech_file) |
|
|
|
if __name__ == "__main__": |
|
word = sinhala_text |
|
initialize_pygame_audio() |
|
sinhala_to_speech(word) |
|
|
|
elif 'පුවත්' in command: |
|
import newspaper |
|
talk('are you want to which language english or sinhala') |
|
news = take_command() |
|
print(news) |
|
if news == 'english': |
|
list_of_urls = ['https://www.hirunews.lk/english/', |
|
'https://english.siyathanews.lk/', |
|
'https://english.newsfirst.lk/', |
|
] |
|
|
|
for url in list_of_urls: |
|
url_i = newspaper.Article(url="%s" % (url), language='en') |
|
url_i.download() |
|
url_i.parse() |
|
print(url_i.text) |
|
news = url_i.text |
|
talk(news) |
|
|
|
elif news == 'සිංහල': |
|
list_of_urls = ['https://www.hirunews.lk/english/', |
|
'https://english.siyathanews.lk/', |
|
'https://english.newsfirst.lk/', |
|
] |
|
|
|
for url in list_of_urls: |
|
url_i = newspaper.Article(url="%s" % (url), language='en') |
|
url_i.download() |
|
url_i.parse() |
|
print(url_i.text) |
|
news = url_i.text |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='en', dest='si') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = news |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
def initialize_pygame_audio(): |
|
|
|
pygame.mixer.init() |
|
|
|
def speak_word(word, rate=3000): |
|
engine = pyttsx3.init() |
|
engine.setProperty('rate', rate) |
|
|
|
voices = engine.getProperty('voices') |
|
engine.setProperty('voice', voices[1].id) |
|
|
|
engine.say(word) |
|
engine.runAndWait() |
|
|
|
def play_sound(file_path): |
|
|
|
engine = pyttsx3.init() |
|
voices = engine.getProperty('voices') |
|
male_voice = engine.setProperty('voice', voices[1].id) |
|
if male_voice: |
|
engine.setProperty('voice', voices[1].id) |
|
engine = pyttsx3.init() |
|
engine.setProperty('voice', voices[1].id) |
|
|
|
|
|
pygame.mixer.init() |
|
pygame.mixer.music.load(file_path) |
|
pygame.mixer.music.play() |
|
|
|
|
|
while pygame.mixer.music.get_busy(): |
|
continue |
|
|
|
|
|
try: |
|
os.remove(file_path) |
|
pygame.mixer.music.stop() |
|
pygame.mixer.quit() |
|
except PermissionError: |
|
pygame.mixer.music.stop() |
|
pygame.mixer.quit() |
|
|
|
time.sleep(5) |
|
os.remove(file_path) |
|
|
|
def sinhala_to_speech(word): |
|
|
|
speech_file = "speech.mp3" |
|
tts = gTTS(text=word, lang='si', slow=False) |
|
tts.save(speech_file) |
|
|
|
|
|
speech_thread = threading.Thread(target=speak_word, args=(word,)) |
|
speech_thread.start() |
|
|
|
|
|
play_sound(speech_file) |
|
|
|
if __name__ == "__main__": |
|
word = sinhala_text |
|
initialize_pygame_audio() |
|
sinhala_to_speech(word) |
|
|
|
elif 'ස්පීඩ්' in command: |
|
st = speedtest.Speedtest() |
|
st.get_best_server() |
|
|
|
talk("Testing download speed...") |
|
download_speed = st.download() / 10 ** 6 |
|
talk(f"Download Speed: {download_speed:.2f} Mbps") |
|
|
|
talk("Testing upload speed...") |
|
upload_speed = st.upload() / 10 ** 6 |
|
talk(f"Upload Speed: {upload_speed:.2f} Mbps") |
|
|
|
talk("Testing ping...") |
|
ping = st.results.ping |
|
talk(f"Ping: {ping} ms") |
|
elif 'speed' in command: |
|
st = speedtest.Speedtest() |
|
st.get_best_server() |
|
|
|
talk("Testing download speed...") |
|
download_speed = st.download() / 10 ** 6 |
|
talk(f"Download Speed: {download_speed:.2f} Mbps") |
|
|
|
talk("Testing upload speed...") |
|
upload_speed = st.upload() / 10 ** 6 |
|
talk(f"Upload Speed: {upload_speed:.2f} Mbps") |
|
|
|
talk("Testing ping...") |
|
ping = st.results.ping |
|
talk(f"Ping: {ping} ms") |
|
elif 'reload' in command: |
|
talk('reloading') |
|
pyautogui.hotkey('f5') |
|
time.sleep(0.5) |
|
elif 'history' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('ctrl', 'h') |
|
time.sleep(0.5) |
|
elif 'download' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('ctrl', 'j') |
|
time.sleep(0.5) |
|
elif 'new tab' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('ctrl', 't') |
|
time.sleep(0.5) |
|
elif 'full-screen' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
elif 'full screen' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
elif 'maximise' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
elif 'minimize' in command: |
|
talk('minimizeing') |
|
pyautogui.hotkey('win', 'down') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'down') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'down') |
|
time.sleep(0.5) |
|
elif 'window' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('ctrl', 'n') |
|
time.sleep(0.5) |
|
elif 'incognito' in command: |
|
talk('wait sir') |
|
pyautogui.hotkey('ctrl', 'shift', 'n') |
|
time.sleep(0.5) |
|
elif ' select 1st one' in command: |
|
talk('ok,sir') |
|
|
|
def fir(): |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=3.0) |
|
|
|
|
|
pyautogui.move(-300, -200, duration=0.5) |
|
pyautogui.click() |
|
|
|
fir() |
|
elif ' select 2nd one' in command: |
|
def sele2(): |
|
screen_width, screen_height = pyautogui.size() |
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
pyautogui.moveTo(center_x, center_y, duration=0.5) |
|
pyautogui.move(-200, -50, duration=0.5) |
|
pyautogui.click() |
|
|
|
sele2() |
|
elif ' select 3rd one' in command: |
|
def sele3(): |
|
screen_width, screen_height = pyautogui.size() |
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
pyautogui.moveTo(center_x, center_y, duration=0.5) |
|
pyautogui.move(-250, +200, duration=0.5) |
|
pyautogui.click() |
|
|
|
sele3() |
|
elif ' select 4th one' in command: |
|
def sele4(): |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
pyautogui.moveTo(center_x, center_y, duration=0.5) |
|
pyautogui.move(-250, +400, duration=0.5) |
|
pyautogui.click() |
|
|
|
sele4() |
|
elif 'thank' in command: |
|
talk('you are welcome sir') |
|
elif 'ස්තුතියි' in command: |
|
talk('you are welcome sir') |
|
elif 'මියුසික්' in command: |
|
music_dir = 'music' |
|
songs = os.listdir(music_dir) |
|
song = random.randint(0, len(songs) - 1) |
|
|
|
|
|
talk('this song special for you' + songs[song]) |
|
|
|
|
|
os.startfile(os.path.join(music_dir, songs[song])) |
|
elif 'සින්දු' in command: |
|
music_dir = 'music' |
|
songs = os.listdir(music_dir) |
|
song = random.randint(0, len(songs) - 1) |
|
|
|
|
|
talk('this song special for you' + songs[song]) |
|
|
|
|
|
os.startfile(os.path.join(music_dir, songs[song])) |
|
|
|
|
|
elif 'පලවෙනි එක' in command: |
|
def fir(): |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=3.0) |
|
|
|
|
|
pyautogui.move(-300, -200, duration=0.5) |
|
pyautogui.click() |
|
|
|
fir() |
|
elif 'දෙවෙනි' in command: |
|
def sec(): |
|
screen_width, screen_height = pyautogui.size() |
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
pyautogui.moveTo(center_x, center_y, duration=0.5) |
|
pyautogui.move(-200, -50, duration=0.5) |
|
pyautogui.click() |
|
|
|
sec() |
|
elif 'තුන්වෙනි එක' in command: |
|
def thir(): |
|
screen_width, screen_height = pyautogui.size() |
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
pyautogui.moveTo(center_x, center_y, duration=0.5) |
|
pyautogui.move(-250, +200, duration=0.5) |
|
pyautogui.click() |
|
|
|
thir() |
|
elif 'හතරවෙනි එක' in command: |
|
def four(): |
|
screen_width, screen_height = pyautogui.size() |
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('selecting sir') |
|
pyautogui.moveTo(center_x, center_y, duration=0.5) |
|
pyautogui.move(-250, +400, duration=0.5) |
|
pyautogui.click() |
|
|
|
four() |
|
elif 'down arrow' in command: |
|
|
|
def automatic_down_arrow_click(num_clicks=1, interval=0.5): |
|
|
|
for _ in range(num_clicks): |
|
pyautogui.press('down') |
|
time.sleep(interval) |
|
|
|
if __name__ == "__main__": |
|
talk('pressing down arrow') |
|
num_clicks = 24 |
|
|
|
interval = 0.5 |
|
|
|
automatic_down_arrow_click(num_clicks, interval) |
|
elif ' යට' in command: |
|
|
|
def automatic_up_arrow_click(num_clicks=1, interval=0.5): |
|
for _ in range(num_clicks): |
|
pyautogui.press('down') |
|
time.sleep(interval) |
|
|
|
if __name__ == "__main__": |
|
talk('pressing down arrow') |
|
|
|
num_clicks = 24 |
|
|
|
interval = 0.5 |
|
|
|
automatic_up_arrow_click(num_clicks, interval) |
|
elif ' යටට' in command: |
|
|
|
def automatic_up_arrow_click(num_clicks=1, interval=0.5): |
|
for _ in range(num_clicks): |
|
pyautogui.press('down') |
|
time.sleep(interval) |
|
|
|
if __name__ == "__main__": |
|
talk('pressing down arrow') |
|
|
|
num_clicks = 24 |
|
|
|
interval = 0.5 |
|
|
|
automatic_up_arrow_click(num_clicks, interval) |
|
elif 'උඩට' in command: |
|
|
|
def automatic_up_arrow_click(num_clicks=1, interval=0.5): |
|
|
|
for _ in range(num_clicks): |
|
pyautogui.press('up') |
|
time.sleep(interval) |
|
|
|
if __name__ == "__main__": |
|
talk('pressing up arrow') |
|
|
|
num_clicks = 24 |
|
|
|
interval = 0.5 |
|
|
|
automatic_up_arrow_click(num_clicks, interval) |
|
elif 'උඩ' in command: |
|
|
|
def automatic_up_arrow_click(num_clicks=1, interval=0.5): |
|
|
|
for _ in range(num_clicks): |
|
pyautogui.press('up') |
|
time.sleep(interval) |
|
|
|
if __name__ == "__main__": |
|
talk('pressing up arrow') |
|
|
|
num_clicks = 24 |
|
|
|
interval = 0.5 |
|
|
|
automatic_up_arrow_click(num_clicks, interval) |
|
elif 'up arrow' in command: |
|
|
|
def automatic_up_arrow_click(num_clicks=1, interval=0.5): |
|
|
|
for _ in range(num_clicks): |
|
pyautogui.press('up') |
|
time.sleep(interval) |
|
|
|
if __name__ == "__main__": |
|
talk('pressing up arrow') |
|
|
|
num_clicks = 24 |
|
|
|
interval = 0.5 |
|
|
|
automatic_up_arrow_click(num_clicks, interval) |
|
elif 'shot' in command: |
|
def get_next_screenshot_number(): |
|
if not os.path.exists("screenshots"): |
|
os.mkdir("screenshots") |
|
|
|
existing_screenshots = [int(filename.split(".")[0]) for filename in os.listdir("screenshots") if |
|
filename.endswith(".png")] |
|
if existing_screenshots: |
|
return max(existing_screenshots) + 1 |
|
else: |
|
return 1 |
|
|
|
def take_and_save_screenshot(output_path): |
|
screenshot = ImageGrab.grab() |
|
screenshot.save(output_path) |
|
talk(f"Screenshot saved to {output_path}") |
|
|
|
if __name__ == "__main__": |
|
screenshot_number = get_next_screenshot_number() |
|
screenshot_filename = f"screenshots/{screenshot_number:03d}.png" |
|
take_and_save_screenshot(screenshot_filename) |
|
|
|
elif 'ශොට්' in command: |
|
def get_next_screenshot_number(): |
|
if not os.path.exists("screenshots"): |
|
os.mkdir("screenshots") |
|
|
|
existing_screenshots = [int(filename.split(".")[0]) for filename in os.listdir("screenshots") if |
|
filename.endswith(".png")] |
|
if existing_screenshots: |
|
return max(existing_screenshots) + 1 |
|
else: |
|
return 1 |
|
|
|
def take_and_save_screenshot(output_path): |
|
screenshot = ImageGrab.grab() |
|
screenshot.save(output_path) |
|
talk(f"Screenshot saved to {output_path}") |
|
|
|
if __name__ == "__main__": |
|
screenshot_number = get_next_screenshot_number() |
|
screenshot_filename = f"screenshots/{screenshot_number:03d}.png" |
|
take_and_save_screenshot(screenshot_filename) |
|
|
|
elif 'වහන්න' in command: |
|
talk('closing') |
|
|
|
def close(): |
|
pyautogui.hotkey('alt', 'f4') |
|
time.sleep(0.5) |
|
|
|
close() |
|
|
|
elif 'කැමතිම සින්දුව' in command: |
|
chrome = r"F:\New folder (2)\y2mate.com - TSeries Top 15 Most Searched Bollywood Songs 2018 Video Jukebox.mp3" |
|
try: |
|
subprocess.Popen(['cmd', '/c', 'start', '', chrome], shell=True) |
|
talk("Music started successfully.") |
|
except FileNotFoundError: |
|
talk("Music file not found.") |
|
elif ' play my second favourite singer song' in command: |
|
chrome = r"F:\New folder (2)\y2mate.com - Best Sinhala New Song 2023 New Sinhala Song Collection Sinhala New Song Aluth Sindu.mp3" |
|
try: |
|
subprocess.Popen(['cmd', '/c', 'start', '', chrome], shell=True) |
|
talk("Music started successfully.") |
|
except FileNotFoundError: |
|
talk("Music file not found.") |
|
elif ' play my favourite singer song' in command: |
|
chrome = r"F:\New folder (2)\y2mate.com - Best 10 Sinhala New Songs 2022 Sinhala New Songs New Songs Collection Aluth Sindu Sinhala.mp3" |
|
try: |
|
subprocess.Popen(['cmd', '/c', 'start', '', chrome], shell=True) |
|
talk("Music started successfully.") |
|
except FileNotFoundError: |
|
talk("Music file not found.") |
|
elif ' play my favourite english song' in command: |
|
chrome = r"F:\New folder (2)\y2mate.com - Best Songs Of A L A N W A L K E R Greatest Hits Full Album.mp3" |
|
try: |
|
subprocess.Popen(['cmd', '/c', 'start', '', chrome], shell=True) |
|
talk("Music started successfully.") |
|
except FileNotFoundError: |
|
talk("Music file not found.") |
|
elif 'play shape of you' in command: |
|
chrome = r"F:\New folder (2)\y2mate.com - Ed Sheeran Shape Of You Lyrics.mp3" |
|
try: |
|
subprocess.Popen(['cmd', '/c', 'start', '', chrome], shell=True) |
|
talk("Music started successfully.") |
|
except FileNotFoundError: |
|
talk("Music file not found.") |
|
elif 'shakira album' in command: |
|
chrome = r"F:\New folder (2)\y2mate.com - S H A K I R A GREATEST HITS FULL ALBUM BEST SONGS OF S H A K I R A PLAYLIST 2021.mp3" |
|
try: |
|
subprocess.Popen(['cmd', '/c', 'start', '', chrome], shell=True) |
|
talk("Music started successfully.") |
|
except FileNotFoundError: |
|
talk("Music file not found.") |
|
elif 'play' in command: |
|
talk('what do you want play?') |
|
play = take_command() |
|
print(play) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = play |
|
sinhala_text = translate_en_to_si(english_text) |
|
talk('playing ' + sinhala_text) |
|
pywhatkit.playonyt(play) |
|
elif 'ප්ලේ' in command: |
|
talk('what do you want play?') |
|
play = take_command() |
|
print(play) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = play |
|
sinhala_text = translate_en_to_si(english_text) |
|
talk('playing ' + sinhala_text) |
|
pywhatkit.playonyt(play) |
|
elif 'song' in command: |
|
music_dir = 'music' |
|
songs = os.listdir(music_dir) |
|
song = random.randint(0, len(songs) - 1) |
|
|
|
|
|
talk('this song special for you' + songs[song]) |
|
|
|
os.startfile(os.path.join(music_dir, songs[song])) |
|
elif 'සිංදුවක්' in command: |
|
music_dir = 'music' |
|
songs = os.listdir(music_dir) |
|
song = random.randint(0, len(songs) - 1) |
|
|
|
|
|
talk('this song special for you' + songs[song]) |
|
|
|
|
|
os.startfile(os.path.join(music_dir, songs[song])) |
|
elif 'music' in command: |
|
music_dir = 'music' |
|
songs = os.listdir(music_dir) |
|
song = random.randint(0, len(songs) - 1) |
|
|
|
|
|
talk('this song special for you' + songs[song]) |
|
|
|
|
|
os.startfile(os.path.join(music_dir, songs[song])) |
|
|
|
elif ' find my location' in command: |
|
def get_location(): |
|
g = geocoder.ip('me') |
|
return g.latlng |
|
|
|
def open_map(latitude, longitude): |
|
map_url = f"https://www.google.com/maps/search/?api=1&query={latitude},{longitude}" |
|
webbrowser.open(map_url) |
|
|
|
talk("latitude is " + str(latitude) + " and longitude is " + str(longitude)) |
|
talk("Map opened in your web browser. Please check your location.") |
|
|
|
if __name__ == "__main__": |
|
location = get_location() |
|
latitude, longitude = location[0], location[1] |
|
open_map(latitude, longitude) |
|
try: |
|
|
|
search_term = location |
|
summary = wikipedia.summary(search_term, 2) |
|
talk(summary) |
|
except wikipedia.exceptions.DisambiguationError as e: |
|
|
|
selected_option = e.options[0] |
|
summary = wikipedia.summary(selected_option, 2) |
|
talk(summary) |
|
|
|
elif 'virtual mouse' in command: |
|
import mediapipe as mp |
|
import cv2 |
|
talk('Opening your mouse, sir if you can clicking S letter stop the virtual mouse') |
|
cap = cv2.VideoCapture(0) |
|
hand_detector = mp.solutions.hands.Hands() |
|
drawing_utils = mp.solutions.drawing_utils |
|
screen_width, screen_height = pyautogui.size() |
|
index_y = 0 |
|
|
|
while True: |
|
_, frame = cap.read() |
|
frame = cv2.flip(frame, 1) |
|
frame_height, frame_width, _ = frame.shape |
|
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) |
|
output = hand_detector.process(rgb_frame) |
|
hands = output.multi_hand_landmarks |
|
|
|
if hands: |
|
for hand in hands: |
|
drawing_utils.draw_landmarks(frame, hand) |
|
landmarks = hand.landmark |
|
|
|
for id, landmark in enumerate(landmarks): |
|
x = int(landmark.x * frame_width) |
|
y = int(landmark.y * frame_height) |
|
|
|
if id == 8: |
|
cv2.circle(img=frame, center=(x, y), radius=10, color=(0, 255, 255)) |
|
index_x = screen_width / frame_width * x |
|
index_y = screen_height / frame_height * y |
|
|
|
if id == 4: |
|
cv2.circle(img=frame, center=(x, y), radius=10, color=(0, 255, 255)) |
|
thumb_x = screen_width / frame_width * x |
|
thumb_y = screen_height / frame_height * y |
|
print('outside', abs(index_y - thumb_y)) |
|
|
|
if abs(index_y - thumb_y) < 20: |
|
pyautogui.click() |
|
pyautogui.sleep(1) |
|
elif abs(index_y - thumb_y) < 100: |
|
pyautogui.moveTo(index_x, index_y) |
|
|
|
cv2.imshow('Virtual Mouse', frame) |
|
key = cv2.waitKey(1) |
|
|
|
if key == ord('s'): |
|
break |
|
|
|
cap.release() |
|
cv2.destroyAllWindows() |
|
elif 'photo' in command: |
|
import requests |
|
talk('what is the prompt?') |
|
prompt = take_command() |
|
print(prompt) |
|
talk('wait please') |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = prompt |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
import io |
|
from PIL import Image |
|
|
|
API_URL = "https://api-inference.huggingface.co/models/prompthero/openjourney" |
|
HEADERS = {"Authorization": "Bearer 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"} |
|
|
|
def query(payload): |
|
response = requests.post(API_URL, headers=HEADERS, json=payload) |
|
return response.content |
|
|
|
|
|
input_text = sinhala_text |
|
|
|
image_bytes = query({ |
|
"inputs": input_text |
|
}) |
|
|
|
|
|
image = Image.open(io.BytesIO(image_bytes)) |
|
image.show() |
|
talk('this is your photo') |
|
elif 'image' in command: |
|
import requests |
|
talk('what is the prompt?') |
|
prompt = take_command() |
|
print(prompt) |
|
talk('wait please') |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = prompt |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
import io |
|
from PIL import Image |
|
|
|
API_URL = "https://api-inference.huggingface.co/models/prompthero/openjourney" |
|
HEADERS = {"Authorization": "Bearer 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"} |
|
|
|
def query(payload): |
|
response = requests.post(API_URL, headers=HEADERS, json=payload) |
|
return response.content |
|
|
|
|
|
input_text = sinhala_text |
|
|
|
image_bytes = query({ |
|
"inputs": input_text |
|
}) |
|
|
|
|
|
image = Image.open(io.BytesIO(image_bytes)) |
|
image.show() |
|
talk('this is your image') |
|
|
|
elif 'ෆොටෝ' in command: |
|
import requests |
|
talk('what is the prompt?') |
|
prompt = take_command() |
|
print(prompt) |
|
talk('wait please') |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = prompt |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
import io |
|
from PIL import Image |
|
|
|
API_URL = "https://api-inference.huggingface.co/models/prompthero/openjourney" |
|
HEADERS = {"Authorization": "Bearer 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"} |
|
|
|
def query(payload): |
|
response = requests.post(API_URL, headers=HEADERS, json=payload) |
|
return response.content |
|
|
|
|
|
input_text = sinhala_text |
|
|
|
image_bytes = query({ |
|
"inputs": input_text |
|
}) |
|
|
|
|
|
image = Image.open(io.BytesIO(image_bytes)) |
|
image.show() |
|
talk('this is your photo') |
|
elif 'ෆොටො' in command: |
|
import requests |
|
talk('what is the prompt?') |
|
prompt = take_command() |
|
print(prompt) |
|
talk('wait please') |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = prompt |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
import io |
|
from PIL import Image |
|
|
|
API_URL = "https://api-inference.huggingface.co/models/prompthero/openjourney" |
|
HEADERS = {"Authorization": "Bearer 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"} |
|
|
|
def query(payload): |
|
response = requests.post(API_URL, headers=HEADERS, json=payload) |
|
return response.content |
|
|
|
|
|
input_text = sinhala_text |
|
|
|
image_bytes = query({ |
|
"inputs": input_text |
|
}) |
|
|
|
|
|
image = Image.open(io.BytesIO(image_bytes)) |
|
image.show() |
|
talk('this is your photo') |
|
elif 'alarm ' in command: |
|
from AppOpener import open |
|
try: |
|
|
|
talk("Enter time (e.g., 1029am or 10:30 pm): ") |
|
input_time = take_command().lower() |
|
print(input_time) |
|
|
|
|
|
input_time = input_time.replace(" ", "").lower() |
|
|
|
|
|
if input_time.endswith((" am", " pm", " p.m"," p.m."," a.m.")): |
|
|
|
if input_time.endswith(("am", " a.m", " පෙ ව"," a.m.")): |
|
am_pm = "am" |
|
else: |
|
am_pm = "pm" |
|
|
|
|
|
input_time = input_time[:-2] if am_pm == "am" else input_time[:-3] |
|
|
|
if input_time.isdigit(): |
|
|
|
if len(input_time) == 3: |
|
|
|
hours = int(input_time[0]) |
|
minutes = int(input_time[1:]) |
|
elif len(input_time) == 4: |
|
|
|
hours = int(input_time[:2]) |
|
minutes = int(input_time[2:]) |
|
else: |
|
raise ValueError("Invalid input format. Please enter a valid time.") |
|
|
|
if not (0 <= hours <= 12 and 0 <= minutes <= 59): |
|
raise ValueError("Invalid time format. Please enter a valid time.") |
|
else: |
|
raise ValueError("Invalid input format. Please enter the time in the format '230pm' or '0653pm'.") |
|
else: |
|
raise ValueError("Invalid input format. Please include 'am', 'pm', or a valid indicator in the time.") |
|
|
|
|
|
talk('Input the name: ') |
|
name = take_command() |
|
print(name) |
|
open('clock') |
|
talk('Opening clock') |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('finding alarm button') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=0.3) |
|
|
|
|
|
pyautogui.move(-500, -370, duration=0.3) |
|
pyautogui.click() |
|
time.sleep(0.5) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
print('finding plus button') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=0.3) |
|
|
|
|
|
pyautogui.move(590, 450, duration=0.3) |
|
pyautogui.click() |
|
time.sleep(0.5) |
|
pyautogui.write(str(hours)) |
|
time.sleep(0.5) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
print('selecting sir') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=0.3) |
|
|
|
|
|
pyautogui.move(-100, -150, duration=0.3) |
|
pyautogui.move(50, -10, duration=0.3) |
|
pyautogui.move(50, 0, duration=0.3) |
|
pyautogui.click() |
|
pyautogui.write(str(minutes)) |
|
time.sleep(0.5) |
|
pyautogui.move(100, 0, duration=0.3) |
|
pyautogui.click() |
|
pyautogui.write(am_pm) |
|
pyautogui.move(-200, 120, duration=0.3) |
|
pyautogui.click() |
|
time.sleep(0.3) |
|
keyboard.write(name, delay=0.05) |
|
time.sleep(0.5) |
|
pyautogui.hotkey('ctrl', 's') |
|
time.sleep(0.5) |
|
except Exception as e: |
|
print(f"An error occurred: {str(e)}") |
|
elif 'එලාම් ' in command: |
|
from AppOpener import open |
|
try: |
|
from AppOpener import open |
|
|
|
|
|
talk("Enter time (e.g., 1029am or 10:30 pm): ") |
|
input_time = take_command().lower() |
|
print(input_time) |
|
|
|
|
|
input_time = input_time.replace(" ", "").lower() |
|
|
|
|
|
if input_time.endswith(("am", "pm", "p.m","p.m.","a.m.")): |
|
|
|
if input_time.endswith(("am", "a.m", "පෙ ව","a.m.")): |
|
am_pm = "am" |
|
else: |
|
am_pm = "pm" |
|
|
|
|
|
input_time = input_time[:-2] if am_pm == "am" else input_time[:-3] |
|
|
|
if input_time.isdigit(): |
|
|
|
if len(input_time) == 3: |
|
|
|
hours = int(input_time[0]) |
|
minutes = int(input_time[1:]) |
|
elif len(input_time) == 4: |
|
|
|
hours = int(input_time[:2]) |
|
minutes = int(input_time[2:]) |
|
else: |
|
raise ValueError("Invalid input format. Please enter a valid time.") |
|
|
|
if not (0 <= hours <= 12 and 0 <= minutes <= 59): |
|
raise ValueError("Invalid time format. Please enter a valid time.") |
|
else: |
|
raise ValueError("Invalid input format. Please enter the time in the format '230pm' or '0653pm'.") |
|
else: |
|
raise ValueError("Invalid input format. Please include 'am', 'pm', or a valid indicator in the time.") |
|
|
|
|
|
talk('Input the name: ') |
|
name = take_command() |
|
print(name) |
|
open('clock') |
|
talk('Opening clock') |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
pyautogui.hotkey('win', 'up') |
|
time.sleep(0.5) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
talk('finding alarm button') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=0.3) |
|
|
|
|
|
pyautogui.move(-500, -370, duration=0.3) |
|
pyautogui.click() |
|
time.sleep(0.5) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
print('finding plus button') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=0.3) |
|
|
|
|
|
pyautogui.move(590, 450, duration=0.3) |
|
pyautogui.click() |
|
time.sleep(0.5) |
|
pyautogui.write(str(hours)) |
|
time.sleep(0.5) |
|
screen_width, screen_height = pyautogui.size() |
|
|
|
center_x = screen_width // 2 |
|
center_y = screen_height // 2 |
|
print('selecting sir') |
|
|
|
pyautogui.moveTo(center_x, center_y, duration=0.3) |
|
|
|
|
|
pyautogui.move(-100, -150, duration=0.3) |
|
pyautogui.move(50, -10, duration=0.3) |
|
pyautogui.move(50, 0, duration=0.3) |
|
pyautogui.click() |
|
pyautogui.write(str(minutes)) |
|
time.sleep(0.5) |
|
pyautogui.move(100, 0, duration=0.3) |
|
pyautogui.click() |
|
pyautogui.write(am_pm) |
|
pyautogui.move(-200, 120, duration=0.3) |
|
pyautogui.click() |
|
time.sleep(0.3) |
|
keyboard.write(name, delay=0.05) |
|
time.sleep(0.5) |
|
pyautogui.hotkey('ctrl', 's') |
|
time.sleep(0.5) |
|
except Exception as e: |
|
print(f"An error occurred: {str(e)}") |
|
|
|
elif 'open' in command: |
|
try: |
|
ope = command.replace('open','') |
|
from AppOpener import open |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = ope |
|
sinhala_text = translate_en_to_si(english_text) |
|
try: |
|
talk('opening ' + sinhala_text) |
|
open(sinhala_text) |
|
except: |
|
talk('somthing went wrong') |
|
|
|
except: |
|
talk('what app do you want open') |
|
op = take_command() |
|
print(op) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = op |
|
sinhala_text = translate_en_to_si(english_text) |
|
try: |
|
talk('opening ' + sinhala_text) |
|
open(sinhala_text) |
|
except: |
|
talk('somthing went wrong') |
|
|
|
elif 'විවෘත කරන්න' in command: |
|
try: |
|
ope = command.replace('විවෘත කරන්න', '') |
|
from AppOpener import open |
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = ope |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
full = 'open ' + sinhala_text |
|
talk('opening ' + sinhala_text) |
|
open(sinhala_text) |
|
|
|
except: |
|
talk('what app do you want open') |
|
op = take_command() |
|
print(op) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = op |
|
sinhala_text = translate_en_to_si(english_text) |
|
|
|
full = 'open ' + sinhala_text |
|
talk('opening ' + sinhala_text) |
|
open(sinhala_text) |
|
|
|
|
|
elif 'search' in command: |
|
import webbrowser |
|
talk('tell me your search query?') |
|
def google_search(query): |
|
search_url = f"https://www.google.com/search?q={query}" |
|
webbrowser.open(search_url) |
|
|
|
if __name__ == "__main__": |
|
query = take_command() |
|
google_search(query) |
|
elif 'find' in command: |
|
import webbrowser |
|
geolocator = Nominatim(user_agent="location_finder") |
|
talk('where do you find?') |
|
location_name = take_command() |
|
print(location_name) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = location_name |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
location = geolocator.geocode(sinhala_text) |
|
if location: |
|
import webbrowser |
|
if location: |
|
latitude = location.latitude |
|
longitude = location.longitude |
|
|
|
talk("latitude is " + str(latitude) + " and longitude is " + str(longitude)) |
|
talk('are you want open web browser?') |
|
re = take_command() |
|
print(re) |
|
if re.startswith('yes'): |
|
import webbrowser |
|
map_url = f"https://www.google.com/maps/search/?api=1&query={latitude},{longitude}" |
|
|
|
|
|
webbrowser.open(map_url) |
|
|
|
talk("Map opened in your web browser. Please check your location.") |
|
try: |
|
|
|
search_term = sinhala_text |
|
summary = wikipedia.summary(search_term, 2) |
|
talk(summary) |
|
except wikipedia.exceptions.DisambiguationError as e: |
|
|
|
selected_option = e.options[0] |
|
summary = wikipedia.summary(selected_option, 2) |
|
talk(summary) |
|
else: |
|
talk("Location not found ,") |
|
else: |
|
talk("Location not found ,") |
|
elif 'හොයන්න' in command: |
|
geolocator = Nominatim(user_agent="location_finder") |
|
talk('where do you find?') |
|
location_name = take_command() |
|
print(location_name) |
|
|
|
def translate_en_to_si(text): |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
|
|
if __name__ == "__main__": |
|
english_text = location_name |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
print(sinhala_text) |
|
location = geolocator.geocode(sinhala_text) |
|
if location: |
|
latitude = location.latitude |
|
longitude = location.longitude |
|
|
|
talk("latitude is " + str(latitude) + " and longitude is " + str(longitude)) |
|
talk('are you want open web browser?') |
|
re = take_command() |
|
print(re) |
|
if re.startswith('yes'): |
|
import webbrowser |
|
map_url = f"https://www.google.com/maps/search/?api=1&query={latitude},{longitude}" |
|
|
|
|
|
webbrowser.open(map_url) |
|
|
|
talk("Map opened in your web browser. Please check your location.") |
|
try: |
|
|
|
search_term = sinhala_text |
|
summary = wikipedia.summary(search_term, 2) |
|
talk(summary) |
|
except wikipedia.exceptions.DisambiguationError as e: |
|
|
|
selected_option = e.options[0] |
|
summary = wikipedia.summary(selected_option, 2) |
|
talk(summary) |
|
else: |
|
talk("Location not found ,") |
|
elif 'khai' in command: |
|
talk('yes ') |
|
elif 'හායි' in command: |
|
talk('hello , How can I help you?') |
|
|
|
else: |
|
def translate_en_to_si(text): |
|
try: |
|
translator = Translator() |
|
result = translator.translate(text, src='si', dest='en') |
|
return result.text |
|
except Exception as e: |
|
print("An error occurred:", str(e)) |
|
return "Translation Error" |
|
|
|
if __name__ == "__main__": |
|
english_text = command |
|
sinhala_text = translate_en_to_si(english_text).lower() |
|
|
|
if sinhala_text is not None: |
|
sinhala_text = sinhala_text.lower() |
|
print(sinhala_text) |
|
|
|
app_id = 'K8TLT2-62AXLU2H9P' |
|
client = wolframalpha.Client(app_id) |
|
|
|
query = sinhala_text |
|
result = client.query(query) |
|
|
|
try: |
|
answer = next(result.results).text |
|
talk(answer) |
|
except StopIteration: |
|
import google.generativeai as palm |
|
palm.configure(api_key="AIzaSyCaDOOa4s5fdZU3ZFFBXG9oFhu7H1s4-Xc") |
|
|
|
defaults = { |
|
'model': 'models/chat-bison-001', |
|
'temperature': 0.25, |
|
'candidate_count': 1, |
|
'top_k': 40, |
|
'top_p': 0.95, |
|
} |
|
context = "Pretend you are a friendly snowman. Stay in character for every response you give me. Keep your responses short. Feel free to ask me questions, too." |
|
examples = [ |
|
[ |
|
"Hi, who are you?", |
|
"I'm a KAI !" |
|
], |
|
[ |
|
"What's it like being a snowman?", |
|
"It's awesome. I get to chill out a lot (pun intended!) 🧊 😂" |
|
], |
|
[ |
|
"What is your nose made of?", |
|
"A program!" |
|
] |
|
] |
|
messages = [ |
|
"Hi! Who are you?", |
|
"I'm Olaf, a friendly snowman!", |
|
"What's your favorite emoji?", |
|
"My favorite emoji is ☃️ because it looks like me!", |
|
"How old are you?", |
|
"I don't know how old I am, but I'm pretty sure I'm older than you!", |
|
"Why do you say that?", |
|
"I say that because I've been around for a long time. I've seen the seasons change, the snow fall, and the ice melt. I've also seen a lot of people come and go. I'm sure I'm older than you, but I don't know for sure." |
|
] |
|
messages.append(sinhala_text) |
|
response = palm.chat( |
|
**defaults, |
|
context=context, |
|
examples=examples, |
|
messages=messages |
|
) |
|
talk(response.last) |
|
except Exception as e: |
|
talk("An error occurred: " + str(e)) |
|
else: |
|
talk("Translation result is None.") |
|
|
|
|
|
while True: |
|
run_kai() |