Rat's

PyOne:一款支持绑定多网盘的OneDrive文件本地化浏览系统
说明:之前博主介绍过一个OneDrive网盘的目录索引程序OneIndex,而且发了不少安装和使用教程了,介绍查看...
扫描右侧二维码阅读全文
15
2018/11

PyOne:一款支持绑定多网盘的OneDrive文件本地化浏览系统

说明:之前博主介绍过一个OneDrive网盘的目录索引程序OneIndex,而且发了不少安装和使用教程了,介绍查看:OneIndex,今天再介绍个类似的工具PyOne,基于Flask开发的,由于是模仿的OneIndex,自然功能就差不多,就是界面好看很多,后台也可以直接上传编辑文件,目前作者新增多网盘和离线下载,该功能刚出来,BUG肯定是有的,可以向作者反映修复下,这里说一下安装教程。

截图

请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述

更新

【2019.2.16】
PyOne代码组织大变更!更新版本号为4.0!
【2018.11.19】
新增离线下载功能,依赖Aria2。
【2018.11.15】
PyOne喜迎3.0版本,支持绑定多个onedrive网盘,再也不怕5T小姐姐不够看了。

特性

#简单易用
只需简单设置,即可做一个onedrive文件列表分享程序。

#功能丰富
可设置文件夹密码。只需在文件夹添加.password文件,内容为密码内容,即可在该文件夹设置密码
可设置README。

#后台强大
防盗链设置。
后台上传文件。
后台更新文件。
后台设置统计代码
后台管理onedrive文件。
直接删除onedrive文件
直接在后台给文件夹添加.password和README和HEAD
直接在后台编辑文本文件。
上传本地文件至onedrive
支持创建文件夹
支持移动文件(仅限单文件)

#支持绑定多网盘

#支持离线下载

安装

Github地址:https://github.com/abbeyokgo/PyOne
使用文档:https://wiki.pyone.me/
账号支持:只支持onedrive商业版、教育版、个人版
环境要求: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、开始依赖

cd /root/PyOne
pip install -r requirements.txt

4、开始运行

#复制配置文件
cp self_config.py.sample self_config.py
cp supervisord.conf.sample supervisord.conf

如果当前不是在root目录下(本文是默认root目录下),则需要修改self_config.pyconfig_dir参数和supervisord.confdirectory参数为正确的目录!

#运行
gunicorn -w4 -b 0.0.0.0:34567 run:app

然后试着访问:http://ip:34567看看能正常显示,如果不能,请在宝塔的安全里开启端口。

5、安装Aria2

git clone https://github.com/abbeyokgo/aria2_installer.git
cd aria2_installer
sh install_aria2.sh

域名设置

点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL填入http://127.0.0.1:34567,再启用反向代理即可。

然后再点击配置文件,进行如下修改:

#加上中间三句
location / 
    {
        ...
        
        proxy_buffering off;
        proxy_cache off;
        proxy_set_header X-Forwarded-Proto $scheme;
                
        ...
    }

最后就可以进入域名打开授权页面了。
请输入图片描述
请输入图片描述
授权成功即可,首次访问,会显示登录后台,输入初始密码:PyOne后会自动跳转到绑定网盘页面。如果没有跳转到绑定网盘页面,可以按照:后台-文件管理-添加网盘进行下一步。

开机启动

网站源码下有个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 /root/PyOne/supervisord.conf" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

重启生效。

本次不用重启生效的方法:

supervisord -c /root/PyOne/supervisord.conf

绑定多网盘

绑定好第一个网盘之后,登录后台(/admin)-文件管理,即可看到网站顶部还有两个“添加网盘”的链接,点进去即可继续绑定更多网盘。

注意:为确保可以正确绑定网盘,请开一个隐私窗口或者清除cookies后再绑定新网盘!

目前默认是只能绑定3个网盘,如果你需要绑定更多的网盘,可以编辑self_config.py文件。

#修改od_users字典参数。参考已有内容,添加更多的位置,比如:D、E、F等
od_users={
    "A":{
        "client_id":"",
        "client_secret":"",
        "share_path":"/",
        "other_name":"网盘1区",
        "order":1
    },
    "B":{
        "client_id":"",
        "client_secret":"",
        "share_path":"/",
        "other_name":"网盘2区",
        "order":2
    },
    "C":{
        "client_id":"",
        "client_secret":"",
        "share_path":"/",
        "other_name":"网盘3区",
        "order":3
    }
}

