使用 R 通过 YouTube API 上传缩略图时出错

问题描述 投票:0回答:1

我想使用 R 更新我的 YouTube 视频的缩略图。 我正在关注 google 文档,但出现以下错误:

"The request does not include the image content."

我的代码的当前状态如下:

library(httr)
library(tuber)

video.id <- [ID]
thumbnail.path <- [path]
youtube.client.id <- [ID]
youtube.client.secret <- [secret]

yt_oauth(
    app_id = youtube.client.id,
    app_secret = youtube.client.secret,
    scope = 'partner'
)

req <- POST(
    "https://www.googleapis.com",
    path = paste0(
        "youtube/v3/thumbnails/set",
        "?videoId=", video.id
    ),
    body = httr::upload_file(thumbnail.path),
    config(token = getOption("google_token"))
)

我对其他 API 调用(使用 PUT 或 GET)有类似的查询,并且它们有效。 我认为问题出在

upload_file
,但找不到应该解决的方案。

我该如何解决这个问题? 预先感谢

r file-upload google-api youtube-api
1个回答
0
投票

如果有人有同样的问题,我设法解决它。我已经尝试了很多方法,但我认为真正解决的方法是将网址从“youtube/v3/thumbnails/set”更改为“upload/youtube/v3/thumbnails/set”。

这是我的最终代码:

oauth <- paste0('"Authorization: Bearer ', access.token, '"')
full.url <- paste0(
    'https://www.googleapis.com/upload/youtube/v3/thumbnails/set',
    '?videoId=', video.id,
    '&key=', youtube.api.key,
    '&uploadType=media'
)


final.args <- c(
    '--request', 'POST',
    '-v', paste0('"', full.url, '"'),
    '--data-binary', paste0('@', cover.path, ''),
    '-H', oauth,
    '-H', '"Content-Type: image/png"'
)


system2(
    command = 'curl',
    args = final.args,
    stdout = file.res, stderr = file.err
)
© www.soinside.com 2019 - 2024. All rights reserved.