Spaces:
Sleeping
Sleeping
| 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 | |
| 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') |