Spaces:
Runtime error
Runtime error
| import os | |
| import requests | |
| import json | |
| from geopy.geocoders import GoogleV3 | |
| import streamlit as st | |
| API_KEY = os.getenv('WEATHER_API') | |
| GOOGLE_API = os.getenv('GOOGLE_API') | |
| geolocator = GoogleV3(api_key=GOOGLE_API) | |
| STABLE_API = os.getenv("STABLE_API") | |
| def generate_image(prompt): | |
| url = "https://stablediffusionapi.com/api/v3/text2img" | |
| payload = json.dumps({ | |
| "key": STABLE_API, | |
| "prompt": prompt, | |
| "negative_prompt": None, | |
| "width": "512", | |
| "height": "512", | |
| "samples": "1", | |
| "num_inference_steps": "20", | |
| "seed": None, | |
| "guidance_scale": 7.5, | |
| "safety_checker": "yes", | |
| "multi_lingual": "no", | |
| "panorama": "no", | |
| "self_attention": "no", | |
| "upscale": "no", | |
| "embeddings_model": None, | |
| "webhook": None, | |
| "track_id": None | |
| }) | |
| headers = { | |
| 'Content-Type': 'application/json' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| return response.json()["output"][0] | |
| st.title("Weather Image") | |
| user_input = st.text_input('Provide Landmark Below') | |
| additional = st.text_input('Optional Additional Input') | |
| submit = st.button("Submit", type="primary") | |
| # Use for demonstration | |
| # CITY = 'London' | |
| # url = f"https://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}" | |
| if user_input and submit: | |
| location = geolocator.geocode(user_input) | |
| url = f"https://api.openweathermap.org/data/2.5/weather?lat={location.latitude}&lon={location.longitude}&appid={API_KEY}" | |
| response = requests.get(url).json() | |
| city = response['name'] | |
| weather = response["weather"][0]["main"] | |
| country = response["sys"]["country"] | |
| description = response["weather"][0]["description"] | |
| if additional: | |
| prompt = f"{additional} at {user_input} in {location},{country} with the weather consisting of {weather} and {description}" | |
| else: | |
| prompt = f"{user_input} in {location},{country} with the weather consisting of {weather} and {description}" | |
| image_url = generate_image(prompt) | |
| st.image(image_url, caption=f"{weather} at {user_input} in {location},{country}") | |