Как получить идентификаторы видео из приватного плейлиста на Dailymotion?

Вопрос или проблема

Я хочу получить идентификаторы частных видео из частного плейлиста Dailymotion с помощью публичного API-ключа. Я пробую следующее:

<?php
//Выполнить аутентификацию
$url = "https://api.dailymotion.com/oauth/token";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array( 
"Content-Type: application/x-www-form-urlencoded", 
); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
$data = "grant_type=password&client_id=xxx&client_secret=xxx&username=xxx&password=xxx&scope=email,feed,manage_analytics,manage_app_connections,manage_applications,manage_claim_rules,manage_domains,manage_features,manage_history,manage_likes,manage_player,manage_players,manage_playlists,manage_records,manage_subscriptions,manage_subtitles,manage_user_settings,manage_videos,read_insights,userinfo";
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$resp = curl_exec($curl);
curl_close($curl);
$data = json_decode($resp, true);

//Получить токен доступа
$access_token = $data['access_token'];

//Получить список идентификаторов видео
$url = "https://api.dailymotion.com/playlist/xxx/videos?fields=private_id%2Cprivate=true";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array(

);
$auth = "Authorization: Bearer " . $access_token;
$headers[0] = $auth;
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$resp = curl_exec($curl);
curl_close($curl);
$data = json_decode($resp, true);
//$ids = array_column($data['list'], 'private_id');
//print_r($ids);
var_dump($data);
?>

Я получаю следующее, хотя в этом частном плейлисте есть частные видео:

array(6) { ["page"]=> int(1) ["limit"]=> int(10) ["explicit"]=> bool(false) ["total"]=> int(0) ["has_more"]=> bool(false) ["list"]=> array(0) { } }

Ответ или решение

Вопрос о получении идентификаторов видео из приватного плейлиста на Dailymotion с использованием публичного API ключа требует глубокого понимания работы API и механизма аутентификации. Давайте подробно рассмотрим, как можно решить эту задачу.

1. Понимание API Dailymotion

Dailymotion предоставляет обширные возможности для работы с видео и плейлистами через своё API. Однако важно отметить, что доступ к приватным ресурсам требует соответствующих прав. Если вы хотите получить доступ к приватным видео, вам понадобится доступный токен аутентификации, который предоставляет права управления плейлистами и видео.

2. Аутентификация

В вашем коде вы правильно пытаетесь получить токен доступа для аутентификации. Приведем некотрые важные моменты, которые могут помочь вам:

  • Убедитесь, что вы используете правильные параметры client_id, client_secret, username и password.
  • Проверьте, что у вашего приложения есть необходимые разрешения для доступа к приватным видео и плейлистам через правильно прописанные scope.

Пример кода для аутентификации:

$url = "https://api.dailymotion.com/oauth/token";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$headers = array(
    "Content-Type: application/x-www-form-urlencoded",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$data = http_build_query(array(
    'grant_type' => 'password',
    'client_id' => 'xxx', // ваш Client ID
    'client_secret' => 'xxx', // ваш Client Secret
    'username' => 'xxx', // ваше имя пользователя
    'password' => 'xxx', // ваш пароль
    'scope' => 'manage_playlists,manage_videos'
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$resp = curl_exec($curl);
curl_close($curl);
$data = json_decode($resp, true);

$access_token = $data['access_token'] ?? null;

3. Получение идентификаторов видео из приватного плейлиста

Следующий шаг – это извлечение идентификаторов видео из приватного плейлиста. Убедитесь, что вы правильно формируете URL запроса и используете токен доступа. Пример:

$url = "https://api.dailymotion.com/playlist/xxx/videos?fields=id,title&access_token=" . $access_token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$resp = curl_exec($curl);
curl_close($curl);
$data = json_decode($resp, true);

Обратите внимание на форматирование запроса и то, что вам нужно заменить xxx на идентификатор вашего плейлиста.

4. Обработка ответа

Если вы получили пустой массив видео, несколько параметров могут быть причиной:

  • Недоступное видео из-за недостатка прав.
  • Неправильно указанный идентификатор плейлиста.
  • Ограничение на доступ к API или ошибочная настройка прав доступа.
if (empty($data['list'])) {
    echo "Не удалось получить идентификаторы видео из плейлиста.";
} else {
    $ids = array_column($data['list'], 'id');
    print_r($ids);
}

Заключение

Для успешного получения идентификаторов видео из приватного плейлиста Dailymotion необходимо обеспечить правильную аутентификацию, использовать корректный токен доступа и удостовериться в наличии прав для доступа к приватному контенту. Проверка всех этих шагов даст вам возможность разграничить ошибочные запросы и потенциальные отказы в доступе.

Оцените материал
Добавить комментарий

Капча загружается...