Insta_Details / app.py
gskdsrikrishna's picture
Update app.py
fd4db75 verified
raw
history blame
2.81 kB
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")