Как загрузить видео с URL-адреса CDN в виде ролика Facebook через API без локальной загрузки?Python

Программы на Python
Ответить
Anonymous
 Как загрузить видео с URL-адреса CDN в виде ролика Facebook через API без локальной загрузки?

Сообщение Anonymous »

Я работаю над сценарием Python, который загружает видео непосредственно на страницу Facebook в виде роликов с использованием API Facebook Graph. Мои видео размещены на CDN, и я хотел бы загрузить их непосредственно на Facebook, не загружая их на свой локальный сервер.
В настоящее время я использую конечную точку video_reels Facebook для загрузки видео в виде роликов. Для локальных файлов этот процесс отлично работает, загружая видео в двоичной форме. Однако я хочу не загружать видео локально, если оно размещено в CDN, а вместо этого загружать его напрямую с URL-адреса CDN.
Вот упрощенная версия моего текущего кода:

Код: Выделить всё

import requests

# Facebook API parameters
page_access_token = 'your_page_access_token'
page_id = 'your_page_id'
api_version = 'v20.0'
video_url = 'https://cdn.example.com/video.mp4'  # CDN URL of the video
video_description = "My awesome reel"
video_title = "Reel Title"
thumbnail_path = 'thumb.jpg'

# Step 1: Initialize the upload session for reels
def initialize_upload_reel():
url = f"https://graph.facebook.com/{api_version}/{page_id}/video_reels"
payload = {
'upload_phase': 'start',
'access_token': page_access_token
}

response = requests.post(url, data=payload)
if response.status_code == 200:
data = response.json()
video_id = data['video_id']
print(f"Upload session started. Video ID: {video_id}")
return video_id
else:
raise Exception(f"Error initializing reel upload: {response.text}")

# Step 2: Upload the reel video file
def process_upload_reel(video_id, file_size):
url = f"https://rupload.facebook.com/video-upload/v20.0/{video_id}"

headers = {
'Authorization': f'OAuth {page_access_token}',
'Content-Type': 'application/octet-stream',
'offset': '0',
'file_size': str(file_size)
}

with open(video_url, 'rb') as file_data:
response = requests.post(url, headers=headers, data=file_data)

if response.status_code == 200:
print("Reel Uploaded")
else:
raise Exception(f"Error uploading reel video: {response.text}")

def publish_reel(video_id, description, publish_time=None, published=True):
url = f"https://graph.facebook.com/{api_version}/{page_id}/video_reels"
thumb_file = {'thumb': open(thumbnail_url, 'rb')}

payload = {
'access_token': page_access_token,
'video_id': video_id,
'upload_phase': 'finish',
'title': title_entry.get(),  # Ensure title is passed
'description': description_entry.get()  # Ensure description is passed
}

if publish_time:
payload['video_state'] = 'SCHEDULED'
payload['scheduled_publish_time'] = publish_time
else:
payload['video_state'] = 'PUBLISHED' if published else 'DRAFT'

response = requests.post(url, data=payload, files=thumb_file)
thumb_file['thumb'].close()

if response.status_code == 200:
check_video_status(video_id)

else:
raise Exception(f"Error publishing reel: {response.text}")

Проблема:
Когда я пытаюсь выполнить загрузку с помощью URL-адреса CDN, я получаю следующее сообщение об ошибке:

Код: Выделить всё

{
"error": {
"message": "There was a problem uploading your video file. Please try again with another file.",
"type": "OAuthException",
"code": 6000,
"error_subcode": 1363130,
"error_user_title": "Video Upload Is Missing",
"error_user_msg": "The video was not uploaded.",
"fbtrace_id": "Ai3SicB2QxOVA-ZpIQu7cjT"
}
}
Похоже, что API Reels Facebook не поддерживает загрузку видео непосредственно с URL-адреса CDN с использованием параметра file_url, или я могу что-то упустить в реализации.
Вопрос:
Можно ли загружать видео непосредственно с URL-адреса CDN в Facebook Reels через API Graph без предварительной загрузки видео локально?
Если да, то как должен ли я структурировать свой запрос API для достижения это?
Если нет, каков рекомендуемый подход к обработке видео, размещенных на CDN, в этом сценарии (например, избегать загрузки видео на сервер)?
Любая помощь или рекомендации буду очень признателен!

Подробнее здесь: https://stackoverflow.com/questions/789 ... t-download
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»