Jos*_*lls 7 python video-streaming http-headers google-photos google-photos-api
背景:我想看看如何使用我的 Google Photos 空间,我用 Python 编写了一个小脚本,它使用 Google Photos API 来检索我的所有相册及其内容(使用https://developers.google.com/photos /library/reference/rest/v1/mediaItems/search)。文件信息不存在,但使用mediaItem baseUrl(记录的https://developers.google.com/photos/library/reference/rest/v1/mediaItems#MediaItem)然后我可以执行HEAD请求并content-length从标头中获取文件信息。这对于照片来说似乎效果很好,但视频的大小被严重低估了。我的猜测是,Google Photos 正在准备流式传输视频,并且不会发送整个视频信息。
问题:有没有办法检索存储在 Google Photos 上的视频的文件大小,希望不必下载整个视频?该应用程序确实知道文件大小,但这似乎在 API 中不可用。有没有办法发送一些请求标头来获取文件大小?
额外信息:我正在使用 Python 和httplib2.Http()来处理我的HEAD请求(很高兴使用 requests 模块或任何其他替代方案)。
这是从 API 检索到的信息,该视频文件略高于 100MB(绝对不是 30k):
{
"id": "XYZ",
"productUrl": "https://photos.google.com/lr/photo/XYZ",
"baseUrl": "https://lh3.googleusercontent.com/lr/ABC",
"mimeType": "video/mp4",
"mediaMetadata": {
"creationTime": "2018-11-27T03:43:27Z",
"width": "1920",
"height": "1080",
"video": {
"fps": 120,
"status": "READY"
}
},
"filename": "VID_20181126_174327.mp4"
}
Run Code Online (Sandbox Code Playgroud)
HEAD这些是从请求接收到的标头baseUrl:
{
"access-control-expose-headers": "Content-Length",
"etag": "\"v15ceb\"",
"expires": "Fri, 01 Jan 1990 00:00:00 GMT",
"cache-control": "private, max-age=86400, no-transform",
"content-disposition": "inline;filename=\"VID_20181126_174327.jpg\"",
"content-type": "image/jpeg",
"vary": "Origin",
"x-content-type-options": "nosniff",
"date": "Wed, 08 May 2019 17:39:42 GMT",
"server": "fife",
"content-length": "31652",
"x-xss-protection": "0",
"alt-svc": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\"",
"status": "200",
"content-location": "https://lh3.googleusercontent.com/lr/ABC"
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
小智 3
Photos API 文档提到,对于视频,baseUrlAPI 返回的 是指视频的缩略图而不是视频本身,您必须附加=dv到baseUrl才能实际接收视频。从我的实验来看,content-length从该端点返回的结果也是准确的:
import requests
baseUrl = "https://lh3.googleusercontent.com/lr/AF..."
# just the thumbnail's size
requests.head(baseUrl,allow_redirects=True).headers['content-length']
# the entire video's size
requests.head(baseUrl + "=dv",allow_redirects=True).headers['content-length']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1993 次 |
| 最近记录: |