如何提取OneDrive文件直链?

原理

  • 原链接:
    https://xxxx-my.sharepoint.com/:x:/g/personal/xx_xx_xx/xxxxxxxxxx

  • 直链:
    https://xxxx-my.sharepoint.com/personal/xx_xx_xx/_layouts/52/download.aspx?share=xxxxxxxxxx(这一种更有效)

    https://xxxx-my.sharepoint.com/:x:/g/personal/xx_xx_xx/xxxxxxxxxx?download=1(这是重定向跳转至直链)

Python实现

我自己编写的一个Python小工具

源码:

# 原理:https://www.qian.blue/archives/OneDrive-straight.html

import re

def judgeLink(url):
    reg1 = r'https://.+sharepoint\.com'
    reg2 = r'personal/(\w+?)/'
    reg3 = r'.*/(\S+)'
    reg4 = r'com/:(\w):/'

    p1 = re.findall(reg1, url)[0]
    p2 = re.findall(reg2, url)[0]
    p3 = re.findall(reg3, url)[0]

    if '?' in p3:
        p3 = re.findall(r'(\S+?)\?', p3)[0]

    if re.findall(reg4, url)[0] == 'f':
        return "抱歉,你所输入链接分享的是文件夹,直链生成仅对单文件有效。"

    return p1 + '/personal/' + p2 + '/_layouts/52/download.aspx?share=' + p3

if __name__ == "__main__":
    url = input("请输入你的OneDrive单文件分享链接:")
    try:
        url_judged = judgeLink(url)
        print(f"\n>>> {url_judged}")
    except:
        print("\n>>> 请检查你的输入链接是否正确?")

通过搭建目录程序获得直链

OneManager(推荐,支持一键部署)

OneManager的进阶玩法:传送门

ShareList

这个比较个性,可以基于API或者分享链接挂载,个人觉得这种方式会比挂载整个网盘方便管理,也有利于保护其他文件。

sharelist支持Google Drive、OneDrive(包括世纪互联)、天翼云、蓝奏云、GitHub、WebDAV、本地文件等。

Oneindex

基于php,应该是这类项目中最早流行起来的,功能比较完善,但是实测OneDrive个人版有一部分中文目录读不出来(2019年下半年),作者donwa前段时间删除了这个项目,原因未知,链接为他人的备份。

oneindex仅支持OneDrive(个人、企业版或教育版/工作或学校帐户,世纪互联版方法请搜索)。

PyOne

基于Python的项目,个人觉得比oneindex好看一点点,并且很早就支持离线下载,不过跟oneindex一样有读不出目录的问题(2019年下半年)。

PyOne仅支持OneDrive(包括世纪互联)。

OLAINDEX

基于php,没发现前面所说读不出目录的问题。

OLAINDEX仅支持OneDrive(包括世纪互联)。

CuteOne

基于Python,也有php版本,很好看,而且做出了模块化,甚至可以当作电影分享站,不过链接OneDrive个人版有bug导致刷不出缓存,其实很简单,然而作者不打算修的亚子……

CuteOne仅支持OneDrive(包括世纪互联,其中个人版需手动修改文件)。

OneList

Vicer大佬的项目,基于Python,也有go版本,据说可以缓解一些API过度调用的问题,未测试。

OneList仅支持OneDrive(包括世纪互联)。

Goindex

基于js和CF Workers,未测试过,和oneindex同一作者,同样已删库,链接为他人备份。

goindex仅支持Google Drive。

GDIndex

基于js和CF Workers,未测试过。

GDIndex仅支持Google Drive。

Zfile(前端 后端)

支持阿里云 OSS、FTP、华为云 OBS、本地存储、MINIO、OneDrive 国际 /家庭 /个人版、OneDrive 世纪互联版、七牛云 KODO、腾讯云 COS、又拍云 USS。

Fast.io

这是一个免费的静态空间网站,也可以用来挂载网盘。

Fast.io支持Google Drive、OneDrive、Github、Dropbox、MediaFire、BOX。

JustList

比较简洁,支持OneDrive(国际版、世纪互联)和天翼云盘。

OneDriveFly

仅支持OneDrive,可以部署到QCloud SCF、Aliyun FC、Heroku,计划支持Cloudflare Workers、Google Cloud Functions、Azure Functions。

SuperOne

仅支持OneDrive,内置API,无需申请。

OneindexN

Oneindex的继承版本,加入aria2下载等功能。

YukiDrive

支持OneDrive和Sharepoint,前后端分离。

文章来源: 如何提取OneDrive文件直链? - 勿埋我心

你可能感兴趣的:(勿埋我心的浅蓝博客,onedrive,sharepoint,python)