FODI,Fast OneDrive Index 的缩写,意为 OneDrive 快速列表,是我自用的一版 OneDrive 列表程序。相较于其他程序,此版列表速度极快,且无需服务器,部署极为简单,当然,除此之外都是缺点。
演示地址
SCF 简介
腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码,是实时文件处理和数据处理等场景下理想的计算平台。您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。
无服务器(Serverless)不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。
腾讯云 SCF 目前仍在 公测 阶段,所有用户可免费使用,结束日期待定。公测结束后,每月仍可享受足量的 免费资源使用量和免费调用次数,但收取 外网出流量 费用。
| 资源类型 | 每月免费额度 |
|---|---|
| 资源使用量 | 40 万 GBs |
| 调用次数 | 100 万次 |
所谓外网出流量,即程序通过 SCF 访问外部网络的流量,对于本程序即请求微软 API 的流量,每次调用从几 B 到几 KB 不等;文件上传下载直接与微软交互,不经过 SCF。
下图(老图可能与描述不符)是我一天的使用量,大概调用了 10000 次,如果是 30 天就是 30 万次,还不到免费额度的 1/3。资源使用量 1000 GBs,30 天就是 3 万 GBs,远低于 40 万 GBs。外网出流量 0.05G ,一个月大概是 1.5 G,按照 正式收费标准 0.8 元/G,每月要支付 1.2 元的出流量费用,完全可以接受(目前不会收取)。

获取 refresh_token
进入 该网址(世纪互联版点我),点击其中的 Get a refresh_token,在打开的微软账号登录页面中,填写你的 OneDrive 账号和密码,完成登录。
T]W\_6)TC%RBYPYG8UV.png" title="5}RT]W\_6)TC%RBYPYG8UV.png">
稍等片刻页面将返回 refresh_token,复制它备用。

填写 refresh_token
下载并解压 FODI 源码,随后进入文件夹,用记事本打开 back-end-py/main/api/fodi.py,将上一步得到的 refresh_token 粘贴进,下图所示的 ONEDRIVE_REFRESH_TOKEN 对应的双引号之间。
如需设置网盘展示的根目录,则填写第 10 行的 EXPOSE_PATH 变量,如 /媒体/电影,全盘展示请留空。填写完毕后注意 保存。

创建函数服务
以浏览器 隐身模式 登录 腾讯云 SCF 控制台(在此之前要完成腾讯云 实名认证),点击左侧菜单栏的 函数服务,接着点击顶栏的地区选择下拉框,选择 香港或新加坡,因为国外访问 OneDrive 较快。接着点击蓝色的 新建 按钮,创建函数。

