【问题标题】:Upload thumbnail to Youtube API using curl使用 curl 将缩略图上传到 Youtube API
【发布时间】:2021-05-21 16:22:13
【问题描述】:

我正在使用 curl 和 YouTube API v3 来创建广播、修改视频标题等,没有任何问题。我的问题是当我尝试使用来自 Google 的 the docs 向视频添加缩略图时。

这是我的示例,出于安全原因更改了密钥:

curl --request POST -v \
  "https://youtube.googleapis.com/youtube/v3/thumbnails/set\
?videoId=RoZypUhZY04\
&uploadType=media\
&key=mykey" \
  --header 'Authorization: Bearer my_access_token' \
  --header 'Content-Type: image/jpeg'\
  -F 'file=@/Users/adviner/Projects/Prototypes/VendorAPI/source/YouTube/YouTube-BOS.jpg'\
  -F 'filename=YouTube-BOS.jpg'

我试过了:

-F 'image=@/Users/adviner/Projects/Prototypes/VendorAPI/source/YouTube/YouTube-BOS.jpg'\

在文档中它说使用以下 URL 来发布图像:

https://www.googleapis.com/upload/youtube/v3/thumbnails/set

但是当您查看它说要使用的示例时:

https://youtube.googleapis.com/youtube/v3/thumbnails/set

我都试过了,看起来图片上传正确,但我收到以下错误:

对于第一个 URL:https://www.googleapis.com/upload/youtube/v3/thumbnails/set

{
  "error": {
    "code": 400,
    "message": "Media type 'image/jpeg; boundary=------------------------136ebfc0c8146cb8' is not supported. ",
    "errors": [
      {
        "message": "Media type 'image/jpeg; boundary=------------------------136ebfc0c8146cb8' is not supported. ",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}

使用网址时:https://youtube.googleapis.com/youtube/v3/thumbnails/set

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

关于我缺少什么的任何想法?

谢谢

【问题讨论】:

    标签: curl youtube-api youtube-data-api


    【解决方案1】:

    您必须使用the spec document 上的网址:

    https://www.googleapis.com/upload/youtube/v3/thumbnails/set.

    根据我的经验,示例代码页并非 100% 可靠(例如,Videos.insert API 端点也存在同样的问题)。

    您必须发出以下curl 电话:

    curl --request POST -v \
      "https://www.googleapis.com/upload/youtube/v3/thumbnails/set\
    ?videoId=RoZypUhZY04\
    &uploadType=media" \
      --header 'Authorization: Bearer my_access_token' \
      --header 'Content-Type: image/jpeg'\
      --data-binary '@/Users/adviner/Projects/Prototypes/VendorAPI/source/YouTube/YouTube-BOS.jpg'
    

    请注意,上面的调用使用了一个 --data-binary 选项,而不是两个 -F 选项(form 选项),其参数以 @ 开头,表示其余的参数是一个文件名。

    【讨论】:

    • 感谢您的更新。我修改了我的脚本,它现在可以正常工作了。
    【解决方案2】:

    使用邮递员 http 请求:

    [发布]https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId={videoID}&uploadType=media

    --headers:  Content-Type: image/jpeg
               Authorization: Bearer ....
    

    以二进制形式发送文件

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 2021-06-13
      • 2013-08-25
      • 2020-12-30
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 2017-10-28
      相关资源
      最近更新 更多