解绑网盘

如果绑定了网盘想要进行解绑,或者绑定网盘出错,但是网站已经显示了这个盘符的情况下,需要解绑网盘。

可按照以下步骤操作:

1、编辑self_config.py文件。
2、找到od_users字典参数。
3、参数od_users下找到对应的盘符。
4、将对应盘符的client_id参数和client_secret参数置为空值。

离线下载

1、离线下载依赖aria2;请确保已经安装了aria2并在后台配置了正确信息!
2、离线下载支持:http(s)直链、磁力链接。
3、添加任务时,一行一个下载链接。
4、在哪个目录下点击离线下载按钮,最终就会上传到哪个目录下。

命令行操作

1、单文件上传

#请确保PyOne源码路径正确
python /root/PyOne/function.py Upload 服务器文件绝对路径 onedrive路径 盘符

参数说明:

#服务器文件绝对路径:服务器下存在的一个文件绝对路径。比如:/home/test.mp4。

#onedrive路径:即onedrive下的路径。这里分两种情况:
上传后不用重命名,比如我直接上传到测试目录下,onedrive路径为:/测试/。目录最后面必须带/。
上传后重命名,比如我上传到测试目录下,并重命名为new.mp4,onedrive路径为:/测试/new.mp4。最后面不能带/。
看出区别了吗?带/和不带/的区别!

#盘符:默认为A。如果需要上传到其他网盘,或者你修改过盘符,则修改这个盘符参数。

示例:

#上传服务器的/home/test.mp4到盘符A的onedrive的测试目录下:
python /root/PyOne/function.py Upload /home/test.mp4 /测试/ A

#上传服务器的/home/test.mp4到盘符A的onedrive的测试目录下,并重命名为new.mp4:
python /root/PyOne/function.py Upload /home/test.mp4 /测试/new.mp4 A

2、上传文件夹所有文件

#请确保PyOne源码路径正确
python /root/PyOne/function.py UploadDir 服务器目录绝对路径 onedrive路径 盘符

参数说明:

#服务器目录绝对路径:服务器下存在的目录绝对路径。比如:/home/test

#onedrive路径:即onedrive下的路径。比如:/test/

#盘符:默认为A。如果需要上传到其他网盘,或者你修改过盘符,则修改这个盘符参数。

示例:

#上传服务器的/home下的所有文件到盘符A的onedrive的测试目录下:
python /root/PyOne/function.py UploadDir /home/test /测试/ A

3、更新缓存
全量更新(默认),即全量更新文件目录。推荐在文件目录结构发生变化的情况下才进行本操作。

#请确保PyOne源码路径正确
python /root/PyOne/function.py UpdateFile

增量更新,即只有当文件夹大小发生变化时才进行更新操作。推荐在文件目录结构没有发生变化的情况下进行操作。

#请确保PyOne源码路径正确
python /root/PyOne/function.py UpdateFile new

更新源码

#PyOne旧版本升级到3.0,请重装!

#PyOne3.0内小版本更新
拉最新代码:git pull
重新安装依赖,看是否有新增的依赖包:pip install -r requirements.txt
重启网站:supervisorctl -c supervisord.conf restart pyone
最好更新一下文件缓存:python function.py UpdateFile

错误指导

1、502 Bad Gateway
一般是网站没有运行导致的。在网站目录运行

supervisord -c supervisord.conf

如果运行上面的命令出现类似Error:Another program is alright listening on a port的错误,说明已经运行过这个命令,可以运行以下命令重启网站

supervisorctl -c supervisord.conf restart pyone

2、500 Internal Server Error
一般是因为服务器内部出现问题,可检查RedisMongoDB是否安装?是否运行?
如果上诉没问题,可清空Redis缓存:

redis-cli #进入redis命令行
 > FLUSHALL

如清空Redis缓存还有问题,可手动运行网站查看错误

supervisorctl -c supervisord.conf stop pyone && gunicorn -k eventlet -b 0:34567 run:app

然后再访问页面,查看ssh的错误提示。

便捷教程

总结

目前来说该程序很不错,特别是加了多网盘和离线下载,作者更新也频繁,但BUG还是不少的,特别是离线下载。如果想完美的使用Aria2离线下载并自动上传的,建议看下博主的该教程→点击查看

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2019 年 02 月 16 日 05 : 00 PM

