JustList,仅仅是目录。
没错,又一款简单的网盘文件列表与分享工具...
支持天翼云盘、OneDrive、OneDrive 世纪互联,可以同时启用多个云盘的多个用户。当然,也有一个简单的缓存与自动刷新系统。
本程序可前后端分离,以下主要为后端部署说明。
总的来说,很简单的几步:
- 安装程序与依赖
- 修改云盘配置项
- 启用核心
- 运行
下述说明看似很多,其实内容很少(可能是废话太多了?hhh)。
$ pip3 install -r requirements.txt
编辑 ./app/plugin/sys_update.py
,将 sys/update/xxxiiixxx
改为你想要的强制刷新地址。
这部分请务必修改(或将此插件停用)!否则可能会被恶意请求。
编辑 ./app/core/cloud189/config.json
。
{
"accounts": {
"cloud189_user1": [
"<your_username>", // 用户名
"<your_password>", // 密码
{} // cookie,可留空为 {}(但必须存在)
],
"cloud189_user2": [
"<your_username>",
"<your_password>",
{}
]
},
"cant_enterFolder": ["同步盘"], // 禁止访问的文件夹,正则 match
"cant_visFile": ["\\..*?"], // 禁止文件名,正则 match
"only_Referrer": [], // 简单防盗链,允许的 Referrer,留空为全部允许,正则 search
"sys_checkTime": 60, // 更新任务线程间隔
"sys_cookieExpiredTime": 3600, // cookie 缓存有效时间
"sys_dataExpiredTime": 900, // 文件目录缓存有效时间
"sys_dl_urlExpiredNum": 30, // 下载链接缓存有效次数
"sys_dl_urlExpiredTime": 300 // 下载链接缓存有效时间
}
编辑 ./app/core/onedrive/config.json
。
{
"accounts": {
"onedrive_user1": [
0, // 0 为国际版,1 为世纪互联
"" // refresh_token,留空时程序会引导填写,也可提前填写(但必须存在)
],
"onedrive_user2": [
1,
""
]
},
"cant_enterFolder": [], // 禁止访问的文件夹,正则 match
"cant_visFile": ["\\..*?"], // 禁止文件名,正则 match
"only_Referrer": [], // 简单防盗链,允许的 Referrer,留空为全部允许,正则 search
"rootPath": "/", // 根目录
"sys_checkTime": 65, // 更新任务线程间隔
"sys_dataExpiredTime": 1200, // 文件目录缓存有效时间
"sys_dl_urlExpiredNum": 30, // 下载链接缓存有效次数
"sys_dl_urlExpiredTime": 600 // 下载链接缓存有效时间
}
注意,以上两个配置文件中 accounts
中自定义的多用户用户名不可重复!
若在配置中保留此项为空,那么程序会在第一次初始化时引导你获取 code 后自动获得 refresh_token,并且会保存在配置文件中。
如果你想使用自己的客户端 ID 和密码,请修改 ./app/core/onedrive/onedrive.py
头部的变量。
例如,
clientId = [
"78d4dc35-7e46-42c6-9023-2d39314433a5",
"3ff8580b-62e2-47ea-94f1-47e41440122c",
]
第一行为 OneDrive 国际版的,第二行为世纪互联版的。
默认不会加载任何服务。若要开启服务,请正确修改各配置后启用加载核心。
编辑 ./app/core/__init__.py
,取消相应注释即可。
from .onedrive.main import * # 开启 OneDrive
from .cloud189.main import * # 开启 天翼云盘
$ python3 main.py
(若要更改程序的运行地址,请修改 ./main.py
)
不是必要的操作,但如果你想的话,请按照以下步骤配置。
- 编辑
./main.py
,将CORS(app, resources=r"/*")
取消注释。如果你想指定域,请自行修改。
(将 return render_template("md.html")
注释及 if
语句注释)
- 编辑
./templates/md.html
,将api_url
改为后端运行地址即可(结尾不含/
)。
(如果配置文件中设置了 only_Referrer
,请注意修改)
├── app
├── ├── __init__.py
├── ├── core // 核心 //
├── ├── ├── __init__.py // 开关
├── ├── ├── args // 请求参数获取
├── ├── ├── cache // 缓存
├── ├── ├── file // 文件操作
├── ├── ├── cloud189 // 天翼云盘核心
├── ├── ├── onedrive // OneDrive 核心
├── ├── plugin // 插件 //
├── ├── ├── __init__.py // 开关
├── ├── ├── do_file.py // 文件直链跳转
├── ├── ├── get_list.py // 网盘目录
├── ├── ├── get_text.py // 文件内容获取
├── ├── ├── sys_update.py // 强制刷新网盘目录缓存
├── ├── platform.py // 提供核心、插件的注册和调用(中转)
├── templates // 前端页面
├── .gitattributes
├── .gitignore
├── main.py // 运行
├── README.md
简略框架说明可以查看PixivBiu-后端。
此部分可自行修改插件以更改。
api/get/list
- 获取网盘的目录
- 示例
api/get/list
: 返回全部目录api/get/list/user1/a/x
: 返回 user1 的 a 目录下的 x 目录/文件(如果存在)api/get/list/user2/?id=xxx
: 返回 user2 的 id 为 xxx 的目录/文件
api/get/text
- 获取文件的内容
- 示例
api/get/text/user1/a/x
: 返回 user1 的 a 目录下的 x 文件内容(如果存在)api/get/text/user2/?id=xxx
: 返回 user2 的 id 为 xxx 的文件内容
file
- 直链跳转(下载文件)
- 示例
file/user1/a/x
: 重定向至 user1 的 a 目录下的 x 文件下载链接(如果存在)file/user2/?id=xxx
: 重定向至 user2 的 id 为 xxx 的文件的下载链接
sys/update/xxxiiixxx
- 强制刷新网盘目录缓存
- 本程序会一次性加载全部允许的文件并缓存,所以若文件较多此过程可能会较慢(取决于你文件的数量与网络状况),但不影响正常运行
- 仅在小规模(天翼云盘x2、OneDrive 国际版x1、世纪互联版x1)且请求、文件数量中等的情况下测试,运行稳定
- 网盘操作代码修改自 Aruelius/cloud189、MoeClub/OneList,感谢
- 本程序仅供学习参考,请在达成目的后停止使用
- 使用后任何不可知事件都与原作者无关,原作者不承担任何后果
- MIT License
使用愉快。
; )