Spaces:
Running
Running
import streamlit as st | |
import requests | |
import json | |
import os | |
# Load API Key from Hugging Face Secrets | |
API_KEY = os.getenv("INSTA_API") | |
# API Details | |
API_URL = "https://instagram230.p.rapidapi.com/user/details" | |
HEADERS = { | |
"x-rapidapi-key": API_KEY, | |
"x-rapidapi-host": "instagram230.p.rapidapi.com" | |
} | |
# Streamlit UI | |
st.set_page_config(page_title="Instagram User Details", layout="wide") | |
st.title("πΈ Instagram User Details") | |
# Sidebar for options | |
st.sidebar.header("Options") | |
show_json = st.sidebar.checkbox("Show Raw JSON Response", value=False) | |
# User Input | |
username = st.text_input("Enter Instagram Username:", "joerogan") | |
if st.button("Fetch Details"): | |
with st.spinner("Fetching data..."): | |
response = requests.get(API_URL, headers=HEADERS, params={"username": username}) | |
if response.status_code == 200: | |
data = response.json() | |
st.success("β Data Retrieved Successfully!") | |
# Extracting Links | |
links = [value for key, value in data.items() if isinstance(value, str) and value.startswith("http")] | |
# Display Links | |
if links: | |
st.subheader("π Extracted Links:") | |
for link in links: | |
st.markdown(f"[π {link}]({link})") | |
else: | |
st.info("No links found in the response.") | |
# Display Key-Value Pairs | |
st.subheader("π User Details:") | |
text_data = "" | |
for key, value in data.items(): | |
st.write(f"**{key}:** {value}") | |
text_data += f"{key}: {value}\n" | |
# Option to Show Raw JSON Data | |
if show_json: | |
st.subheader("π Raw JSON Data") | |
st.json(data) | |
# **Download Buttons** | |
st.subheader("β¬οΈ Download Data") | |
# Download JSON File | |
json_data = json.dumps(data, indent=4) | |
st.download_button(label="Download JSON", data=json_data, file_name=f"{username}_data.json", mime="application/json") | |
# Download Text File | |
st.download_button(label="Download Text", data=text_data, file_name=f"{username}_details.txt", mime="text/plain") | |
# Download Image (If available) | |
profile_pic = data.get("profile_picture") | |
if profile_pic: | |
st.image(profile_pic, caption="Profile Picture") | |
img_bytes = requests.get(profile_pic).content | |
st.download_button(label="Download Profile Picture", data=img_bytes, file_name=f"{username}_profile.jpg", mime="image/jpeg") | |
else: | |
st.error("β Failed to retrieve data. Please check the username.") | |
# Footer | |
st.markdown("---") | |
st.caption("Powered by RapidAPI & Streamlit") | |