Rat's

一个可以绑定多个OneDrive网盘的极简目录列表:OneList
说明:OneList以前介绍过,主要的特色就是解决了因OneDrive API抽风导致的很多问题,稳定性和访问速度...
扫描右侧二维码阅读全文
26
2019/12

一个可以绑定多个OneDrive网盘的极简目录列表:OneList

说明:OneList以前介绍过,主要的特色就是解决了因OneDrive API抽风导致的很多问题,稳定性和访问速度都是不错的。不过由于使用Python写的,而Py单线程容易阻塞,响应不够迅速,刷新缓存时,Web端请求基本不可用,所以在整体性能上有点瑕疵。基于Golang的性能更好,效率更高,多盘并发缓存等众多好处,于是萌咖大佬就弃用Python版本,使用Golang重写了OneList,同时支持国际版、个人免费版(家庭版)、中国版(世纪互联)及多网盘绑定。

截图

请输入图片描述

更新

【2020.01.09】
修复内存占用过大。
新增支持在线视频播放的移动端自适应主题。

【2019.12.29】
新增隐藏目录或者文件。直接跳过缓存,减少API调用。
新增目录加密,支持不同目录不同账户密码。HTTP 401认证。

【2019.12.28】
新增搜索功能。

功能

  • 支持国际版、个人免费版(家庭版)、中国版(世纪互联)。
  • 支持同时列出多个盘的目录。(要求每个盘的SubPath唯一)
  • 支持文件夹内超过200个项目。
  • 支持后台自动刷新缓存。
  • 支持路径中含有特殊字符。
  • 数据储存在内存中,响应更加迅速。

安装

Github地址:https://github.com/MoeClub/OneList/tree/master/Rewrite

1、授权认证
点击右侧URL登录并授权,授权【国际版、个人版(家庭版)】、【中国版(世纪互联)】。

授权后会获取一个localhost开头打不开的链接,这里复制好整个链接地址,包括localhost

2、安装OneList

#新建并进入OneList目录
mkdir /opt/OneList && cd $_

#64位系统下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/amd64/linux/OneList
#32位系统下载
wget https://raw.githubusercontent.com/MoeClub/OneList//master/Rewrite/i386/linux/OneList
#arm架构下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/arm/linux/OneList
    
#给予权限
chmod +x OneList

3、使用命令

Usage of OneList:
  -a string
        // 初始化配置文件,添加新配置
        Setup and Init auth.json.
  -bind string
        // 绑定IP地址(公网: 0.0.0.0)
        Bind Address (default "127.0.0.1")
  -port string
        // 绑定端口(HTTP:80)
        Port (default "5288")
  -s string
        // 设置 SubPath 项, 需要与 -a 一起使用.
        Set SubPath. [unique per account] (default "/")
  -c string
        // 配置文件
        Config file. (default "config.json")
  -t string
        // Index.html 目录样式文件
        Index file. (default "index.html")
  -cn
        // 开关
        // 授权中国版(世纪互联), 需要此参数.
        OneDrive by 21Vianet.
  -ms
        // 开关
        // 授权个人版(家庭版), 需要此参数.
        OneDrive by Microsoft.

4、生成配置文件

#国际版,将url换成你上面复制的授权地址,包括http://loaclhost。
./OneList -a "url" -s "/onedrive01"

#个人版(家庭版),将url换成你上面复制的授权地址,包括http://loaclhost。
./OneList -ms -a "url" -s "/onedrive02"

#中国版(世纪互联),将url换成你上面复制的授权地址,包括http://loaclhost。
./OneList -cn -a "url" -s "/onedrive03"

提示Success! Add config. '/path/to/config.json'信息,则添加成功。

这里要注意的是:

1、授权url地址只能用一次,超过需要重新授权。
2、命令中的/onedrive01参数为指定网盘地址后缀,比如http://domain.com/onedrive01。
3、授权多个网盘的话,重复授权多次即可,参数均会添加到一个配置文件,且后缀不能重复。
4、地址后缀填错了的,可以稍后在配置文件中修改。

本文默认的配置文件路径/opt/OneList/config.json,参数详解,可自行修改:

