无法从 Vimeo 获取带有缩略图的文件

Can't get file with thumbnail from Vimeo

我正在创建一个投资组合页面,用户可以在其中上传图像或通知来自 Youtube 或 Vimeo 的视频 URL。

当用户通知 Vimeo URL 我执行以下步骤:

1- 从 "vimeo.com/api/oembed.xml?url=[encoded_url]"

获取 XML 文件

2- 从文件中获取 "video_id" 属性 和视频 ID(例如,我可以使用 "vimeo.com/[video_id]" 在浏览器中打开视频)

3- 从视频 ID 生成嵌入视频 URL,只需执行 "player.vimeo.com/video/[video_id]"

4- 从 "vimeo.com/api/v2/video/[video_id].xml"

获取 XML 文件

5- 从文件中获取 "thumbnail_medium" 属性,带有视频缩略图


工作正常:

例如,当我尝试使用视频 "vimeo.com/channels/staffpicks/130537730" 时,我会:

1- 从 "vimeo.com/api/oembed.xml?url=https%3A%2F%2Fvimeo.com%2Fchannels%2Fstaffpicks%2F130537730" 获取 XML 文件 - OK

2- 从文件中获取 "video_id" 属性 - 确定 - Returns“130537730”(视频 "vimeo.com/130537730" 工作正常)

3- 从视频 ID 生成嵌入视频 URL:"player.vimeo.com/video/130537730" - 好的 - 工作正常

4- 从 "vimeo.com/api/v2/video/130537730.xml" 获取 XML 文件 - OK

5- 从文件中获取 "thumbnail_medium" 属性 - OK - Returns "i.vimeocdn.com/video/536785976_200x150.jpg"


错误(文件不存在):

如果我尝试使用带有 URL "vimeo.com/ondemand/bendingsteel" 的视频(它是预告片),我会:

1- 从 "vimeo.com/api/oembed.xml?url=https%3A%2F%2Fvimeo.com%2Fondemand%2Fbendingsteel" 获取 XML 文件 - OK

2- 从文件中获取 "video_id" 属性 - 确定 - Returns“134429740”(视频 "vimeo.com/134429740" 工作正常)

3- 从视频 ID 生成嵌入视频 URL:"player.vimeo.com/video/134429740" - 好的 - 工作正常

4- 从 "vimeo.com/api/v2/video/134429740.xml" 获取 XML 文件 - 错误 - 我没有获取文件


解决方法(我认为这不是一个好的选择):

来自 "vimeo.com/api/oembed.xml?url=https%3A%2F%2Fvimeo.com%2Fondemand%2Fbendingsteel" 的 XML 文件有一个 "thumbnail_url" 属性 那个 returns 视频缩略图,我得到了 "i.vimeocdn.com/video/527925293_1280.jpg",但是我想要一个较小的缩略图。

根据第一个视频的缩略图,我手动将第二个视频的缩略图更改为 "i.vimeocdn.com/video/527925293_200x150.jpg",效果很好,但我认为这不是一个好方法,我也不认为知道这是否适用于所有情况。


我不知道我是否做错了什么,或者是否有更好的方法,或者是否因为视频是预告片而发生这种情况,但我认为这是一种奇怪的行为,因为其他一切都正常。

我也试过视频 "vimeo.com/36031564"(它不是预告片)并且效果很好,但是视频 "vimeo.com/ondemand/ashestoagassiz"(它是预告片)出现了同样的错误,所以我认为预告片会发生错误。

我尝试了 XML 以外的其他类型,但我仍然没有得到文件。

有什么建议吗?

不起作用的 URL (vimeo.com/api/v2/video/134429740.xml) 是已弃用的简单 API 的一部分。该系统从不支持 Vimeo On Demand,也没有在该系统上进行任何新的开发 API。

最好的办法是使用新的 API。

  1. 创建一个 API 应用程序
  2. 从您应用的身份验证页面手动生成令牌。
  3. 请求https://api.vimeo.com/videos/{video_id}?access_token={token}