Google 驱动器 API:获取已上传视频的可公开共享 link
Google drive API: get the shareable publicly link of a video uploaded
我正在使用 pydrive 库来获取我上传到共享 google 驱动器文件夹中的视频的可共享 link,但我得到的是下载 link .
这是我的部分代码:
folderName = 'Videos' # Please set the folder name.
folders = drive.ListFile({'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}).GetList()
for folder in folders:
if folder['title'] == folderName:
folderId = folder['id']
import glob, os
os.chdir("C:/upload_recording/videos")
for file in glob.glob("*.mp4"):
with open(file,"r") as f:
fn = os.path.basename(f.name)
file_drive = drive.CreateFile({'title':fn,'parents': [{'id': folderId}], 'copyRequiresWriterPermission': True, 'writersCanShare': False})
file_drive.Upload()
file_drive.InsertPermission({
'type': 'anyone',
'value': 'anyone',
'role': 'reader'})
files = drive.ListFile({'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}).GetList()
for file in files:
keys = file.keys()
if file['shared']:
link = 'https://drive.google.com/file/d/' + file['id'] + '/view?usp=sharing'
else:
link = 'No Link Available. Check your sharing settings.'
name = file['id']
print('name: {} link: {}'.format(name, link))
我相信你的目标如下。
- 您想要检索
https://drive.google.com/drive/folders/{folderId}?usp=sharing
. 等文件夹的共享 link
现阶段,Drive API 似乎不能直接return 共享link。所以在这种情况下,我认为可以使用 drive.ListFile({'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}).GetList()
.
检索到的文件夹 ID 创建共享 link
当你的脚本修改后,变成如下。
修改后的脚本:
从:
for file in files:
keys = file.keys()
if 'webContentLink' in keys:
link = file['webContentLink']
elif 'webViewLink' in keys:
link = file['webViewLink']
else:
link = 'No Link Available. Check your sharing settings.'
if 'name' in keys:
name = file['name']
else:
name = file['id']
到:
for file in files:
keys = file.keys()
if file['shared']:
link = 'https://drive.google.com/drive/folders/' + file['id'] + '?usp=sharing'
elif 'webContentLink' in keys:
link = file['webContentLink']
elif 'webViewLink' in keys:
link = file['webViewLink']
else:
link = 'No Link Available. Check your sharing settings.'
if 'name' in keys:
name = file['name']
else:
name = file['id']
- 在此示例修改中,当文件夹 id 公开共享时,共享的 link 为 returned。
注:
- 例如,如果要检索 Google Docs 文件(Document、Spreadsheet、Slides 等)以外的文件的共享 link,可以使用
https://drive.google.com/file/d/{fileId}/view?usp=sharing
.
参考:
已添加:
- 您想从特定文件夹中的上传文件中检索共享 link(查看 link)。
这种情况下,我觉得可以用alternateLink
。但是在您更新的脚本中,从 {'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}
中检索了 folderName
的文件夹。所以也需要修改搜索查询。
修改后的脚本:
folderId = '###' # Please set the folder ID.
files = drive.ListFile({"q": "'" + folderId + "' in parents and mimeType!='application/vnd.google-apps.folder'"}).GetList()
for file in files:
keys = file.keys()
if file['shared'] and 'alternateLink' in keys:
link = file['alternateLink']
else:
link = 'No Link Available. Check your sharing settings.'
name = file['id']
print('name: {} link: {}'.format(name, link))
- 在你的脚本中,我认为
folderId
可以从 folderId = folder['id']
使用。
我正在使用 pydrive 库来获取我上传到共享 google 驱动器文件夹中的视频的可共享 link,但我得到的是下载 link .
这是我的部分代码:
folderName = 'Videos' # Please set the folder name.
folders = drive.ListFile({'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}).GetList()
for folder in folders:
if folder['title'] == folderName:
folderId = folder['id']
import glob, os
os.chdir("C:/upload_recording/videos")
for file in glob.glob("*.mp4"):
with open(file,"r") as f:
fn = os.path.basename(f.name)
file_drive = drive.CreateFile({'title':fn,'parents': [{'id': folderId}], 'copyRequiresWriterPermission': True, 'writersCanShare': False})
file_drive.Upload()
file_drive.InsertPermission({
'type': 'anyone',
'value': 'anyone',
'role': 'reader'})
files = drive.ListFile({'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}).GetList()
for file in files:
keys = file.keys()
if file['shared']:
link = 'https://drive.google.com/file/d/' + file['id'] + '/view?usp=sharing'
else:
link = 'No Link Available. Check your sharing settings.'
name = file['id']
print('name: {} link: {}'.format(name, link))
我相信你的目标如下。
- 您想要检索
https://drive.google.com/drive/folders/{folderId}?usp=sharing
. 等文件夹的共享 link
现阶段,Drive API 似乎不能直接return 共享link。所以在这种情况下,我认为可以使用 drive.ListFile({'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}).GetList()
.
当你的脚本修改后,变成如下。
修改后的脚本:
从:for file in files:
keys = file.keys()
if 'webContentLink' in keys:
link = file['webContentLink']
elif 'webViewLink' in keys:
link = file['webViewLink']
else:
link = 'No Link Available. Check your sharing settings.'
if 'name' in keys:
name = file['name']
else:
name = file['id']
到:
for file in files:
keys = file.keys()
if file['shared']:
link = 'https://drive.google.com/drive/folders/' + file['id'] + '?usp=sharing'
elif 'webContentLink' in keys:
link = file['webContentLink']
elif 'webViewLink' in keys:
link = file['webViewLink']
else:
link = 'No Link Available. Check your sharing settings.'
if 'name' in keys:
name = file['name']
else:
name = file['id']
- 在此示例修改中,当文件夹 id 公开共享时,共享的 link 为 returned。
注:
- 例如,如果要检索 Google Docs 文件(Document、Spreadsheet、Slides 等)以外的文件的共享 link,可以使用
https://drive.google.com/file/d/{fileId}/view?usp=sharing
.
参考:
已添加:
- 您想从特定文件夹中的上传文件中检索共享 link(查看 link)。
这种情况下,我觉得可以用alternateLink
。但是在您更新的脚本中,从 {'q': "title='" + folderName + "' and mimeType='application/vnd.google-apps.folder' and trashed=false"}
中检索了 folderName
的文件夹。所以也需要修改搜索查询。
修改后的脚本:
folderId = '###' # Please set the folder ID.
files = drive.ListFile({"q": "'" + folderId + "' in parents and mimeType!='application/vnd.google-apps.folder'"}).GetList()
for file in files:
keys = file.keys()
if file['shared'] and 'alternateLink' in keys:
link = file['alternateLink']
else:
link = 'No Link Available. Check your sharing settings.'
name = file['id']
print('name: {} link: {}'.format(name, link))
- 在你的脚本中,我认为
folderId
可以从folderId = folder['id']
使用。