发表评论 取消回复

187 条评论

  1. liloch

    网站显示502 bad geteway ,运行supervisord -c supervisord.conf 后显示这个:Error:Another program is alright listening on a port

    再运行supervisorctl -c supervisord.conf restart pyone 后显示这个:pyone: ERROR (not running)
    pyone: ERROR (spawn error)
    咋子办,重启服务器啥的也没用

    1. Rat's
      @liloch

      显示端口被占用,用ip:34567能访问吗?

      1. liloch
        @Rat's

        反复检查了,端口没有被占用,试图运行gunicorn -w4 -b 0.0.0.0:34567 run:app 来启动他的时候显示很多错误,百度排除了一些后,重新安装依赖也试过了,这个错误 一直出现 ModuleNotFoundError: No module named 'extend' 咋子版,不行的话我能重装pyone吗,怎么在ssh远程连接中卸载pyone啊,麻烦了

        1. Rat's
          @liloch

          你这个错误没咋见过,特别是这个提示缺少的模块,你可以直接用这个一键脚本吧,https://www.moerats.com/archives/806/

          1. liloch
            @Rat's

            我是搭好用了几天后,突然就不行的,有没有卸载pyone的方法,服务器上还有其他网站,不好重置,我想先卸载在装试试。

            1. liloch
              @liloch

              那个pip install extend 也试了 不行,我试了下直接运行一键脚本,也没啥用,应该要先卸载吧

              1. Rat's
                @liloch

                重装系统就好了,一切交给脚本。

                1. uu
                  @Rat's

                  缺少模块的解决方法找到了,已经尝试成功,附上链接https://zoco.me/post/certbot-requests-packages-urllib3-resolve

  2. zz

    我在萌咖哪里买的ssl,用宝塔绑定之后无法使用https,这个是什么情况。。。网站是搭建的pyone

    1. Rat's
      @zz

      姿势不对。

  3. 缘来来

    问个白痴问题。。pyone获取的仅仅是网盘的文件列表,而不是把整个网盘下载下来吧

    1. Rat's
      @缘来来

      不会,整个下载的话,那还不如直接存放在服务器里。

  4. Joe

    大佬,我按照你的步骤搞的,然后出现以下问题:
    1.离线下载能创建,但是不能下载。
    2.上传文件,跑完100%的时候,提示上传失败。
    3.后台点多了之后会404。
    有空回复一下哈嘻嘻嘻。

    1. Rat's
      @Joe

      使用的问题可以通过Github地址,加群,给作者反馈

  5. 猪蹄君

    老铁,我安装成功了,登录后台也可以,就是点 文件管理时候,经常会出现404,然后多刷新几遍,又显示正常了,然后再点 文件管理,就又出现404,是需要设置什么吗

    1. Rat's
      @猪蹄君

      看是不是api有点炸的问题,导致目录文件刷不出来

  6. sky

    Error: could not find config file supervisord.conf
    For help, use /usr/bin/supervisorctl -h
    You have new mail in /var/spool/mail/root这是什么意思 重启服务器打不开网站

    1. Rat's
      @sky

      需要在源码目录运行重启,比如本文的/root/PyOne

      1. sky
        @Rat's

        还是错误 Error: could not find config file supervisord.conf
        For help, use /usr/bin/supervisorctl -h
        You have new mail in /var/spool/mail/root

  7. outman

    我绑定教育网盘没用(就是5T的那种),自己5个G的个人网盘倒是可以用。绑定是以上两种都能成功绑定上,就是前者貌似没有访问权限一样的,查看不到网盘内容也没法修改,连通过PyOne新建个文件夹都不行。后者倒OK,aria2上传和修改创建都没问题,头大

    1. outman
      @outman

      隔了一段时间又试了下又可以了,啥都没动,真是见鬼

  8. zhicheng

    可以更改自带的dplayer播放器吗?

  9. lala

    好的,成功了,感谢

  10. wintsa

    配置文件的代码写错了吧

    1. Rat's
      @wintsa

      哪里,更新v4后就没怎么关注了。

      1. wintsa
        @Rat's

        location /这个宝塔里面添加错误,要在/前面加个~还是什么符号的。忘记了。。

        1. Rat's
          @wintsa

          不需要加这个,只需要在这个范围中间加3行代码就行了