PyOne|一款基于Python的OneDrive文件本地化浏览系统

cera cera

说明:之前博主介绍过一个OneDrive网盘的目录索引程序OneIndex,而且发了不少安装和使用教程了,介绍查看:OneIndex,今天再介绍个类似的工具PyOne,基于Flask开发的,由于是模仿的OneIndex,自然功能就差不多,就是界面好看很多,后台也可以直接上传编辑文件,不过感觉有点小BUG,这个就等作者慢慢完善了,这里说一下安装教程。

截图


说明

由于该程序是通过Azure directory应用的API功能获取文件列表、文件下载直链,所以就不能在OneDrive个人版上使用了,目前只支持世纪互联版、OneDrive商业版、OneDrive教育版,如果你没有这些账号,可以使用OneIndex,这个是支持个人版的。

安装

Github地址:https://github.com/abbeyokgo/PyOne

环境要求:Python2.7RedisMongodbNginx

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

安装完成后,进入面板,点击左侧软件管理,然后安装NginxRedisMongoDb。注意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 IDSecretReply 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.pyclient_id值为应用程序ID
修改config.pyredirect_uri值为设置的域名
修改config.pyclient_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

cera cloudiplc tengxunyun

相关推荐