За последние 24 часа нас посетили 37985 программистов и 8304 робота. Сейчас ищет 1921 программист ...

Загрузка видео на ютуб

Тема в разделе "PHP для новичков", создана пользователем AnteFil, 11 фев 2023.

  1. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Ищу скрипт для загрузки видео на php есть примеры, но старые которые не работают или целые классы но с ними не понятно как работать да и километровые странички мне не нужны так как просто хочу загрузить видос.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Чем загрузка видео отличается от загрузки обычного файла? Да ничем...

    Либо, как всегда - неадекватная формулировка вопроса.
     
  3. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Ну там как минимум надо ключ API получать, но его вроде получил. Попросил нейросеть написать код она написала но там тоже устаревшие алгоритмы.
    PHP:
    1. // Подключаем библиотеку Google API PHP Client
    2. require_once 'google-api-php-client/src/Google/autoload.php';
    3. // Создаем новый Google_Client объект
    4. $client = new Google_Client();
    5. // Устанавливаем API ключ
    6. $client->setDeveloperKey('0000000000000000');
    7. // Создаем новый YouTube сервисный объект
    8. $youtube = new Google_Service_YouTube($client);
    9. // Загружаем видео файл (например, video.mp4) с помощью $snippet, $status and $videoId объектов
    10. $snippet = new Google_Service_YouTube_VideoSnippet();
    11. $snippet->setTitle('My test video'); // Устанавливаем название видео
    12. $snippet->setDescription('This is a test video uploaded via the YouTube API'); // Устанавливаем описание видео
    13. $snippet->setTags(array('test', 'example', 'php')); // Устанавливаем тэги
    14. $status = new Google_Service_YouTube_VideoStatus(); // Определяем статус видео (public/private/unlisted)
    15. $status->privacyStatus = 'public'; // устанавливаем статус public
    16. $videoId = $youtube->videos->insert('status,snippet', array(
    17.     'data' => array(
    18.         'snippet' => $snippet,
    19.         'status' => $status
    20.     ),
    21.     'mediaUpload' => array(
    22.         'body' => file_get_contents('video.mp4'),
    23.         'mimeType' => 'video/mp4',
    24.         'uploadType'=> 'multipart')));
    25.  
    26. }
    --- Добавлено ---
    google-api-php-client эта библиотека уже переписана
     
  4. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Я так понимаю сначала надо как-то получить ссылку для загрузки файла
     
  5. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Настолько печально в сети с инфой что этот пост уже вылазит с поиске яндекса вторым ответом )))))
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Дожили... Нейросети просят писать за них. Смотрите доку по api ютуба, там всё есть
     
  7. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    В общем сначала надо как то авторизоваться! как ?
    --- Добавлено ---
    Нейросеть написала вот такой вариант но он не работает ))))
    PHP:
    1.  // Инициализация необходимых параметров
    2. $client_id = '00000000';
    3. $client_secret = '0000000000';
    4. $redirect_uri = 'start.php';
    5. // Генерация ссылки для авторизации
    6. $url = 'https://accounts.google.com/o/oauth2/auth';
    7. $params = array(
    8.     'redirect_uri'  => $redirect_uri,
    9.     'response_type' => 'code',
    10.     'client_id'     => $client_id,
    11.     'scope'         => 'https://www.googleapis.com/auth/youtube'
    12. );
    13. $link = $url . '?' . http_build_query($params);
    14. // Получение access token и refresh token с использованием кода, полученного после авторизации
    15. if (isset($_GET['code'])) { // Проверка, был ли получен code
    16.     $result = false;
    17.     $params = array(
    18.         'client_id'     => $client_id,
    19.         'client_secret' => $client_secret,
    20.         'redirect_uri'  => $redirect_uri,
    21.         'grant_type'    => 'authorization_code',
    22.         'code'          => $_GET['code']
    23.     );
    24.     $url = 'https://accounts.google.com/o/oauth2/token';
    25.     $curl = curl_init();
    26.     curl_setopt($curl, CURLOPT_URL, $url); // URL, на который будет отправлен запрос
    27.     curl_setopt($curl, CURLOPT_POST, 1); // Метод POST
    28.     curl_setopt($curl, CURLOPT_POSTFIELDS, urldecode(http_build_query($params))); // Данные, которые будут отправлены серверу
    29.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // TRUE - указывает cURL, что результат работы cURL-функций должен быть возвращён
    30.                                                      // в виде строки. FALSE - указывает cURL-функциям, что результат нужно              //выводить "как-есть"
    31.     $result = curl_exec($curl); // TRUE - указывает cURL-функциям, что результат нужно              //выводить "как-есть"
    32.     curl_close($curl);
    33.     // json-данные, содержащие access token and refresh token
    34.     $tokenInfo = json_decode($result, true);
    35.     print_r($result);
    --- Добавлено ---
    Сюда буду накидывать для потомков так как инфы вообще нет. Да и мне что бы не забыть )))) вообщем на сколько я понял надо сформировать вот такую ссылку.
    HTML:
    1. https://accounts.google.com/o/oauth2/auth?
    2. client_id=60*********5ad3np.apps.googleusercontent.com
    3. &redirect_uri=urn:ietf:wg:oauth:2.0:oob
    4. &access_type=offline&response_type=code
    5. &scope=https://www.googleapis.com/auth/youtube.readonly
    --- Добавлено ---
    И открыть ее тупо в браузере
     
  8. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Вообщем инфы о том как добавить приложение инфы куча писать не буду. Сначала нужно получить access_token

    PHP:
    1. $client_id = '000000000000.apps.googleusercontent.com';
    2. $client_secret = '000000000000000';
    3. $redirect_uri = 'https://site.ru/start.php';
    4.  $params = array(
    5.     'client_id'     => $client_id,
    6.     'redirect_uri'  => $redirect_uri,
    7.     'response_type' => 'code',
    8.     'scope'         => 'https://www.googleapis.com/auth/youtube.upload',
    9.     'state'         => '123',
    10.     'access_type'   => 'offline'
    11. );
    12.  
    13. $url = 'https://accounts.google.com/o/oauth2/v2/auth?' . urldecode(http_build_query($params));
    14. echo '<a href="' . $url . '">Авторизация через Google</a>';
    Дальше пока проблема надо как то URL для загрузки получить
     
  9. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    PHP:
    1. $file = array(
    2.     'data' => file_get_contents("1.mp4"),
    3.     'mimeType' => 'application/octet-stream',
    4.     'uploadType' => 'multipart'
    5.   );
    6. $attachment = '{
    7.  "snippet": {
    8.    "categoryId": "22",
    9.    "description": "Description of uploaded video.",
    10.    "title": "Test video upload.",
    11.    "tags": [
    12.      "музыка, песня, классика"
    13.    ],
    14.    "defaultLanguage": "ru",
    15.    "thumbnails": {
    16.      "default": {
    17.        "url": { "site.ru/00.jpg"
    18.      }
    19.    }
    20.  },
    21.  "status": {
    22.    "privacyStatus": "private",
    23.    "license": "youtube"
    24.  }
    25. }';
    26. $params = array(
    27.     "file"        =>  $attachment,
    28.     "data"        =>  $file
    29. );
    30. $rrrr = json_encode($params);
    31.  
    32. $ch = curl_init('https://youtube.googleapis.com/youtube/v3/videos?key=000000000000000');
    33. curl_setopt($ch, CURLOPT_POST, 1);
    34. curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data", 'Authorization: Bearer 0000000000', 'Accept: application/json', 'Content-Type: application/json'));
    35. curl_setopt($ch, CURLOPT_POSTFIELDS, $file);
    36. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    37. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    38. curl_setopt($ch, CURLOPT_HEADER, false);
    39. $result = json_decode(curl_exec($ch),true);
    40. print_r($result);
    --- Добавлено ---
    key - это ключ api
    Bearer - секретный ключ авторизации

    Но у меня ни чего не получаеться валиться ошибка