使用 curl 将缩略图上传到 Youtube API
Upload thumbnail to Youtube API using curl
我在 YouTube API v3 中使用 curl 来创建广播、修改视频标题等,没有任何问题。我的问题是当我尝试使用 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 到 POST 图像:
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"
}
}
使用URL时: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"
}
]
}
}
关于我遗漏的任何想法?
谢谢
您必须使用 the spec document:
上的 URL
https://www.googleapis.com/upload/youtube/v3/thumbnails/set
.
根据我的经验,示例代码页并非百分百可靠(例如,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 选项),其参数以 @
表示参数的其余部分是文件名。
使用邮递员 http 请求:
[POST] https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId={videoID}&uploadType=media
--headers: Content-Type: image/jpeg
Authorization: Bearer ....
以二进制形式发送文件
我在 YouTube API v3 中使用 curl 来创建广播、修改视频标题等,没有任何问题。我的问题是当我尝试使用 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 到 POST 图像:
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"
}
}
使用URL时: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"
}
]
}
}
关于我遗漏的任何想法?
谢谢
您必须使用 the spec document:
上的 URLhttps://www.googleapis.com/upload/youtube/v3/thumbnails/set
.
根据我的经验,示例代码页并非百分百可靠(例如,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 选项),其参数以 @
表示参数的其余部分是文件名。
使用邮递员 http 请求:
[POST] https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId={videoID}&uploadType=media
--headers: Content-Type: image/jpeg
Authorization: Bearer ....
以二进制形式发送文件