说明:目前OneDrive
目录程序已经很多了,比如:PyOne、OneIndex和OLAINDEX。这几个各有特色,都挺好用的,不过有时候api
在高峰期抽风的时候,都很容易出现空目录的情况,导致下载会出现问题,这里萌咖和sxyazi大佬就历时N
天,写了个基于Python3
的简约OneDrive
目录列表,同时换了一种api
来防止因使用人过多导致抽风等问题,稳定性大大的增加,而且使用Redis
动态缓存策略,打开目录的速度是相当的快,不过该程序初衷只想安静的做个目录程序,所以是不会增加看视频的功能,如果你想看视频,那就选择开头的3
个程序。
截图
安装
Github地址:https://github.com/0oVicero0/OneList/
说明:该程序不适用OneDrive
个人版,且建议使用Debian
系统安装,会很快。
1、安装依赖CenOS 6
系统:
#安装EPEL
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
#安装Python3和Redis
yum install python34 redis git -y
#安装pip3
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
#启动Redis
service redis start
#设置Redis开机自启
chkconfig redis on
CenOS 7
系统:
#安装EPEL
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#安装Python3和Redis
yum install python36 redis git -y
#配置Python3软链接
ln -s /usr/bin/python3.6 /usr/bin/python3
#安装pip3
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
#启动Redis
systemctl start redis
#设置Redis开机自启
systemctl enable redis
Debian
/Ubuntu
系统:
#安装pip3和Redis
apt update
apt install python3-pip redis-server git -y
2、安装OneList
#拉取源码
git clone https://github.com/0oVicero0/OneList.git
#安装依赖
cd OneList && pip3 install -r requirements.txt
3、获取auth_token
提示:获取方式建议选择方法一。
方法一:直接访问地址→传送门,然后登录你的账号获取auth_token
即可。
方法二:先使用浏览器访问该地址→传送门,登录你的OneDrive
账号,复制地址栏code=
和&session
之间的参数。
获取refresh_token
,在SSH
客户端使用命令:
#将下面auth_token替换成你获取到的参数,再使用命令
code="auth_token"
wget --no-check-certificate --post-data="client_id=ea2b36f6-b8ad-40be-bc0f-e5e4a4a7d4fa&client_secret=h27zG8pr8BNsLU0JbBh5AOznNS5Of5Y540l/koc7048=&grant_type=authorization_code&resource=https://api.office.com/discovery/&redirect_uri=http://localhost/onedrive-login&code=$code" 'https://login.microsoftonline.com/common/oauth2/token' -qO-
然后复制refresh_token
参数后面的字段。
4、运行
接下来在OneList
目录新建config.json
配置文件。
nano config.json
将以下内容复制进去:
#将下面refresh_token替换成你获取到的字段
{
"token": "<refresh_token>",
"location_path": "/",
"start_directory": "/",
"threads": 3,
"diff_seconds": 480,
"refresh_seconds": 720,
"metadata_cached_seconds": 768,
"structure_cached_seconds": 840
}
再使用ctrl+x
、y
保存退出。
开始运行:
gunicorn app:app -b 127.0.0.1:8888 -D
此时访问地址为127.0.0.1:8888
,还需要使用域名反代才能访问,如果你要使用ip
访问,将运行命令改成0.0.0.0:8888
即可。
5、域名反代
安装Caddy
:
wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
配置Caddy
:
#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!
echo "www.moerats.com {
gzip
tls admin@moerats.com
proxy / 127.0.0.1:8888
}" > /usr/local/caddy/Caddyfile
该配置会自动签发SSL
,请提前解析域名到VPS
服务器。
启动Caddy
:
/etc/init.d/caddy start
就可以打开域名进行访问了。
最后如果你没有OneDrive
大容量网盘可以申请1
年开发者计划,申请地址→传送门。
博主 这个不能用OD个人版吗
不能,接口只适合非个人版
目前用的是PyOne,还不错。搭配宝塔用的。oneindex我是搞伤心了。。。不玩了
试了三次502 Bad Gateway
应该是你的refresh_token不对,导致程序启动失败,所以反代后是502,启动的时候用gunicorn app:app -b 127.0.0.1:8888测试下。
我再试一次,<refresh_token>是 包含<>吧
不包含
[root@host /]# yum install python36 redis git -y
base: mirror.hostduplex.comextras: repos.lax.quadranet.comupdates: mirror.fileplanet.comLoaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
No package python36 available.
No package redis available.
Package git-1.8.3.1-20.el7.x86_64 already installed and latest version
Nothing to do
换debian 9吧
没有时间试试,不知道这个程序是否有提供API接口。可以自定义上传 下载等功能
不存在api的,还是使用微软的api
User account '' from identity provider 'live.com' does not exist in tenant 'MoeClub' and cannot access the application 'ea2b36f6-b8ad-40be-bc0f-e5e4a4a7d4fa'(OneDrive for API) in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.
moeclub???
登陆获取auth_token的时候报错,难道需要萌咖授权?还是不支持个人版?
这个我开头就说明的,不支持个人版。api是任何人都可以用,不需要授权。
宝塔怎么安装呀,自己没弄明白
宝塔是可以直接照着文章安装的
求个docker镜像
过几天看能不能做一个
好是挺好的,就是感觉为什么安装好像很繁琐? ,没有OneIndex那样方便简单
我觉得挺简单啊。OneIndex还需要php/Nginx环境
中间的onelist 名字在哪改呀 中间的onelist
这个文件templates/list.html
博主 修改完保存 为什么还是没变 需要重启么 ?
对,一般涉及到修改文件的,都需要重启生效