微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google云端硬盘API:获取上传的视频的可共享的公开链接 修改后的脚本:注意:参考:修改后的脚本:

如何解决Google云端硬盘API:获取上传的视频的可共享的公开链接 修改后的脚本:注意:参考:修改后的脚本:

我正在使用pydrive库来获取我在共享的Google驱动器文件夹中上传的视频的可共享链接,但我却获得了下载链接

这是我的代码的一部分:

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()检索的文件夹ID来创建共享链接。

修改脚本后,它如下所示。

修改后的脚本:

从:
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']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。