Spaces:
Runtime error
Runtime error
"""Util that calls several NASA APIs.""" | |
import json | |
import requests | |
from langchain_core.pydantic_v1 import BaseModel | |
IMAGE_AND_VIDEO_LIBRARY_URL = "https://images-api.nasa.gov" | |
class NasaAPIWrapper(BaseModel): | |
"""Wrapper for NASA API.""" | |
def get_media(self, query: str) -> str: | |
params = json.loads(query) | |
if params.get("q"): | |
queryText = params["q"] | |
params.pop("q") | |
else: | |
queryText = "" | |
response = requests.get( | |
IMAGE_AND_VIDEO_LIBRARY_URL + "/search?q=" + queryText, params=params | |
) | |
data = response.json() | |
return data | |
def get_media_metadata_manifest(self, query: str) -> str: | |
response = requests.get(IMAGE_AND_VIDEO_LIBRARY_URL + "/asset/" + query) | |
return response.json() | |
def get_media_metadata_location(self, query: str) -> str: | |
response = requests.get(IMAGE_AND_VIDEO_LIBRARY_URL + "/metadata/" + query) | |
return response.json() | |
def get_video_captions_location(self, query: str) -> str: | |
response = requests.get(IMAGE_AND_VIDEO_LIBRARY_URL + "/captions/" + query) | |
return response.json() | |
def run(self, mode: str, query: str) -> str: | |
if mode == "search_media": | |
output = self.get_media(query) | |
elif mode == "get_media_metadata_manifest": | |
output = self.get_media_metadata_manifest(query) | |
elif mode == "get_media_metadata_location": | |
output = self.get_media_metadata_location(query) | |
elif mode == "get_video_captions_location": | |
output = self.get_video_captions_location(query) | |
else: | |
output = f"ModeError: Got unexpected mode {mode}." | |
try: | |
return json.dumps(output) | |
except Exception: | |
return str(output) | |