【发布时间】:2021-05-24 07:39:25
【问题描述】:
我的视频文件 ID 和 Google Drive API 访问都正确,我希望我的代码返回视频文件的持续时间。我知道有“videoMediaMetadata.durationMillis”文件属性,但我不知道如何使用它。谢谢!
SCgenericQ = service.files().list(q="mimeType = 'application/vnd.google-apps.folder' and starred=true",
fields="nextPageToken, files(id, name)").execute()
starredSCfolders = SCgenericQ.get('files', [])
if not starredSCfolders:
print('No files found.')
else:
counter = 18
for _ in starredSCfolders:
folderId = starredSCfolders[counter].get('id')
exactCourseQ = service.files().list(q="'" + folderId + "' in parents", fields="nextPageToken, files(id, name)").execute()
courseFiles = exactCourseQ.get('files', [])
courseUnitIds = []
videos = []
for element in courseFiles:
if element['name'].startswith('UNI'):
courseUnitIds.append(element['id'])
for Id in courseUnitIds:
openLessons = service.files().list(q="'" + Id + "' in parents and mimeType = 'application/vnd.google-apps.folder'", fields="nextPageToken, files(id, name)").execute()
LessonIds = openLessons.get('files', [])
filesExcFolder = service.files().list(q="'" + Id + "' in parents and mimeType != 'application/vnd.google-apps.folder'", fields="nextPageToken, files(id, name)").execute()
nonFolders = filesExcFolder.get('files', [])
if not LessonIds:
MOV_videoFiles = service.files().list(q="'" + Id + "' in parents and mimeType contains 'video/Quicktime'", fields="nextPageToken, files(id, name)").execute()
movFiles = MOV_videoFiles.get('files', [])
MP4_videoFiles = service.files().list(q="'" + Id + "' in parents and mimeType contains 'video/mp4'", fields="nextPageToken, files(id, name)").execute()
mp4Files = MP4_videoFiles.get('files', [])
for mov in movFiles:
videos.append(mov['name'])
for mp4 in mp4Files:
videos.append(mp4['id'])
for videoId in videos:
request = service.files().get(fileId="'" + videoId + "'", fields='videoMediaMetadata').execute()
duration_seconds = int(request.get('videoMediaMetadata')['durationMillis'])/1000
print(videos)
print(duration_seconds)
break```
【问题讨论】: