![](/img/trans.png)
[英]Google Drive API v3 Change File Permissions and Get Publicly Shareable Link (Python)
[英]Google drive API: get the shareable publicly link of a video uploaded
我正在使用 pydrive 库来获取我上传到共享谷歌驱动器文件夹中的视频的可共享链接,但我得到了下载链接。
这是我的代码的一部分:
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
。 在现阶段,Drive API 似乎无法直接返回共享链接。 所以在这种情况下,我认为可以使用通过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']
https://drive.google.com/file/d/{fileId}/view?usp=sharing
。 在这种情况下,我认为可以使用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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.