Spaces:
Sleeping
Sleeping
import streamlit as st | |
import requests | |
import json | |
# influencers_data = { | |
# "influencer1": { | |
# "onboarded": True, | |
# "name": "Influencer One", | |
# "image": "./images/inf1.png", # Replace with actual image paths | |
# "details": "Details about Influencer One..." | |
# }, | |
# "influencer2": { | |
# "onboarded": True, | |
# "name": "Influencer Two", | |
# "image": "./images/inf2.png", | |
# "details": "Details about Influencer Two..." | |
# }, | |
# "influencer3": { | |
# "onboarded": False, | |
# "name": "Influencer Two", | |
# "image": "./images/inf2.png" | |
# } | |
# # Add more influencers as needed | |
# } | |
profile_default_image_url = "https://t4.ftcdn.net/jpg/03/46/93/61/360_F_346936114_RaxE6OQogebgAWTalE1myseY1Hbb5qPM.jpg" | |
def onboard_single_influencer(handle): | |
url = "https://us-central1-steam-cache-277314.cloudfunctions.net/create_insta_task" | |
data = {"handle": handle} | |
response = requests.post(url, json=data) | |
if response.status_code == 200: | |
st.write("Onboarding influencer! Please wait...") | |
else: | |
st.write(response["data"]["error"]) | |
def show_onboarding_page(): | |
st.title("Onboard Influencers") | |
# Upload field for multiple influencers | |
uploaded_file = st.file_uploader("Upload a file with influencer handles", type=["csv", "xlsx"]) | |
# Input for single influencer handle | |
single_handle = st.text_input("...or enter a single influencer handle") | |
# Onboard button | |
if st.button("Onboard Influencers"): | |
if uploaded_file is not None: | |
# Process the uploaded file | |
onboard_influencers_from_file(uploaded_file) | |
elif single_handle: | |
# Process the single handle | |
onboard_single_influencer(single_handle) | |
else: | |
st.error("Please upload a file or enter a handle.") | |
# Function to display onboarded influencers (placeholder) | |
display_onboarded_influencers() | |
def onboard_influencers_from_file(file): | |
# Logic to read and process file to onboard influencers | |
pass # Replace with actual implementation | |
def display_onboarded_influencers(): | |
# Display the list of onboarded influencers | |
get_all_url = "https://us-central1-steam-cache-277314.cloudfunctions.net/get_all_influencer" | |
data = {} | |
response = requests.post(get_all_url, json=data) | |
if response.status_code == 200: | |
st.write("List of Onboarded Influencers...") | |
influencers_list = json.loads(response.text) | |
for influencer_data in influencers_list: | |
# Download image | |
profile_img_url = influencer_data.get('profile_image_url', profile_default_image_url) | |
img_response = requests.get(profile_img_url) | |
image_url = profile_default_image_url | |
if img_response.status_code == 200: | |
image_url = f"downloaded_image_{influencer_data.get('handle', 'NoName')}.jpg" | |
with open(image_url, "wb") as file: | |
file.write(img_response.content) | |
# Display influencer data | |
col1, col2 = st.columns([1, 3]) | |
with col1: | |
st.image(image_url, width=150) | |
with col2: | |
with st.expander(f"{influencer_data.get('name', 'No Name')}'s Details"): | |
st.markdown(f"**Handle:** {influencer_data.get('handle', 'No Handle')}") | |
st.markdown(f"**Bio:** {influencer_data.get('bio', 'No Bio')}") | |
st.markdown(f"**Email:** {influencer_data.get('email', 'N/A')}") | |
st.markdown(f"**Country:** {influencer_data.get('country', 'N/A')}") | |
st.markdown(f"**Location:** {influencer_data.get('location', 'N/A')}") | |
st.markdown(f"**Followers Count:** {influencer_data.get('followers_count', 'N/A')}") | |
st.markdown(f"**Engagement Rate:** {influencer_data.get('engagement_rate', 'N/A')*100:.2f}%") | |
st.markdown("### Frequent Hashtags") | |
hashtags = influencer_data.get('frequent_hashtags', []) | |
st.write(hashtags) | |
st.markdown("### Post Summary") | |
st.write(influencer_data.get('post_summary', 'N/A')) | |
else: | |
st.write(response["data"]["error"]) | |