PyOne:一款基于Python的OneDrive文件本地化浏览系统
说明:之前博主介绍过一个OneDrive
网盘的目录索引程序OneIndex
,而且发了不少安装和使用教程了,介绍查看:OneIndex,今天再介绍个类似的工具PyOne
,基于Flask
开发的,由于是模仿的OneIndex
,自然功能就差不多,就是界面好看很多,后台也可以直接上传编辑文件,不过感觉有点小BUG
,这个就等作者慢慢完善了,这里说一下安装教程。
截图
说明
由于该程序是通过Azure directory
应用的API
功能获取文件列表、文件下载直链,所以就不能在OneDrive
个人版上使用了,目前只支持世纪互联版、OneDrive
商业版、OneDrive
教育版,如果你没有这些账号,可以使用OneIndex,这个是支持个人版的。
安装
Github地址:https://github.com/abbeyokgo/PyOne
环境要求:Python2.7
、Redis
、Mongodb
、Nginx
1、安装宝塔
#Centos系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh
安装完成后,进入面板,点击左侧软件管理,然后安装Nginx
、Redis
、MongoDb
。注意Debian
安装MongoDb
之前还需要使用命令apt install sudo
,不然可能存在MongoDb
启动不了的情况。
2、拉取源码
使用命令:
git clone https://github.com/abbeyokgo/PyOne.git
3、注册Azure directory应用
注册AD
应用,并获取api
,然后才能通过api
获取文件列表、文件下载直链。具体获取方法可查看之前的文章:获取Azure directory应用的API,也就是获取参数
那个步骤,依次得到Client ID
、Secret
、Reply URL
。
事实上你会发现获取后可能用不了(最起码目前新注册的是不能用的,也许是博主某方面姿势不对,这个就看有不有大佬成功过),不过不用担心,作者已经内置了这些参数,直接使用就行了,如果发现作者的用不了,可以使用博主提供的参数:
#按理说该参数是永久有效的
client_id="ea2b36f6-b8ad-40be-bc0f-e5e4a4a7d4fa"
client_secret="h27zG8pr8BNsLU0JbBh5AOznNS5Of5Y540l/koc7048="
reply_url="https://onedrive.live.com/about/business/"
4、修改配置
配置文件均在config.py
文件中进行修改。
设置API
,修改如下:
#该步骤可以跳过,作者已经内置了参数,直接使用即可,如果依然不行,可使用博主提供的
修改config.py的client_id值为应用程序ID
修改config.py的redirect_uri值为设置的域名
修改config.py的client_secret值为密钥
其它设置:
#修改config.py的config_dir值为源码所在目录下的网站源码绝对路径(假如源码放在/root/xx.com目录下,则这里修改为:/root/PyOne)
#修改config.py的share_path值为你要分享的onedrive文件夹,如果是分享全部的onedrive文件,则为/
#修改config.py的od_type值为你的onedrive类型:
onedrive适合国际版和教育版
onedrive_21v适合世纪互联版
#修改config.py的app_url值为你的onedrive链接,比如:https://your-my.sharepoing.com/,最后必须带’/’,如果不知道你的onedrive个人域名,登录一下你的onedrive看一下域名就知道了。注意国际版的onedrive链接是com结尾,世纪互联版的是cn结尾
#修改config.py的allow_site值设置允许调用的域名,起到防盗链的功能
5、开始安装
安装pip
:
#CentOS 6.x 32位
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y python-pip
#CentOS 6.x 64位
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y python-pip
#CentOS 7.x
yum install -y epel-release
yum install -y python-pip
#如果CentOS 7安装出现No package python-pip available,可以用以下命令进行安装
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
#Debian/Ubuntu系统
apt-get -y update
apt-get -y install python-pip
安装程序所需的依赖:
cd /root/PyOne
pip install -r requirements.txt
开始运行:
gunicorn -w4 -b 0.0.0.0:34567 run:app
然后试着访问:http://ip:34567
看看能正常显示,如果不能,请在宝塔的安全里开启端口。
觉得没问题了,那就使用screen
在后台运行,教程参考:使用screen来实现多任务不断线操作命令。
域名设置
点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL
填入http://127.0.0.1:34567
,再启用反向代理即可。
然后再点击配置文件,进行如下修改:
#加上中间两句
location /
{
...
proxy_buffering off;
proxy_cache off;
...
}
最后就可以进入域名打开授权页面了(这里可能需要梯子)。再登陆你的OneDrive for Business
账号,登陆成功后复制地址栏中的地址,并提取code
的字段(就是code=
后面至&
前面),粘贴到网站的验证码框即可,后台地址:http://xx.com/admin
,默认密码:PyOne
,可以在config.py
里进行修改。
开机启动
网站源码下有个supervisord.conf
,主要内容如下:
[program:pyone]
command = gunicorn -k eventlet -b 0.0.0.0:34567 run:app
directory = /root/PyOne
autorestart = true
主要修改两个地方:
端口号:即34567那个端口号,修改为自己选的,或者不改动
源码目录:directory修改为你选的网站目录
修改之后运行下面的命令,设置开机启动
echo "supervisord -c 源码目录/supervisord.conf" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
重启生效。
本次不用重启生效的方法:
supervisord -c 源码目录/supervisord.conf