salomonsky commited on
Commit
e1ba231
·
1 Parent(s): a6a740b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -22
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
- # Iniciar la fase de carga
 
 
 
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 archivo en la fase de transferencia por datos binarios
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(video_path.size)
36
  }
 
37
 
38
- with video_path as video_file:
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
- page_id = st.text_input('108592224897536')
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 page_id and video_path and description and title:
69
- upload_response = upload_video_to_page(page_id, video_path, description, title)
 
 
 
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')