如何通过YouTube API v3更新已上传视频的摘要和状态值?

时间:2016-02-10 12:29:02

标签: ajax http youtube youtube-api metadata

如何使用AJAX请求通过YouTube API v3“https://www.googleapis.com/youtube/v3/videos”更改已上传视频的摘要和状态值?

我的更新代码(不工作):

$.ajax({
        type: "PUT",
        dataType: "jsonp", 
        url: "https://www.googleapis.com/youtube/v3/videos?part=id,snippet,status&key=<API Key>",
        headers: {
            "Content-Type": "application/json",
            "Authorization": "Bearer " + <Access Token>
        },
        data: $.parseJSON('{"id": "<Video ID>", "snippet": {"title": "New Title", "description": "New Description"}, "status": {"privacyStatus": "unlisted"}}'), 
        success: function(data, error, completeError) {
            alert( JSON.stringify(data));
            alert( JSON.stringify(error));
            alert( JSON.stringify(completeError));
        }
    });

2 个答案:

答案 0 :(得分:1)

使用参数part=id,snippet,status向<{3}}端点发出PUT请求:

HTTP PUT: https://www.googleapis.com/youtube/v3/videos?part=id,snippet,status&key={YOUR_API_KEY}

您的要求正文:

{
    "id": "VIDEO_ID",
    "snippet": { // any snippet fields you want to change
        "description": "New Video Description"
    },
    "status": { // any status fields you want to change
        "privacyStatus": "public"
    }
}

答案 1 :(得分:0)

这是我玩游戏时使用的代码。虽然它运作良好。 它没有使用JQuery,但应该指向正确的方向。

function UpdateVideoInfo(video_id){
        var resource = {
                'snippet':{
                    'title' : 'test title',
                    'description' : 'test description',
                    'categoryId' : 22
                },
                'status' : {
                    'privacyStatus' : 'private'
                },
                'id': video_id
            };

        post_string = JSON.stringify(resource);

        var ajax = new XMLHttpRequest();
        ajax.open('PUT', 'https://www.googleapis.com/youtube/v3/videos?part=snippet,status', true);
        ajax.setRequestHeader("Authorization", '<?php echo $authorization_header; ?>');
        ajax.setRequestHeader("Content-type", "application/json; charset=UTF-8");
        ajax.send(post_string);

        ajax.onload = function() {
            if (ajax.status == 200) {
                alert(ajax.responseText);
            }
        };
    }