[
  {
    // 如果是家庭版或者个人免费版, 此项应为 true.
    "MSAccount": false,
    // 如果是中国版(世纪互联), 此项应为 true.
    "MainLand": false,
    // 授权令牌
    "RefreshToken": "1234564567890ABCDEF",
    // 单配置文件中,此项要唯一.将此OneDrive中设置为`RootPath`目录映射在`http://127.0.0.1:5288/onedrive` 下.
    // (只推荐一个盘位的时候使用根目录"/".)
    "SubPath": "/onedrive",
    // 读取OneDrive的某个目录作为根目录. (支持根目录"/")
    "RootPath": "/Test",
    // 隐藏OneDrive目录中的文件夹和文件, 条目间使用 "|" 分割. (跳过缓存设置的条目.)
    "HidePath": "/Test/Obj01|/Test/Obj02",
    // 使用用户名和密码加密OneDrive目录. 目录和用户名密码间使用 "?" 分割, 用户名密码使用 ":" 分割, 条目间使用 "|" 分割. 无效条目将跳过.
    "AuthPath": "/Test/Auth01?user01:pwd01|/Test/Auth02?user02:pwd02",
    // 缓存刷新间隔.(所有项目中的刷新时间取最小值为有效刷新间隔)
    "RefreshInterval": 900
  }
]

这里注意,挂载多个盘符的时候,SubPath参数请不要为/,单个网盘建议为/

5、运行OneList

#下载默认的index.html主题,与config.json同目录,即本文默认的/opt/OneList
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/index.html -P /opt/OneList
#监听8000地址,自行修改
/opt/OneList/OneList -bind 0.0.0.0 -port 8000

最后打开ip:端口访问即可,如果你挂载网盘的时候SubPath/,那么直接通过根目录查看,如果为/onedrive1,那么通过ip:端口/onedrive1查看,如果该路径不存在,则会提示No Found.

且首次运行会异步缓存,也就是至少有一个盘缓存成功了,才会显示。

6、开机自启
这里新建一个简单的systemd配置文件,适用CentOS 7Debian 8+Ubuntu 16+

使用命令:

#设置你的运行监听端口,即你可以通过ip:端口访问程序,这里默认8000。
port="8000"
#将以下代码一起复制到SSH运行
cat > /etc/systemd/system/onelist.service <<EOF
[Unit]
Description=onelist
After=network.target

[Service]
Type=simple
ExecStart=/opt/OneList/OneList -bind 0.0.0.0 -port ${port}
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
#启动并设置开机自启
systemctl start onelist
systemctl enable onelist

更换主题

提示:下载主题的index.html文件,覆盖默认index.html文件,本文默认存放/opt/OneList,然后重启程序即可

主题地址:https://github.com/MoeClub/OneList/tree/master/Rewrite/@Theme

1、HaorWu

#作者
https://github.com/HaorWu

#特点
支持移动端自适应
支持当页搜索
支持按文件名, 日期, 大小排序
支持主动查看图片
支持在线播放视频

#下载地址
https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/%40Theme/HaorWu/index.html

2、jackjieYYY

#作者
https://github.com/jackjieYYY
https://www.hostloc.com/space-uid-38920.html

#特点
支持移动端自适应
支持当页搜索
支持按文件名, 日期, 大小排序
支持在线播放视频

#下载地址
https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/%40Theme/jackjieYYY/index.html

相关命令

启动:systemctl start onelist
停止:systemctl stop onelist
重启:systemctl restart onelist
查看状态:systemctl status onelist

卸载

#未设置开机自启
rm -rf /opt/OneList

#设置过开机自启
systemctl stop onelist
systemctl disable onelist
rm -rf /opt/OneList /etc/systemd/system/onelist.service

最后如果我们只想显示网盘的某些文件夹,那么可以分别挂载该网盘的不同目录即可,具体操作看配置文件说明。

如果有发现该程序存在BUG,可以提下,方便修复,有会前端的热心大佬,也可以自荐下,帮忙美化下该前端。

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

发表评论

