Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
from datetime import datetime | |
API_KEY = "PJRAUD6KHJ2O097X" | |
def get_stock_data(symbol, start_date, end_date): | |
url = f"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={symbol}&apikey={API_KEY}" | |
response = requests.get(url) | |
data = response.json() | |
if "Time Series (Daily)" in data: | |
df = pd.DataFrame(data["Time Series (Daily)"]).T | |
df.index = pd.to_datetime(df.index) | |
# Convert input dates to datetime | |
try: | |
start_datetime = datetime.strptime(start_date, '%Y-%m-%d') | |
end_datetime = datetime.strptime(end_date, '%Y-%m-%d') | |
df = df.loc[start_datetime:end_datetime] | |
except ValueError: | |
return "Invalid date format. Please use YYYY-MM-DD.", None | |
df.columns = ["Open", "High", "Low", "Close", "Volume"] | |
# Plotting | |
plt.figure(figsize=(10, 5)) | |
plt.plot(df['Close'], label='Close Price') | |
plt.title(f'Closing Price of {symbol}') | |
plt.xlabel('Date') | |
plt.ylabel('Price') | |
plt.legend() | |
plt.grid(True) | |
plt.xticks(rotation=45) | |
plt.tight_layout() | |
return df.to_html(), gr.Image.from_matplotlib(plt) | |
else: | |
return "Data not found or invalid stock symbol.", None | |
iface = gr.Interface( | |
fn=get_stock_data, | |
inputs=[ | |
gr.Textbox(label="Stock Symbol", placeholder="Enter a stock symbol (like AAPL, MSFT)"), | |
gr.Textbox(label="Start Date", placeholder="YYYY-MM-DD"), | |
gr.Textbox(label="End Date", placeholder="YYYY-MM-DD") | |
], | |
outputs=["html", "plot"], | |
title="Personalized Stock Market Data App", | |
description="Enter a stock symbol and date range to fetch its daily time series data." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |