File size: 2,918 Bytes
bcb3ab3
a318969
3b538d7
6b19423
 
d96f32a
b99a65c
27a9a31
 
5d381cb
6b19423
b99a65c
a318969
e1ba231
b99a65c
e1ba231
 
a318969
 
 
 
 
 
 
 
 
e1ba231
a318969
 
 
 
e1ba231
a318969
e1ba231
a318969
e1ba231
a318969
 
 
 
 
 
e1ba231
 
a318969
 
 
 
 
 
 
 
 
6b19423
 
 
e1ba231
 
6b19423
 
ef14339
6b19423
e1ba231
 
 
 
 
a318969
bcb3ab3
b99a65c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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')