又一个功能强大的cloudflare workers onedrive 索引工具(OneDrive-Index-Cloudflare-Worker)部署教程

2020年5月15日 2.73k 次阅读 4 条评论 1 人点赞

onedrive 很容易获取到,大把的免费A1账号,有很多人也有自己的全局。如果你没有也可以获取本站的账号。https://www.shanyemangfu.com/office365-a1.html

有的时候想要分享一下文件搞个onedrive索引。onedrive索引工具很多了,olaindex ,pyone等等。还有开山之作oneindex。但是白嫖的最高境界就是不花钱就可以免费使用吧。前边的多少需要个web服务器,而我们连这个钱也不想花。那么部署在CF workers上边就是个不错的选择,因为他还给提供了免费的域名使用。博客曾经介绍过一个可以部署在cf workers上边的onedrive索引工具FODI,但是FODI,功能有点少而且总感觉体验不是很好。但是还有大佬开发的OneDrive-Index-Cloudflare-Worker,这个甚至没有html静态页面,也就是我们不需要为前端找服务器了。现在就介绍一下这个新玩具。

项目地址:https://github.com/heymind/OneDrive-Index-Cloudflare-Worker

1.新建app应用

访问如下链接新建应用

https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade

当然需要登录你的账户。

重定向url填写

https://heymind.github.io/tools/microsoft-graph-api-auth

然后记下client_id备用。

2.新建密码secret

保存客户端密码,这就是后文需要的client_secret,保存备用。

3.添加api权限

需要添加offline_access, Files.Read, Files.Read.All

4.获取refresh_token

使用这个工具 microsoft-graph-api-auth 获取 refresh_token 参数

首先填入client id。得到下一步的code。可能需要改成如下图所示,来自作者发布的教程视频。

认证后需要登录授权,授权完成会得到code.作者视频演示的是家庭版code很短,但是我实测E5订阅code很长。code会自动回填入下一步所需要的位置。

然后就可以获取refresh_token了。应用id自己填好了,需要填写第二步获取的client secret。

点击GET TOKEN 得到如下页面。

搜索一下refresh_token,然后复制,引号内的都是。复制好备用。

5.新建 cf worker

复制如下程序代码,到cf workers。

https://github.com/heymind/OneDrive-Index-Cloudflare-Worker/blob/master/index.js

然后修改图中红色部分的参数为前边保存的参数。还有一处需要注意,base那儿需要修改为根目录或者你要分享的目录。因为作者代码中写的是Share,但是你的onedrive可能没有这个文件夹,可能会出现404。

然后保存并部署就可以了,然后修改成你想要的地址,就可以使用了。

6.开启更多功能

中转下载

利用 Cloudflare 服务器中转 OneDrive 中文件的下载,以提高中国大陆的下载体验。已知问题,无法显示下载进度。在配置中开启 proxyDownload 功能,在文件直链路径后面加 ?proxied 即可开启,例如作者提供的测试连接:https://storage.idx0.workers.dev/Other/zero_file?proxied

设置账号密码

修改为true,然后修改账号和密码就行了。

 缓存功能

利用 Cloudflare CDN 来缓存 OneDrive 中文件,目前有两种缓存模式:

  • 整个文件缓存: 文件会先完整传输到 Cloudflare 的服务器后再返回给客户端。文件太大可能超过 Cloudflare Worker 限制的单次请求运行时间。
  • chunk 缓存: 流式传输与缓存,无法正确显示 Content-Length。

在配置中开启 cache 功能,可以配置两种缓存模式的选择以及启用缓存的路径地址。

缩略图功能(默认开启了)

作者提供了如下示例:

对于图片文件,可以直接获取不同尺寸的缩略图。 比如:https://storage.idx0.workers.dev/Images/public-md-image-20191010113652775.png?thumbnail=mediumSquare

可用的取值参见:https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_list_thumbnails?view=odsp-graph-online#size-options

小文件上传

可以利用这个工具直接上传小文件到 OneDrive 上 ( 小于 4MB ,OneDrive API 的限制,比这个大就得创建 upload session 反正很麻烦 )

在配置中开启 upload 功能,并设置一个密钥 key ( 防止游客上传文件 )。

比如:

POST https://storage.idx0.workers.dev/Images/?upload=<filename>&key=<key>

注意:开启该功能需要 Files.ReadWrite 权限

但是貌似并没有前端上传界面,应该需要我们自己写个界面或者直接post请求。

图床

同时开启小文件上传和缓存功能可以当做图床使用。还可以配合缩略图功能,取得不同的缩略图放在博客中使用。

作者的示例:

例如 https://blog.idx0.dev 在首页文章列表配图使使用了 large 尺寸的缩略图,在侧栏文章列表中使用了 smallSquare 尺寸的缩略图。

其实也可以直接选择一个目录,比如Images进行缓存,然后把图像传到这个目录即可。你可以使用第三方工具,比如博客曾经介绍过的raidrive。这样就直接可以使用这个图像的链接了。我放了一张图像的测试效果。访问如下图片链接即可。

https://onedrive.symf.workers.dev/Images/QQ20200515163047.png

总结

1.相较于FODI更美观一些。

2.相较于功能较多,但是视频没有在线观看功能。但是有图床功能。

3.cloudflare 现在速度真的不敢恭维,真的慢啊。

参考资料:

  • 作者视频:https://www.bilibili.com/video/av89209298/
  • 项目地址:https://github.com/heymind/OneDrive-Index-Cloudflare-Worker

文章评论(4)

  • yujiang

    获取refresh_token时返回{"error":"invalid_request","error_description":"AADSTS90023: Cross-origin token redemption is permitted only for the 'Single-Page Application'及后面一小串不包含refresh_token的信息

    2020年8月28日
    • 小菜菜

      多试几次,不要漏掉每一个细节,每一步都不能漏

      2020年9月3日
  • woku

    求教如何默认就中转下载 不要加上proied就可以用

    2020年9月28日
    • 小菜菜

      这个作者没提供,如果想实现,大概只能修改源代码

      2020年10月1日