Jarvis Part 3 : Source Code
1. News Function : It will help you to get the top headlines in your chosen field
IMP : - Here first go to newsapi.org and make an account on it then get your own api key and paste in instead 
Or watch my video if you are unable to get an api key..
elif "news" in query:
    from NewsRead import latestnews
    latestnews()
Now make a new file & name it "NewsRead.py" and write the following code in it :-
import requests
import json
import pyttsx3
engine = pyttsx3.init("sapi5")
voices = engine.getProperty("voices")
engine.setProperty("voice", voices[0].id)
rate = engine.setProperty("rate",170)
def speak(audio):
    engine.say(audio)
    engine.runAndWait()
def latestnews():
    api_dict = {"business" : "https://newsapi.org/v2/top-headlines?country=in&category=business&apiKey=#here paste your api key",
            "entertainment" : "https://newsapi.org/v2/top-headlines?country=in&category=entertainment&apiKey=#here paste your api key",
            "health" : "https://newsapi.org/v2/top-headlines?country=in&category=health&apiKey=#here paste your api key",
            "science" :"https://newsapi.org/v2/top-headlines?country=in&category=science&apiKey=#here paste your api key",
            "sports" :"https://newsapi.org/v2/top-headlines?country=in&category=sports&apiKey=#here paste your api key",
            "technology" :"https://newsapi.org/v2/top-headlines?country=in&category=technology&apiKey=#here paste your api key"
}
    content = None
    url = None
    speak("Which field news do you want, [business] , [health] , [technology], [sports] , [entertainment] , [science]")
    field = input("Type field news that you want: ")
    for key ,value in api_dict.items():
        if key.lower() in field.lower():
            url = value
            print(url)
            print("url was found")
            break
        else:
            url = True
    if url is True:
        print("url not found")
    news = requests.get(url).text
    news = json.loads(news)
    speak("Here is the first news.")
    arts = news["articles"]
    for articles in arts :
        article = articles["title"]
        print(article)
        speak(article)
        news_url = articles["url"]
        print(f"for more info visit: {news_url}")
        a = input("[press 1 to cont] and [press 2 to stop]")
        if str(a) == "1":
            pass
        elif str(a) == "2":
            break
        
    speak("thats all")
2. Calculator
IMP : - Here first go to "https://www.wolframalpha.com/" and make an account on it then get your own api key and paste in instead 
Or watch my video if you are unable to get an api key..
elif "calculate" in query:
    from Calculatenumbers import WolfRamAlpha
    from Calculatenumbers import Calc
    query = query.replace("calculate","")
    query = query.replace("jarvis","")
    Calc(query)
Now make a new file & name it "Calculatenumbers.py" and write the following code in it :-
import wolframalpha
import pyttsx3
import speech_recognition
engine = pyttsx3.init("sapi5")
voices = engine.getProperty("voices")
engine.setProperty("voice", voices[0].id)
rate = engine.setProperty("rate",170)
def speak(audio):
    engine.say(audio)
    engine.runAndWait()
def WolfRamAlpha(query):
    apikey = "#paste your api key"
    requester = wolframalpha.Client(apikey)
    requested = requester.query(query)
    try:
        answer = next(requested.results).text
        return answer
    except:
        speak("The value is not answerable")
def Calc(query):
    Term = str(query)
    Term = Term.replace("jarvis","")
    Term = Term.replace("multiply","*")
    Term = Term.replace("plus","+")
    Term = Term.replace("minus","-")
    Term = Term.replace("divide","/")
    Final = str(Term)
    try:
        result = WolfRamAlpha(Final)
        print(f"{result}")
        speak(result)
    except:
        speak("The value is not answerable")
      
3.Whatsapp automation 
elif "whatsapp" in query:
    from Whatsapp import sendMessage
    sendMessage()
Now make a new file & name it "Whatsapp.py" and write the following code in it :-
import pywhatkit
import pyttsx3
import datetime
import speech_recognition
import webbrowser
from bs4 import BeautifulSoup
from time import sleep
import os 
from datetime import timedelta
from datetime import datetime
engine = pyttsx3.init("sapi5")
voices = engine.getProperty("voices")
engine.setProperty("voice", voices[0].id)
rate = engine.setProperty("rate",170)
def speak(audio):
    engine.say(audio)
    engine.runAndWait()
def takeCommand():
    r = speech_recognition.Recognizer()
    with speech_recognition.Microphone() as source:
        print("Listening.....")
        r.pause_threshold = 1
        r.energy_threshold = 300
        audio = r.listen(source,0,4)
    try:
        print("Understanding..")
        query  = r.recognize_google(audio,language='en-in')
        print(f"You Said: {query}\n")
    except Exception as e:
        print("Say that again")
        return "None"
    return query
strTime = int(datetime.now().strftime("%H"))
update = int((datetime.now()+timedelta(minutes = 2)).strftime("%M"))
def sendMessage():
    speak("Who do you wan to message")
    a = int(input('''Person 1 - 1
    Person 2 - 2'''))
    if a == 1:
        speak("Whats the message")
        message = str(input("Enter the message- "))
        pywhatkit.sendwhatmsg("+91000000000",message,time_hour=strTime,time_min=update)
    elif a==2:
        pass
4. Shutdown system with your voice
elif "shutdown the system" in query:
    speak("Are You sure you want to shutdown")
    shutdown = input("Do you wish to shutdown your computer? (yes/no)")
    if shutdown == "yes":
        os.system("shutdown /s /t 1")
    elif shutdown == "no":
        break
Hope you like the jarvis series...
Thank you !!!
 
bhai claculator k if condition me kya lekhna
ReplyDeleteelif "calculate" in query:
Deletefrom Calculatenumbers import WolfRamAlpha
from Calculatenumbers import Calc
query = query.replace("calculate","")
query = query.replace("jarvis","")
Calc(query)