MENU

FODI,一款 OneDrive 秒级列表程序

2019 年 09 月 20 日 • 阅读: 82533 • 前端

腾讯云停止维护,请部署 Cloudflare 版

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 元的出流量费用,完全可以接受(目前不会收取)。

@YL51PJT6NML6PZW{TAI.png

获取 refresh_token

进入 该网址世纪互联版点我),点击其中的 Get a refresh_token,在打开的微软账号登录页面中,填写你的 OneDrive 账号和密码,完成登录。

5}R<codedata-shadow=T]W\_6)TC%RBYPYG8UV.png" title="5}RT]W\_6)TC%RBYPYG8UV.png">

稍等片刻页面将返回 refresh_token,复制它备用。

C6QSEL5POOL75U

填写 refresh_token

下载并解压 FODI 源码,随后进入文件夹,用记事本打开 back-end-py/main/api/fodi.py,将上一步得到的 refresh_token 粘贴进,下图所示的 ONEDRIVE_REFRESH_TOKEN 对应的双引号之间。

如需设置网盘展示的根目录,则填写第 10 行的 EXPOSE_PATH 变量,如 /媒体/电影,全盘展示请留空。填写完毕后注意 保存

UUU{L_%MUDV1I}YSTPXZ2.png

创建函数服务

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

create_a_function

随后在新建函数页面填写 函数名称,名字随意;运行环境 选择 Python3.6创建方式 选择 模板函数;选择 helloworld 模板,最后点击最下方的 下一步。进入 ② 函数配置 页面后不做任何修改,直接点击 完成。(下面这张是之前的老图,与描述不符,不要照搬)

