API данных Youtube с Javascript: прямая загрузка видео

Благодаря документации API данных Youtube я могу выполнять возобновляемые загрузки видео с помощью Javascript (с XMLHttpRequest). Это хорошо задокументировано. Но есть функция Javascript (youtube.videos.insert), которая (с моей личной точки зрения) плохо документирована. После двух дней поиска в Интернете я вынужден обратиться за помощью.

Вот образец кода

function defineRequest() {
if (!isAuthorized) {
  alert("You need to authorize the request to proceed.");
  return;
}

var file = document.querySelector('input[type=file]').files[0];
if (!file) {
    alert("You need to select a file to proceed.");
    return;
}

var reader = new FileReader();
reader.onloadend = function() {
    alert("file load completed");

    var data = reader.result;
    var fileStream = new Blob([new Uint8Array(data)], {type: 'application/octet-stream'});
    //var fileStream = new Blob([data], {type: 'application/octet-stream'});
    alert(fileStream.size);
    alert(fileStream.type);

    var request = gapi.client.youtube.videos.insert({
        media: {
            mimeType: 'application/octet-stream',
            body: fileStream
        },
        part: 'id,snippet,status',
        notifySubscribers: true,
        resource: {
            snippet: {
                categoryId: 22,
                title: $('#title').val(),
                description: $('#description').text(),
                tags: ['hello']
            },
            status: {
                privacyStatus: $('#privacy-status option:selected').text()
            }
        }
    });

    request.execute(function (response) {
        alert(JSON.stringify(response));
        console.info(JSON.stringify(response));

        if (response === false) {
            alert("cannot upload video");
            console.info("Cannot upload video");
            return;
        } else {
            if (response.code != 0) {
                alert("cannot upload video");
                console.info("Cannot upload video");
                return;
            }

            var result = response.result;
            alert(JSON.stringify(result));
            alert("upload completed");          
        }
    });
}
reader.readAsArrayBuffer(file);

}

И вот ошибка 400, которую я получил (mediaBodyRequired). Может у кого-нибудь есть подсказка?

{
"code":400,
"data":[{
        "domain":"youtube.video",
        "reason":"mediaBodyRequired",
        "message":"The request does not include the video content.",
        "locationType":"other",
        "location":"body"
    }],
"message":"The request does not include the video content.",
"error": {
    "code":400,
    "data":[{
        "domain":"youtube.video",
        "reason":"mediaBodyRequired",
        "message":"The request does not include the video content.",
        "locationType":"other",
        "location":"body"
    }],
    "message":"The request does not include the video content."
}

}

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
303
1

Ответы 1

Вы читали документы? Это выглядит совсем иначе, чем код.

Ты прав ! В документации описывается способ загрузки видео с помощью CORS. Но есть еще один API, который позволяет напрямую загружать видео. Поскольку я пишу внутреннюю документацию по API Youtube, мне нужно было кое-что рассказать об этом API. Но пока я просто упомяну имя API, но не буду ничего описывать по этому поводу, потому что я не смог реализовать с его помощью эту функцию ...

Claude Lalyre 18.05.2018 16:30

Другие вопросы по теме