繁体   English   中英

Google Drive API:获取上传视频的可共享公开链接

[英]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']
  • 本示例修改中,当文件夹id公开共享时,返回共享链接。

笔记:

  • 例如,如果要检索除 Google Docs 文件(文档、电子表格、幻灯片等)以外的文件的共享链接,可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM