import requests
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import os
from PIL import Image
import random
import pyttsx3
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voices',voices[2].id)
def Speak(audio):
print(" ")
print(f": {audio}")
engine.say(audio)
engine.runAndWait()
print(" ")
Api_Key = "KrsOGOZLgYGcxYVBLZld2U65PevfTyOfbdqy7ggK"
def NasaNews(Date):
Speak("Extracting Data From Nasa . ")
Url = "https://api.nasa.gov/planetary/apod?api_key=" + str(Api_Key)
Params = {'date':str(Date)}
r = requests.get(Url,params = Params)
Data = r.json()
Info = Data['explanation']
Title = Data['title']
Image_Url = Data['url']
Image_r = requests.get(Image_Url)
FileName = str(Date) + '.jpg'
with open(FileName,'wb') as f:
f.write(Image_r.content)
Path_1 = "E:\\Zara\\" + str(FileName)
Path_2 = "E:\\Zara\\DataBase\\NasaDataBase\\" + str(FileName)
os.rename(Path_1, Path_2)
img = Image.open(Path_2)
img.show()
Speak(f"Title : {Title}")
Speak(f"According To Nasa : {Info}")
def Summary(Boby):
list__ = ('2','3','4','5')
value = random.choice(list__)
path = "E:\\Zara\\DataBase\\NasaDataBase\\Images Used\\" + str(value) + ".jpg"
os.startfile(path)
name = str(Boby)
url = "https://hubblesite.org/api/v3/glossary/" + str(name)
r = requests.get(url)
Data = r.json()
if len(Data) != 0:
retur = Data['definition']
Speak(f"According To The Nasa : {retur}")
else:
Speak("No Data Available , Try Again Later!")
def MarsImage():
name = 'curiosity'
date = '2020-12-3'
Api_ = str(Api_Key)
url = f"https://api.nasa.gov/mars-photos/api/v1/rovers/{name}/photos?earth_date={date}&api_key={Api_}"
r = requests.get(url)
Data = r.json()
Photos = Data['photos'][:20]
try:
for index , photo in enumerate(Photos):
camera = photo['camera']
rover = photo['rover']
rover_name = rover['name']
camera_name = camera['name']
full_camera_name = camera['full_name']
date_of_photo = photo['earth_date']
img_url = photo['img_src']
p = requests.get(img_url)
img = f'{index}.jpg'
with open(img,'wb') as file:
file.write(p.content)
Path_1 = "E:\\Zara\\" + str(img)
Path_2 = "E:\\Zara\\DataBase\\NasaDataBase\\MarsImage\\" + str(img)
os.rename(Path_1,Path_2)
os.startfile(Path_2)
Speak(f"This Image Was Captured With : {full_camera_name}")
Speak(f"This Image Was Captured On : {date_of_photo}")
except:
Speak("There IS An Error!")
def IssTracker():
url = "http://api.open-notify.org/iss-now.json"
r = requests.get(url)
Data = r.json()
dt = Data['timestamp']
lat = Data['iss_position']['latitude']
lon = Data['iss_position']['longitude']
print(f"Time And Date : {dt}")
print(f"Latitude : {lat}")
print(f"Longitude : {lon}")
plt.figure(figsize=(10,8))
ax = plt.axes(projection = ccrs.PlateCarree())
ax.stock_img()
plt.scatter(float(lon),float(lat),color = 'blue' , marker= 'o')
plt.show()
def Astro(start_date,end_date):
url = f"https://api.nasa.gov/neo/rest/v1/feed?start_date={start_date}&end_date={end_date}&api_key={Api_Key}"
r = requests.get(url)
Data = r.json()
Total_Astro = Data['element_count']
neo = Data['near_earth_objects']
Speak(f"Total Astroid Between {start_date} and {end_date} Is : {Total_Astro}")
Speak("Extact Data For Those Astroids Are Listed Below .")
for body in neo[start_date]:
id = body['id']
name = body['name']
absolute = body['absolute_magnitude_h']
print(id,name,absolute)