随后在新建函数页面填写 函数名称,名字随意;运行环境 选择 Python3.6;创建方式 选择 模板函数;选择 helloworld 模板,最后点击最下方的 下一步。进入 ② 函数配置 页面后不做任何修改,直接点击 完成。(下面这张是之前的老图,与描述不符,不要照搬)
VWO~RYU4QSIHMEE_{PG.png" title="GXVWO~RYU4QSIHMEE_{PG.png">
上传函数代码
点击 SCF 函数代码 面板,将 提交方法下拉框 的值改为 本地上传文件夹。点击 上传,选择 解压文件夹内的 back-end-py,待上传完毕后点击 保存。注意,上传的是 back-end-py 文件夹,不是整个项目。

添加触发方式
进入函数服务的 触发方式 面板,点击 添加触发方式。选择触发方式下拉框中的 API网关触发器,勾选下方的 启用集成响应,点击 保存。

稍等片刻,下方会出现一个 访问路径,点击打开它。

片刻,你将看到如下 JSON 数据(部分数据被省略),否则必须重新上传。
{
"code": -1,
"error": "path error.",
"examples": [
".../ciba/",
".../proxy/",
".../dnspod/",
".../wechat-step/",
".../lanzous/",
".../cloudmusic/",
".../aes/",
".../qr/",
".../fodi/"
]
}通过 Github Pages 部署前端
前端仅是一个 HTML 文件,可放到任意静态服务器,此处通过 Github Pages 部署,部署完成后可通过 username.github.io 打开你的网盘。
注册并登录 Github,随后打开 该仓库,点击靠近右上角的 Fork。稍等片刻,打开页面中部的 index.html。

点击靠近 右上角 的 铅笔 按钮,编辑该文件。

将你的 函数 API 网关访问路径 填写到 index.html 的 SCF_GATEWAY 变量对应的引号中。SITE_NAME 变量是 站点名称,可以随意修改。


填写完毕后点击靠近页面最下方的 Commit changes。

点击靠近页面右上角的 Settings,将 Repository name 改成 你的 Github 用户名.github.io,随后点击 Rename。

下拉该页面,找到 Github Pages,将 Source 下拉框的值改成 master branch,如果没有则无需修改。

现在,就可以通过 你的 Github 用户名.github.io 访问网盘了。
加密文件夹
在某个文件夹下添加 .password 文件,里面写入密码,即可加密该文件夹。注意文件必须以 UTF8NoBOM 编码,且密码前后不能有空格或空行,Windows 下可通过以下方式生成:
在待加密文件夹下按住 Shift 键的同时,鼠标右击文件夹空白处,选择 在此处打开 Powershell 窗口(S),接着执行以下命令,其中 1234 便是密码。
'1234' | Out-File -FilePath .password -Encoding ascii -NoNewline最后,如果你觉得这个项目还行,请到 Github 为我加颗星。
如有问题请在下方留言,文章转载请注明出处,详细交流请加下方群组!请大佬不要屏蔽文中广告,因为它将帮我分担服务器开支,如果能帮忙点击我将万分感谢。
发现一个严重的问题需要处理,建议把accesstoken放到后端, 前端暴露出来容易被窃取.
可以简单参考下onepoint 的处理方式 github.com/ukuq/onepoint
这个问题我已考虑到,前端 token 是 aes 加密后的,每个人的加密 key 放在后端且唯一,故别人得到也无法使用
牛批 我的下载站要复活了
欢迎大佬@(太开心)
{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"Cannot read property 'salt' of undefined"}
打开访问路径后出现这样的报错
把所有步骤做完,后端不能单独使用
这个只能放在github吗?coding 可以吗
随便哪里
感谢 已经成功了 项目很不错~
客气客气
新建函数的配图用的还是之前php模板的,找了半天的错误才发现@(笑尿)
哈哈哈,让你不看文字@(捂嘴笑)
最近总遇到评论多的。
哈哈哈,欢迎常来#(脸红)
最后这个加密在电脑操作,是在网页上操作吗》?按照你说的操作右键没有Powershell 窗口(S)啊
电脑,这款程序没有后台管理功能
哦,你这个方法是单纯针对电脑文件夹的加密呀?
大佬,请教一下这篇文章搭建的服务器是不是只能浏览下载,不像“利用微软 OneDrive API 和腾讯云 SCF 免费搭建个人网盘”这篇文章里搭建的还可以管理网盘文件,那这种方式的优势主要体现在哪呢?
优势开头说了,快。两篇文章都有演示,你分别点点看看就知道了
不是加密电脑文件夹,电脑安装 OneDrive,再通过文件管理器进入 OneDrive 对应目录加密。
什么时候可以支持一下文件夹加密呢?@(你懂的)
那要看我懒癌能否好转@(滑稽)
已支持,有生之年系列@(太开心)
哇哈哈哈,效率真高
刚找了下文章中木有介绍@(汗)
重新上传新的前端后端吗?
密码文件是不是.password
是的,懒得介绍了@(你懂的)
OneDrive:又是你!#(喜极而泣)
是不是感受到了被支配的恐惧@(酷)
大佬,最后一步出问题了,User pages must be built from the master branch. 这是哪一步出问题了啊?谢谢。
最后一张图没有选择 master
https://i.loli.net/2019/09/20/QGZqNMTVwUfpjCR.png
好像没有地方可以选
可能新号先要开通吧,我用的老号,中间流程是什么我也忘了@(笑尿),贴一下你的仓库地址吧
https://github.com/DeonWinchester/DeonWinchester.github.io
已经成功了哈,直接访问吧
https://deonwinchester.github.io/
我写这个程序的本意就是分享文件(笑),自己看的话为什么不用客户端呢
或者你把 index.html 放到电脑上打开也行@(滑稽)
懂了!
我也遇到一样的问题了,请问如何解决的呢
直接访问试试
按照您的步骤一步步操作,在获取并填写 refresh_token这一步中遇到了问题
“进入 SCF 函数代码 面板,选中 index.js,将得到的 refresh_token 粘贴进,下图所示的 ONEDRIVE_REFRESH_TOKEN 对应的单引号之间。”
进入 SCF 函数代码面板后没用 index.js,页面和“上传函数代码”前一样,请问该如何解决?
再上传一遍代码吧,最后要点保存
我保存了还是不行
这时我录制的gif:https://sm.ms/image/oDBePkE1y2uvUxj
换个浏览器看看吧,可能是腾讯云的 BUG
谢谢大佬,终于弄好了,之前没显示是被广告过滤插件给屏蔽了
好吧,之前有个朋友也上传不了,现在终于找到原因了
心动,去试试
沙发@(吐舌)
收藏了
眼熟大佬