161 条评论

  1. cybersp
    该评论仅登录用户及评论双方可见
    1. Rat's
      @cybersp

      反向代理就行,博客很多教程,你随便搜个看看

  2. 大神求助

    大佬,onelist没挂vpn的话访问速度很慢. 感觉你的网盘速度很快能否透露下是用什么服务吗?

    1. Rat's
      @大神求助

      我博客左侧的?还是哪

      1. 大神求助
        @Rat's

        博客左侧

        1. Rat's
          @大神求助

          spartanhost服务器

          1. 大神求助
            @Rat's

            大佬 图床也是放到服务器上面吗? 还是用了cdn

            1. Rat's
              @大神求助

              我没用图床,清一色放服务器里,搬家一条龙

              1. 大神求助
                @Rat's

                大神,Spartan Host好像不怎么稳了?
                西雅图给出的节点网速实测,160KB/s.
                是否只能单纯用来搞博客,搭建V2ray之类的有没有可能性

                1. Rat's
                  @大神求助

                  自从决定开通支付宝的时候,我就觉得迟早不稳了

  3. noame

    Rat’s大,我想问一下我改了一下前端,但是发现Onelist绑定的端口只调用index.html这个文件,css、js、image等等文件完全不调用,有什么办法吗?想把网页改得好看点

    1. noame
      @noame

      我目前把原本外部的js和css文件全部写到html里面处理了,背景图可以调用外链,但是本地图像和字体那些资源还是用不了...还是希望onelist能调用整个网页的资源

      1. Rat's
        @noame

        我不是很会这些,你多折腾下

  4. 味道

    博主,我的onedrive有几百g,得缓存到什么时候啊?重启就没了又得继续缓存,我的服务器才512m,会不会炸掉,还有就是我上传了新的文件,它会不会自动更新缓存呢?

    1. Rat's
      @味道

      应该不会,加点虚拟内存就行了

  5. loneyclown

    请问大佬,执行/opt/OneList/OneList -bind 0.0.0.0 -port 8000后,控制台显示:

    Config Num: 1 Cache: [/onedrive01]/ Cache: Done!

    但是访问ip:8000/onedrive01 还是Not found,控制台同时打印:

    [2020/02/10 16:27:20.917] [**.**.***.113] URL[404]:/onedrive01 Time:87.058µs
    1. loneyclown
      @loneyclown

      现在的另一个问题是,目录的加密无效。。。

      "AuthPath": "/onedrive01?admin:123|/onedrive01/文档?root:6666",
  6. venpong

    大佬你好,我按照您的教程启动之后,报了如下的错,应该是我目录文件的问题,我分了两个目录,一个是共享目录,文件敝比较简单,一个是私人目录,文件比较多,在缓存私人目录的时候程序启动报错且异常退出,麻烦你有空看看。
    ...
    Cache: [/]/private/GTA5
    Cache: [/]/private/GTA5/1.4.1版本
    Cache: [/]/private/GTA5/100%存档
    Cache: Done!
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x767516]

    goroutine 24 [running]:
    main.QueryItem(0xc0001f0580, 0xa4, 0xc00048a000, 0x6ab, 0x0, 0x0, 0x0, 0x0, 0x0)

    C:/main.go:393 +0xe6

    main.GetList(0xc00010e000, 0xc0003f2540, 0x18)

    C:/main.go:375 +0x51e

    main.GetList(0xc00010e000, 0xc000014850, 0xd)

    C:/main.go:382 +0x7b7

    main.GetList(0xc00010e000, 0xc0000142d8, 0x8)

    C:/main.go:382 +0x7b7

    main.CacheRefreshMain(0xc00010e000)

    C:/main.go:258 +0x8d

    created by main.CacheRefresh

    C:/main.go:353 +0x344
  7. MQ

    这个有没有docker版呢

    1. Rat's
      @MQ

      好像没有

  8. 高玩梁

    感觉好慢,能不能走服务器流量,正好有个无限流量的vps

    1. Rat's
      @高玩梁

      试试rclone挂载?

  9. GFeather

    大佬你好,首先非常感谢你的教程。
    我这边按照你的教程也进行了搭建。用的宝塔。
    想要转载一下这篇文章,把自己在搭建中遇到的问题记录一下。
    希望授权

    1. Rat's
      @GFeather

      这有什么问题,随便转

  10. whatyang

    好吧,反代也解决了,不好意思,打扰了