GX<codedata-shadow=VWO~RYU4QSIHMEE_{PG.png" title="GXVWO~RYU4QSIHMEE_{PG.png">

上传函数代码

点击 SCF 函数代码 面板,将 提交方法下拉框 的值改为 本地上传文件夹。点击 上传,选择 解压文件夹内的 back-end-py,待上传完毕后点击 保存。注意,上传的是 back-end-py 文件夹,不是整个项目。

D5OFS6O`X7}$VW)B3$UTQA.png

添加触发方式

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

SC6P6_()$O$FK7_IB_S3(}4.png

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

2UV{Q5H@V13S956@IWG7`2.png

片刻,你将看到如下 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

YSG)}(}WF$V6(I8Z(RF7FK.png

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

fafdafdafQA.png

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

%{$U69~_}~DAL0($(U9@D`9.png

abc

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

`56PL$O1D}(V2P@4WR%P6B.png

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

@(S16VV$)48~O8MHD6KYB5D.png

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

}`R6~2N@)LINVXYJ5LEP59.png

现在,就可以通过 你的 Github 用户名.github.io 访问网盘了。

加密文件夹

在某个文件夹下添加 .password 文件,里面写入密码,即可加密该文件夹。注意文件必须以 UTF8NoBOM 编码,且密码前后不能有空格或空行,Windows 下可通过以下方式生成:

在待加密文件夹下按住 Shift 键的同时,鼠标右击文件夹空白处,选择 在此处打开 Powershell 窗口(S),接着执行以下命令,其中 1234 便是密码。

'1234' | Out-File -FilePath .password -Encoding ascii -NoNewline
最后,如果你觉得这个项目还行,请到 Github 为我加颗星。
TG 大佬群 QQ 大佬群

最后编辑于: 2020 年 09 月 04 日
返回文章列表 文章二维码
本页链接的二维码
打赏二维码
添加新评论

Loading captcha...

已有 156 条评论
  1. le45tx1m le45tx1m   Windows 10 x64 Edition  Firefox 111.0

    cf部署后端,http头发送后能看到文件列表,前端用github page部署后,显示Loading……,之后Loading字样消失,文件没挂载出来,求指导

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 112.0.0.0

      @le45tx1m很多人回调地址填在了注释里,应该填在 window.GLOBAL_CONFIG 里,检查是不是这个原因

    2. le45tx1m le45tx1m   Windows 10 x64 Edition  Firefox 111.0

      @LOGI没有,我改的是第十行window.GLOBAL_CONFIG = {的下面,但是我是照着项目例子写的,是不是要在//前面把https:补齐?

    3. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 112.0.0.0

      @le45tx1m不要,你f12看控制台报错,不懂加文末群组

    4. lamia lamia   Windows 10 x64 Edition  Google Chrome 112.0.0.0

      @le45tx1m因为pages.dev域名被墙了

    5. 1 1   Windows 10 x64 Edition  Google Chrome 112.0.0.0

      @lamia大佬这是什么意思的 我和层主出现了同样的问题

  2. RawChen RawChen   Windows 10 x64 Edition  Google Chrome 94.0.4606.54

    o,可以了,https://java.rawchen.com/onedrive/authorize ,不过貌似速度没有变快,以前都有2m/s,现在1-200k,想搞个世纪互联,又怕不稳 又 贵@(笑尿)

  3. RawChen RawChen   Windows 10 x64 Edition  Google Chrome 94.0.4606.54

    在不,你的myqcloud.com release scf_onedrive_filelistor用不了咯

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 94.0.4606.71

      @RawChen腾讯云版不维护啦

    2. RawChen RawChen   Windows 10 x64 Edition  Google Chrome 94.0.4606.54

      @LOGI哦,找错啦,我就说怎么点不开,不知道为啥,隔了几个月要刷新token

    3. RawChen RawChen   Windows 10 x64 Edition  Google Chrome 94.0.4606.54

      @LOGI想问个问题哈,我用springBoot中OA2写了callback获取token登录实现,出现:

      抱歉,登录时遇到问题。
      AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application: '09939809-c617-43c8-a220-a93c1513c5d4'.

      (client写死的),为啥嘞,你试试http://rawchen.com:9999/onedrive/authorize

    4. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 94.0.4606.71

      @RawChen把 callback 地址设置到应用里,看文档
      https://docs.microsoft.com/zh-cn/azure/active-directory/develop/scenario-web-app-sign-user-app-registration?tabs=aspnetcore

    5. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 94.0.4606.71

      @RawChen如果是别人的 client_id 和 client_secret 是没法更改的

    6. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 94.0.4606.71

      @RawChen现在可以自动刷新 token 了,阅读链接帖子开头说明
      https://logi.im/back-end/fodi-on-cloudflare.html

  4. wang wang   Windows 10 x64 Edition  Google Chrome 91.0.4472.124

    service-36wivxsc-1256127833.ap-hongkong.apigateway.myqcloud.com 意外终止了连接

  5. Jack-Roc Jack-Roc   Mac OS X 10.15.6  Google Chrome 89.0.4356.6

    博主 按你的操作 在GitHub 上 什么都没显示
    https://jack-roc.github.io/blog/
    可以帮忙看下吗

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 88.0.4324.182

      @Jack-Roc你并没有部署我的后端

  6. syttk syttk   Windows 7 x64 Edition  Google Chrome 88.0.4324.104

    导航栏点击 三角箭头 能不展开, 不能折叠

  7. 风缘绝色 风缘绝色   Windows 10 x64 Edition  Google Chrome 85.0.4183.83

    AADSTS7000222:提供的客户端密钥已过期。请访问Azure门户为您的应用创建新密钥,或考虑使用证书凭据来提高安全性

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 85.0.4183.83

      @风缘绝色统一回复,按照该链接指引获取后端代码
      https://logi.im/fodi/get-code/

  8. chanqi chanqi   Windows 10 x64 Edition  Google Chrome 84.0.4147.125

    懂了懂了 谢谢大佬 我知道怎么回事了

  9. chanqi chanqi   Windows 10 x64 Edition  Google Chrome 84.0.4147.125

    大佬,我部署完了 打开链接有密码是怎么回事

  10. 暮城 暮城   Windows 10 x64 Edition  Google Chrome 84.0.4147.89

    请问有可以部署在云服务器得教程么?

  11. 暮城 暮城   Windows 10 x64 Edition  Google Chrome 84.0.4122.7

    大佬,这个是什么原因呢?
    没有权限进行此操作,请修改后重试。([TencentCloudSDKError] Code=InternalError.GetRoleError, Message=[QC_STS] role not exist, RequestId=5f1f8865-e798-4c2d-98ec-ece0efb1d3ee)

    @(吐舌)

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 84.0.4147.89

      @暮城进入云函数概览页面,根据提示授权

    2. 暮城 暮城   Windows 10 x64 Edition  Google Chrome 84.0.4147.89

      @LOGI好的,感谢,我没用腾讯云了,现直接套用CF,然后前端部署在自己服务器,已经完成了,但是文件夹size显示为0KB,这个是什么原因呢?

      链接:https://pan.mcheng.cn/

  12. owo owo   Windows 10 x64 Edition  Google Chrome 83.0.4103.116

    可以添加pdf预览功能吗?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 84.0.4147.89

      @owo等等再说

  13. 救我 救我   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

    freshtoken没了

  14. 救我 救我   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

    获取freshtoken的网址无效了了www,求解救啊www

    1. LOGI LOGI   Windows 7 x64 Edition  Google Chrome 81.0.4044.138

      @救我我能打开,有问题加群

  15. Lemn Lemn   Windows 7 x64 Edition  Firefox 77.0

    获取不了token404找不到页面

    1. 救我 救我   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

      @Lemn是的www

  16. code code   Windows 10 x64 Edition  Google Chrome 81.0.4044.138

    博主你好,我想问下这个文件夹的读取速度是由文件夹大小决定还是文件大小决定,我有一个70G的文件夹可以秒开,但是里面的文件加再打开就要读取很久几分钟测i能出来文件,是哪里的问题呢?最后一级文件夹里的文件是jpg和skp格式的文件

  17. Coda Coda   Windows 7 x64 Edition  Google Chrome 80.0.3987.163

    博主你好,请问贵站demo里文件夹下方的注释要怎么用呢,是要把markdown文件放在对应的文件夹中吗?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 81.0.4044.113

      @Coda是的,命名为 README.md

  18. Mimi Mimi   Windows 10 x64 Edition  Google Chrome 81.0.4044.92

    博主
    我有2个网盘 想展示
    github 里面怎么设置?
    只能使用2个账号吗?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 81.0.4044.113

      @Mimi部署 2 个后端,前端 index.html 也用两份,放到不同文件夹。比如 /od1/index.html 用 name.github.io/od1/ 访问;/od2/index.html 用 name.github.io/od2/ 访问

    2. Mimi Mimi   Windows 10 x64 Edition  Google Chrome 81.0.4044.92

      @LOGI怎么创建啊
      小白比较迷茫

    3. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 81.0.4044.113

      @Mimi在你 github 仓库创建两个文件夹,每个里都放一份 index.html。怎么操作 github 自己搜索下

    4. Mimi Mimi   Windows 10 x64 Edition  Google Chrome 81.0.4044.92

      @LOGIcreate new file---A/----index.html
      这样就可以 创建一个A 文件
      只要把代码放到到edit new file 下面就OK 啦

  19. meichuan meichuan   Windows 10 x64 Edition  Google Chrome 81.0.4044.92

    我的github已经用来做了个人网站了,占用现在的 用户名.github.io,这要怎么调整?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 81.0.4044.113

      @meichuan把 index.html 放子目录,比如放 onedrive 目录下,则可通过 name.github.io/onedrive/ 访问

  20. WuZhengqiang WuZhengqiang   Windows 10 x64 Edition  Google Chrome 80.0.3987.163

    感谢答主,你的文章帮助很大。我在使用中遇到了问题。劳驾。

    获取 refresh_token
    进入 该网址(世纪互联版点我),
    使用世纪互联版提示:系统内没有 xxxxxx。请务必键入正确的域。什么原因如何解决呢?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 81.0.4044.92

      @WuZhengqiang有可能是账号无权限