stream / app.py
salomonsky's picture
Update app.py
5d381cb
import streamlit as st
import requests
import os
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.page import Page
# Configuración de la API de Facebook
app_id = '938014541005623'
app_secret = '938014541005623'
access_token = 'EAANVHoeCwzcBO5HGarhHCZApZBIUn2BAWBUZAs48Nki1ihHvg9vqpznwR1TFZBDRpfKz7HB6LyokEm8SHOYIgtjKXCrBtGuyHNFy5dHRtaO8fk4YZC9WHAN7McWTYCcJMuiMazZAaAd4ABemvABkhEeAkY82oxlwSgu4p06UC0SDLiWJO8G7emFp6A9ZA3DSs7oLvfGZB0mje5SYJnu5EMvDN6aApHEcvMOD1TlF1fwD7Fxx0ZCnNdUBPW8nx3m878Ds40KTkPAGjTfq4'
FacebookAdsApi.init(app_id, app_secret, access_token)
page_id = '108592224897536'
# Subir Reel a la página
@st.cache_data
def upload_reel_to_page(page_id, video_file, description, title):
# Paso 1: Inicializar una sesión de carga
start_upload_url = f"https://graph.facebook.com/v18.0/{page_id}/video_reels"
start_upload_data = {
"upload_phase": "start",
"access_token": access_token
}
start_response = requests.post(start_upload_url, json=start_upload_data)
start_response_json = start_response.json()
upload_session_id = start_response_json.get("upload_session_id")
# Paso 2: Subir el video
transfer_binary_url = f"https://rupload.facebook.com/video-upload/v18.0/{upload_session_id}"
transfer_binary_headers = {
"Authorization": f"OAuth {access_token}",
"offset": "0",
"file_size": str(len(video_file))
}
transfer_binary_response = requests.post(transfer_binary_url, headers=transfer_binary_headers, data=video_file)
# Paso 3: Publicar el Reel
complete_url = f"https://graph.facebook.com/v18.0/{page_id}/video_reels"
complete_params = {
"upload_phase": "finish",
"upload_session_id": upload_session_id,
"description": description,
"title": title,
"access_token": access_token,
"video_state": "PUBLISHED"
}
complete_response = requests.post(complete_url, params=complete_params)
complete_response_json = complete_response.json()
return {
"start_response": start_response_json,
"transfer_binary_response": transfer_binary_response.text,
"complete_response": complete_response_json
}
# Interfaz de usuario
st.title('Subir Reel a Facebook')
video_path = st.file_uploader('Seleccionar Reel (Formato: .mp4)')
description = st.text_area('Descripción del Reel')
title = st.text_input('Título del Reel')
if st.button('Subir Reel'):
if access_token and video_path and description and title:
# Obtener el acceso al archivo de video
video_file = video_path.read()
upload_response = upload_reel_to_page(page_id, video_file, description, title)
st.success(f'El Reel se ha subido exitosamente a la página de Facebook. Respuesta: {upload_response}')
else:
st.error('Por favor completa todos los campos, incluyendo el Token de Acceso')