MENU

FODI,一款 OneDrive 秒级列表程序

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

腾讯云停止维护,请部署 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...

  • OωO
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ°ο°)ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ"(´っω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • (。•ˇ‸ˇ•。)
  • 泡泡
  • 阿鲁
  • 蛆音娘
  • 小埋
  • 颜文字

已有 156 条评论
  1. 强调几点:(该留言由系统自动生成!)
    1. 请不要刷广告,本站没有流量!
    2. 我不回复虚假邮箱,因为回复了你也看不到!
    3. 存在必须回复的隐藏内容时,可以直接使用表情框里的阿鲁表情!

  1. 久治不愈 久治不愈   Windows 7 x64 Edition  Google Chrome 80.0.3987.132

    Github 仓库的 index 文件编辑不了

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 81.0.4044.92

      @久治不愈登录自己账号编辑你的,不是我的

  2. elle elle   Windows 10 x64 Edition  Google Chrome 80.0.3987.162

    加密文件夹好像不用那么麻烦,直接新建个 txt 文件,把密码放在文件里面,在重命名文件(包括后缀)改成.password,我就这样使用的

  3. krau krau   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

    大佬,照你的方法部署好后,打开前端是空白,可以帮我看看是怎么回事吗
    https://krau.top/onedrive/

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.162

      @krau 前端 HTML 里填错了,照着文章图片填

    2. krau krau   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

      @LOGI 好吧,我再检查检查 orz

    3. elle elle   Windows 10 x64 Edition  Google Chrome 80.0.3987.162

      @krau 为什么不把前端放在 cloudflare 里面?这样速度应该会比 github 快,只需加几行代码,就能将前端部署在 cloudflare workers,我还做了个教程,教程地址:https://blog.csdn.net/qq_38243612/article/details/105352680,如果有侵权的内容,请联系我删除。希望作者大佬能出个只需部署在 workers 就能显示多个网盘的版本。另一个大佬的 OneManager-php 项目支持了多网盘,地址:https://github.com/qkqpttgf/OneManager-php,就是不像 FODI 支持 cloudflare

  4. nnnn nnnn   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

    大佬,用你的方法成功部署了 onedrive 列表,感谢!请问下这个方法能够部署 google drive 吗?要是能就太好了,onedrive 资源共享 / 转存实在太不方便了。

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

      @nnnn 感谢支持,google drive 可以用 donwa 大佬的项目呢
      https://github.com/donwa/goindex

    2. nnnn nnnn   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

      @LOGI 多谢!Goindex 我用过,可惜在国内访问有点慢,不如你这个快。

  5. zeaslity zeaslity   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

    你好!
    请问用在腾讯云 SCF 的这套代码,可以直接运行于 AWS Lambda 吗?

    感觉 Serverless 是不是只要运行环境相同就可以了呢

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

      @zeaslity 虽然都是 Serverless,每家的入口,API 都不同,不能直接运行

  6. Weifeng Weifeng   Windows 10 x64 Edition  Google Chrome 80.0.3987.122

    大佬,
    Access to XMLHttpRequest at 'https://od-api.weifeng.workers.dev/' from origin 'xxx' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.122

      @Weifeng 前后端 http/https 要一致,不可混用

    2. Weifeng Weifeng   Windows 7  Google Chrome 80.0.3987.122

      @LOGI 都是 https,不知道为什么出这个问题...

    3. LOGI LOGI   Windows 7 x64 Edition  Google Chrome 80.0.3987.122

      @Weifeng 那就是 cf 配置填错了

    4. Weifeng Weifeng   Windows 10 x64 Edition  Google Chrome 80.0.3987.122

      @LOGI 对,现在好了,谢谢大佬

  7. undefined undefined   Windows 10 x64 Edition  Google Chrome 63.0.3239.132

    我登录的时候,显示【需要管理员批准】,是账号的问题吗?我的教育 5T

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

      @undefined 那应该就是了

  8. six six   Windows 10 x64 Edition  Google Chrome 80.0.3987.116

    有服务器端的吗?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.149

      @six 没有呢,服务器可以用 oneindex 等

  9. 小老弟 小老弟   Mac OS X 10.15.2  Google Chrome 80.0.3987.106

    我以前忘了什么时候使用过腾讯云,已经付过 0.01。现在卡在 “添加触发方式” 这个步骤,提示 “操作未授权 ([TencentCloudSDKError] Code=InternalError.GetRoleError, Message=[QC_STS] role not exist, RequestId=d438ee66-8b4f-4429-9b5e-d29f2f36ffbd)” 怎么解决呢,谢谢

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.106

      @小老弟刚进入 scf 会弹出授权提示,跟随它进去授权

  10. GamerNoTitle GamerNoTitle   Windows 10 x64 Edition  Google Chrome 79.0.3945.130

    在那个网站上面无法获取 refresh token,提示 "error": "invalid_grant",

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      @GamerNoTitle 按要求操作哦

    2. GamerNoTitle GamerNoTitle   Windows 10 x64 Edition  Google Chrome 80.0.3987.87

      @LOGI 就是按照要求操作了,在获取 refreshtoken 的时候提示 invalid_grant,也没有给我返回 refresh
      _token

    3. LOGI LOGI   Android 9  Google Chrome 79.0.3945.136

      @GamerNoTitle 那就是账号没有 API 权限

  11. wu wu   Windows 10 x64 Edition  Google Chrome 77.0.3865.90

    不能获取 refresh_token

    1. wu wu   Windows 10 x64 Edition  Google Chrome 77.0.3865.90

      @wu 报错

    2. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 79.0.3945.130

      @wu 建议用 cloudflare 版

  12. vakarian vakarian   Windows 10 x64 Edition  Google Chrome 79.0.3945.130

    打开网页加载完之后一片白屏,没有内容,请问可能是什么原因?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 79.0.3945.130

      @vakarian 建议用 cloudflare 版

    2. vakarian vakarian   Windows 10 x64 Edition  Firefox 72.0

      @LOGI 果然成功了,感谢

    3. musics musics   Windows 10 x64 Edition  Google Chrome 80.0.3987.106

      @LOGI 大佬 同使用腾讯云出现这个问题 有办法解决吗 谢谢 cf 可以用但太慢了

    4. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 80.0.3987.100

      @musics 腾讯云版恐将放弃维护

  13. Dianr Dianr   Android 9  MIUI Browser 11.7.30

    演示地址打不开

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 79.0.3945.130

      @Dianr 老域名挂了没换,现在好了

    2. Dianr Dianr   Android 9  MIUI Browser 11.7.30

      @LOGI 个人网盘常有变化,图片和资料难保

  14. flyff flyff   Windows 10 x64 Edition  Google Chrome 79.0.3945.88

    有没有自己服务器安装的教程

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 79.0.3945.88

      @flyff 后端建议放 cloudflare,然后把 index.html 扔到自己服务器就行了,不明白可以加群。

    2. flyff flyff   Windows 10 x64 Edition  Google Chrome 79.0.3945.88

      @LOGI 腾讯函数代码:{"errorCode":-1,"errorMessage":"user code exception caught","stackTrace":"Traceback (most recent call last):\n File \"/var/user/index.py\", line 84, in main_handler\n return gen_response (router (event))\n File \"/var/user/index.py\", line 40, in router\n host = event ['headers']['host']\nKeyError: 'headers'"}

      有这个错误,我用 github 和放自己服务器都是显示空白

    3. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 79.0.3945.88

      @flyff 应该是后端部署错误,正常响应和文中描述相同。

  15. 左岸 左岸   Mac OS X 10.15.1  Google Chrome 78.0.3904.108

    速度真快

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

      @左岸滑稽令我心慌

    2. 夜光藏森 夜光藏森   Windows 10 x64 Edition  Google Chrome 81.0.4044.129

      @LOGILZ 这个的确是个好东西,希望能坚持维护,哈哈

  16. csdjl88 csdjl88   Windows 7 x64 Edition  Google Chrome 78.0.3904.108

    老大啊 部署后端代码在腾讯那里测试 返回是这样的
    {"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"Cannot read property 'file' of undefined\nTypeError: Cannot read property 'file' of undefined\n at EventHandler.exports.main_handler [as realHandler] (/var/user/index.js:194:27)\n at EventHandler.handle (/var/runtime/node8/bootstrap.js:405:28)\n at invoke (/var/runtime/node8/bootstrap.js:208:22)\n at Timeout.setTimeout [as _onTimeout] (/var/runtime/node8/bootstrap.js:137:9)\n at ontimeout (timers.js:475:11)\n at tryOnTimeout (timers.js:310:5)\n at Timer.listOnTimeout (timers.js:270:5)"}

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

      @csdjl88 后端不能直接打开,把前端也部署好

    2. csdjl88 csdjl88   Windows 7 x64 Edition  Google Chrome 78.0.3904.108

      @LOGI 好的,现在用 Github Pages 部署成功,能访问了。但是我把前端文件 index.html 放到自己的服务器就是空白页面,用的是宝塔面板。是不是还有什么东西要加

    3. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

      @csdjl88 没有了,可能是宝塔没配置好,可以加群详聊

  17. Mr.Lin Mr.Lin   Windows 7 x64 Edition  Google Chrome 72.0.3626.119

    添加触发方式
    操作未授权 ([TencentCloudSDKError] Code=InternalError.GetRoleError, Message=[QC_STS] role not exi

    linux 服务器能搞这个吗?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

      @Mr.LinGetRoleError 是因为没有权限,首次进入腾讯云 scf 根据提示完成授权。Linux 服务器可以用 Oneindex

  18. Mr.Lin Mr.Lin   Windows 7 x64 Edition  Google Chrome 72.0.3626.119

    refresh_token 填写林 没跳转啊 获取不到。。

  19. 卫   Windows 10 x64 Edition  QQ 浏览器 10.5.3863.400

    网盘名称字体如何更改?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.108

      @卫字体当然是 css,f12 调试下就能看到,搞不定可以加群

  20. underworld underworld   Mac OS X 10.13.1  Google Chrome 78.0.3904.97

    大佬,这个能和以前那个一样自定义域名访问吗?

    1. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.97

      @underworld 支持,如果使用了 github 部署前端,参考该教程绑定域名
      https://www.cnblogs.com/ljsh/p/10841670.html

    2. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.97

      @underworld 既然你有博客,把前端放到自己服务器上更简单

    3. underworld underworld   Mac OS X 10.13.1  Google Chrome 78.0.3904.97

      @LOGI 这个…… 直接放服务器根目录?还是怎样 小白求教

    4. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.97

      @underworld 是的,比如你的站点目录是 /www/wwwroot/www.zhouli.online,进入该目录,新建文件夹 pan,然后把 index.html 放到 pan 目录下就可以通过 www.zhouli.online/pan/ 访问它了

    5. underworld underworld   Mac OS X 10.13.1  Google Chrome 78.0.3904.97

      @LOGI 多谢大佬!!成功了!就是如果我只想绑定域名怎么搞?还是上面那个办法吗要用 github 托管?还是可以用自己服务器

    6. LOGI LOGI   Windows 10 x64 Edition  Google Chrome 78.0.3904.97

      @underworld 都可以,用 github 就看我上面发的链接。用自己的服务器就新建一个站点,比如目录是
      /www/wwwroot/pan.zhouli.online,把 index.html 放到该目录下面,把域名解析到该站点即可