【问题标题】:How to update snippet and status values of already uploaded video through YouTube API v3?如何通过 YouTube API v3 更新已上传视频的片段和状态值?
【发布时间】:2016-05-20 19:30:32
【问题描述】:

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

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

$.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));
        }
    });

【问题讨论】:

    标签: ajax http youtube youtube-api metadata


    【解决方案1】:

    使用参数part=id,snippet,statusvideos/update端点发出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"
        }
    }
    

    【讨论】:

    • 网址应该如下(如果我错了,请纠正我)
    • @user2985035 不是/videos/update,只是/videos。我的答案中的完整 URL 是您应该调用 PUT 请求的位置:https://www.googleapis.com/youtube/v3/videos?part=id%2C+snippet&amp;key={YOUR_API_KEY}
    • 好的,但我对 url 中的“part=id%2C+sn-p”部分感到困惑
    • @user2985035 哦,我明白你在说什么。我认为这是 Google 方面的 URL 编码问题。完整的 url 应该是这样的:https://www.googleapis.com/youtube/v3/videos?part=id,snippet,status&amp;key={YOUR_API_KEY} 你需要传入id 来获取视频,snippetstatus 因为你正在修改这些属性。
    【解决方案2】:

    这是我玩游戏时使用的代码。不过效果很好。 它不使用 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);
                }
            };
        }
    

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 2017-03-02
      • 2016-05-20
      • 1970-01-01
      • 2015-09-20
      • 2012-11-08
      • 2015-08-31
      • 2019-02-28
      • 2013-12-16
      相关资源
      最近更新 更多