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")