Spaces:
Sleeping
Sleeping
Commit ·
e1ba231
1
Parent(s): a6a740b
Update app.py
Browse files
app.py
CHANGED
|
@@ -3,51 +3,46 @@ import requests
|
|
| 3 |
import os
|
| 4 |
from facebook_business.api import FacebookAdsApi
|
| 5 |
from facebook_business.adobjects.page import Page
|
| 6 |
-
from facebook_business.adobjects.abstractobject import AbstractObject
|
| 7 |
|
| 8 |
-
# Configurar la API de Facebook
|
| 9 |
app_id = '938014541005623'
|
| 10 |
app_secret = '938014541005623'
|
| 11 |
-
access_token = 'EAANVHoeCwzcBO80J0KS7yNme6CGv9CyNZADWVMxkJbKwJKoVi3HO9Ans11Yh6MPigVA9vOVZBqHkYZAyatCTZBkByBCzZBj6UbOJKIm8NuZAtg9qun7ZBICiNTR6v7qLyEgImyl8TaTOKwHAa7ZBNxrJOPXcuZA3PvFXViI9SlpqR4BPFqxwdknFpZBeAgHKCUAXI3kCaOKeOUvyzXjsrfeLhzud4IXQkrVykfhQZDZD'
|
|
|
|
| 12 |
FacebookAdsApi.init(app_id, app_secret, access_token)
|
| 13 |
|
| 14 |
-
# Subir video a la página
|
| 15 |
-
@st.cache
|
| 16 |
-
def upload_video_to_page(page_id, video_path, description, title):
|
| 17 |
-
page = Page(page_id)
|
| 18 |
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
| 20 |
start_upload_url = f"https://graph.facebook.com/v18.0/{page_id}/video_reels"
|
| 21 |
start_upload_data = {
|
| 22 |
"upload_phase": "start",
|
| 23 |
"access_token": access_token
|
| 24 |
}
|
| 25 |
-
|
| 26 |
start_response = requests.post(start_upload_url, json=start_upload_data)
|
| 27 |
start_response_json = start_response.json()
|
| 28 |
upload_session_id = start_response_json.get("upload_session_id")
|
| 29 |
|
| 30 |
-
# Subir el
|
| 31 |
transfer_binary_url = f"https://rupload.facebook.com/video-upload/v18.0/{upload_session_id}"
|
| 32 |
transfer_binary_headers = {
|
| 33 |
"Authorization": f"OAuth {access_token}",
|
| 34 |
"offset": "0",
|
| 35 |
-
"file_size": str(
|
| 36 |
}
|
|
|
|
| 37 |
|
| 38 |
-
|
| 39 |
-
transfer_binary_response = requests.post(transfer_binary_url, headers=transfer_binary_headers, data=video_file)
|
| 40 |
-
|
| 41 |
-
# Completar la carga
|
| 42 |
complete_url = f"https://graph.facebook.com/v18.0/{page_id}/video_reels"
|
| 43 |
complete_params = {
|
| 44 |
"upload_phase": "finish",
|
| 45 |
"upload_session_id": upload_session_id,
|
| 46 |
"description": description,
|
| 47 |
"title": title,
|
| 48 |
-
"access_token": access_token
|
|
|
|
| 49 |
}
|
| 50 |
-
|
| 51 |
complete_response = requests.post(complete_url, params=complete_params)
|
| 52 |
complete_response_json = complete_response.json()
|
| 53 |
|
|
@@ -59,14 +54,17 @@ def upload_video_to_page(page_id, video_path, description, title):
|
|
| 59 |
|
| 60 |
# Interfaz de usuario
|
| 61 |
st.title('Subir Reel a Facebook')
|
| 62 |
-
|
| 63 |
-
video_path = st.file_uploader('Seleccionar Reel')
|
| 64 |
description = st.text_area('Descripción del Reel')
|
| 65 |
title = st.text_input('Título del Reel')
|
| 66 |
|
| 67 |
if st.button('Subir Reel'):
|
| 68 |
-
if
|
| 69 |
-
|
|
|
|
|
|
|
|
|
|
| 70 |
st.success(f'El Reel se ha subido exitosamente a la página de Facebook. Respuesta: {upload_response}')
|
| 71 |
else:
|
| 72 |
-
st.error('Por favor completa todos los campos')
|
|
|
|
| 3 |
import os
|
| 4 |
from facebook_business.api import FacebookAdsApi
|
| 5 |
from facebook_business.adobjects.page import Page
|
|
|
|
| 6 |
|
|
|
|
| 7 |
app_id = '938014541005623'
|
| 8 |
app_secret = '938014541005623'
|
| 9 |
+
access_token = st.text_input('EAANVHoeCwzcBO80J0KS7yNme6CGv9CyNZADWVMxkJbKwJKoVi3HO9Ans11Yh6MPigVA9vOVZBqHkYZAyatCTZBkByBCzZBj6UbOJKIm8NuZAtg9qun7ZBICiNTR6v7qLyEgImyl8TaTOKwHAa7ZBNxrJOPXcuZA3PvFXViI9SlpqR4BPFqxwdknFpZBeAgHKCUAXI3kCaOKeOUvyzXjsrfeLhzud4IXQkrVykfhQZDZD')
|
| 10 |
+
page_id = '108592224897536'
|
| 11 |
FacebookAdsApi.init(app_id, app_secret, access_token)
|
| 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
+
# Subir Reel a la página
|
| 15 |
+
@st.cache
|
| 16 |
+
def upload_reel_to_page(page_id, video_file, description, title):
|
| 17 |
+
# Paso 1: Inicializar una sesión de carga
|
| 18 |
start_upload_url = f"https://graph.facebook.com/v18.0/{page_id}/video_reels"
|
| 19 |
start_upload_data = {
|
| 20 |
"upload_phase": "start",
|
| 21 |
"access_token": access_token
|
| 22 |
}
|
|
|
|
| 23 |
start_response = requests.post(start_upload_url, json=start_upload_data)
|
| 24 |
start_response_json = start_response.json()
|
| 25 |
upload_session_id = start_response_json.get("upload_session_id")
|
| 26 |
|
| 27 |
+
# Paso 2: Subir el video
|
| 28 |
transfer_binary_url = f"https://rupload.facebook.com/video-upload/v18.0/{upload_session_id}"
|
| 29 |
transfer_binary_headers = {
|
| 30 |
"Authorization": f"OAuth {access_token}",
|
| 31 |
"offset": "0",
|
| 32 |
+
"file_size": str(len(video_file))
|
| 33 |
}
|
| 34 |
+
transfer_binary_response = requests.post(transfer_binary_url, headers=transfer_binary_headers, data=video_file)
|
| 35 |
|
| 36 |
+
# Paso 3: Publicar el Reel
|
|
|
|
|
|
|
|
|
|
| 37 |
complete_url = f"https://graph.facebook.com/v18.0/{page_id}/video_reels"
|
| 38 |
complete_params = {
|
| 39 |
"upload_phase": "finish",
|
| 40 |
"upload_session_id": upload_session_id,
|
| 41 |
"description": description,
|
| 42 |
"title": title,
|
| 43 |
+
"access_token": access_token,
|
| 44 |
+
"video_state": "PUBLISHED"
|
| 45 |
}
|
|
|
|
| 46 |
complete_response = requests.post(complete_url, params=complete_params)
|
| 47 |
complete_response_json = complete_response.json()
|
| 48 |
|
|
|
|
| 54 |
|
| 55 |
# Interfaz de usuario
|
| 56 |
st.title('Subir Reel a Facebook')
|
| 57 |
+
|
| 58 |
+
video_path = st.file_uploader('Seleccionar Reel (Formato: .mp4)')
|
| 59 |
description = st.text_area('Descripción del Reel')
|
| 60 |
title = st.text_input('Título del Reel')
|
| 61 |
|
| 62 |
if st.button('Subir Reel'):
|
| 63 |
+
if access_token and video_path and description and title:
|
| 64 |
+
# Obtener el acceso al archivo de video
|
| 65 |
+
video_file = video_path.read()
|
| 66 |
+
|
| 67 |
+
upload_response = upload_reel_to_page(page_id, video_file, description, title)
|
| 68 |
st.success(f'El Reel se ha subido exitosamente a la página de Facebook. Respuesta: {upload_response}')
|
| 69 |
else:
|
| 70 |
+
st.error('Por favor completa todos los campos, incluyendo el Token de Acceso')
|