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