• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wangbenjun5
V2EX  ›  程序员

无聊写了一个小米网盘服务的命令行终端

  •  3
     
  •   wangbenjun5 · Sep 22, 2020 · 6784 views
    This topic created in 2235 days ago, the information mentioned may be changed or developed.

    众所周知,小米手机自带一个云服务,云服务里面有一个网盘功能,其实这个网盘最早是快盘,后来被小米收购了应该。

    这个网盘类似百度云网盘,但是不能对外分享,可以算是私有网盘,但是其 PC 客户端比较垃圾,是采用祖传 chrome 套壳,node 写的,效率可想而知,于是乎我就抓了小米云服务网页版( https://i.mi.com/drive#/all )的接口写个命令行终端。

    采用 100% Golang 编写,目前实现了,上传、下载、创建目录等功能,上传和下载支持异步批量模式,效率还是非常高滴!

    Go@MiCloud:$ 
    NAME:
       main - MiCloud Third Party Console Client Written By Golang
    
    USAGE:
       main command [command options] [arguments...]
    
    COMMANDS:
       login     登录小米云服务账号
       ls        列表当前目录所有文件和文件夹
       download  下载文件或者文件夹
       cd        改变当前目录,例如:cd movies
       upload    上传文件或者文件夹
       share     获取一个公共分享链接
       rm        删除文件或者文件夹,即放入回收站
       mkdir     创建目录
       tree      打印树型目录结构
       jobs      展示后台当前所有下载和上传任务
       help, h   Shows a list of commands or help for one command
    
    OPTIONS:
       --help, -h     show help (default: false)
       --version, -v  print the version (default: false)
       
    
    

    其中有一个独家功能(命令 share ),可以把网盘里面的文件生成一个公开的分享链接,提供给非小米登录用户下载,变相实现共享功能,小米这个网盘比百度云快多了,下载基本上能达到慢速。

    感兴趣的可以试试!

    https://github.com/wangbjun/go-micloud/blob/master/README.md

    试用可点击下载编译好的执行文件: https://github.com/wangbjun/go-micloud/releases/tag/1.2

    Supplement 1  ·  Sep 23, 2020
    刚小米的童鞋找到要了个小米 ID,给我送了 2 年钻石会员……感谢!
    本人算是骨灰米粉了,去年就弄了第一个版本,后来过了很久没搞,最近想起来又接着搞了,一方面是自己有这个需求,小米没什么好用的客户端,另一方面也是为了练练 golang 开发。
    如果非要说小米这个网盘优点,只有一个: 速度比较快,我家 200M 的电信网速可以拉满……


    号外,小米的童鞋告诉我他们已经有 Windows 工程师了,估计未来不久原生客户端就会推出了。
    Supplement 2  ·  Sep 26, 2020
    最新的版本新增了相册下载功能,可以下载小米手机云服务所有相册,便于本地备份:

    https://github.com/wangbjun/go-micloud/releases/tag/1.3
    47 replies  •  2020-09-26 18:26:32 +08:00
    madpecker009
    madpecker009
    Sep 22, 2020
    1
    大佬牛逼
    wangbenjun5
    wangbenjun5
    OP
    Sep 22, 2020
    2
    关于这个登录功能,说明一下,我是完全抓的网页端的登录接口,这块比较复杂,目前实现了登录一次,永久有效。

    用户名和密码被保存在默认~/.micloud.json 文件里面,密码是加密过的,保证用户信息安全!
    Lemon305
    Lemon305
    Sep 22, 2020
    3
    Mac 测试可用,大佬牛逼
    lxk11153
    lxk11153
    Sep 22, 2020
    4
    有 baidupcs-go 那味了
    EricXuu
    EricXuu
    Sep 22, 2020
    5
    大佬,请教一下这种接口抓取有什么技巧么?不会是 network 面板一个个试出来的吧
    dai640
    dai640
    Sep 23, 2020❤️1
    6
    小米前段时间好像还有 70 年产权的网盘售卖,如果当时小米的营销早看到 LZ 的这个项目估计会大卖了。
    solider245
    solider245
    Sep 23, 2020
    7
    大佬牛逼!有空把华为网盘也弄弄,这个估计人群更大!
    a5b6c7d8
    a5b6c7d8
    Sep 23, 2020 via Android
    8
    真不错 原来还可以这么玩啊
    Rxianbei
    Rxianbei
    Sep 23, 2020 via Android❤️6
    9
    @solider245 别把人往火坑里推啊兄弟,弄华为是要付出代价的啊
    kokutou
    kokutou
    Sep 23, 2020 via Android
    10
    @solider245
    华为估计看到就直接律师函警告。。。
    liukangxu
    liukangxu
    Sep 23, 2020
    11
    @kokutou 律师函?那是南山必胜客的玩法,牢厂自然是 251 走起
    zhiiker
    zhiiker
    Sep 23, 2020 via Android
    12
    不错的项目,感谢楼主
    SvenKim
    SvenKim
    Sep 23, 2020
    13
    挺有意思的项目,感谢楼主
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    14
    @techxiu224 感谢支持
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    15
    @lxk11153 灵感来自这个项目,哈哈
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android❤️1
    16
    @EricXuu 没啥技巧,就是分析小米的接口,小米的登录还算简单,就是跳转有点多,不需要图形验证码,有一个手机号验证码
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    17
    @solider245 我是米粉,哈哈
    edk24
    edk24
    Sep 23, 2020
    18
    大佬再封装个 mv, 哈哈 改名字移动文件应该都比较常用的
    godcc
    godcc
    Sep 23, 2020
    19
    大佬牛逼
    xishijt
    xishijt
    Sep 23, 2020
    20
    5g 的盘有啥好折腾的
    mengzhexin
    mengzhexin
    Sep 23, 2020 via Android
    21
    @xishijt 开会员啊,比百度便宜
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    22
    @xishijt 作为米粉肯定是要买会员的,白金好像是 200GB,其实并不贵。小米这个云盘和小米云服务一体的,比如同步手机照片,联系人等等。如果文件不多,放在上面还是挺靠谱的,安全可靠。
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    23
    @edk24 好的,后续加上
    mahone3297
    mahone3297
    Sep 23, 2020
    24
    我想要数据自动同步的功能。比如,本地 a 添加,自动同步到云。自动同步到本地 b
    现在在用微云
    百度网盘,可能为了数据安全,在云端删除,本地不会删。本地删除,云端好像也不会删。只有添加,会自动同步。

    要实现上面的需求,lz 估计要写点代码,实现该需求

    大家有这样的需求吗?是如何解决的?
    renmu123
    renmu123
    Sep 23, 2020 via Android
    25
    @mahone3297 这是 onedrive 杀手级功能
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    26
    @mahone3297 你说的就是同步盘功能,类似坚果云和百度云这样的专业网盘。这块功能其实有考虑,之前小米有一个 PC 端,但是做的比较差劲,是用 js 写的,我的最终目标就是实现同步盘功能,下一步计划就做
    solider245
    solider245
    Sep 23, 2020
    27
    @kokutou 这个不涉及到盗用,你做个客户端,相当于是帮他宣传,完全没问题呀。
    @mahone3297 你这个需求最好是自己搭,要方便不少。
    @xishijt 5G 放文件应该挺方便了吧?
    kutear
    kutear
    Sep 23, 2020
    28
    最想要的还是微云的 cli
    lepig
    lepig
    Sep 23, 2020
    29
    感谢分享,一直想写个这种东西。参考参考
    caqiko
    caqiko
    Sep 23, 2020
    30
    大佬如果能整出一个 GUI 客户端就好了…CLI 用起来还是不方便啊

    现在用的小米云服务官方客户端,主要用一个便签同步功能…
    lepig
    lepig
    Sep 23, 2020
    31
    命令行登录成功以后 咋退出啊?
    撸个 exit 或者 quit 命令啊
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    32
    @caqiko gui 太难了,我不会,以前想过用 qt 写,但是对 c++又不熟,放弃了,所以就整了个命令行版本
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    33
    @lepig 目前是 Ctrl + d……
    lepig
    lepig
    Sep 23, 2020
    34
    @wangbenjun5 好的 谢谢
    caqiko
    caqiko
    Sep 23, 2020
    35
    share 命令返回一个链接,复制到浏览器好像下载不了

    #获取分享成功,有效期 24 小时,复制链接( http://t.wibliss.com?t=64fnl )到浏览器里面打开下载,请注意浏览器弹框!
    caqiko
    caqiko
    Sep 23, 2020
    36
    @caqiko 可以下载了…
    xylophone21
    xylophone21
    Sep 23, 2020
    37
    @renmu123 现在已经不流行 dropbox 了吗?
    yumenawei
    yumenawei
    Sep 23, 2020
    38
    @caqiko #35 我打开连接可以下载啊,是个 .ps1 的文件
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    39
    @caqiko 这个下载是弹框,很多浏览器会阻止,需要允许
    Qyroth
    Qyroth
    Sep 23, 2020
    40
    能下载云相册里面的照片吗
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    41
    @jasonqiao36 暂时没有这个功能,后期准备加个
    Qyroth
    Qyroth
    Sep 23, 2020
    42
    @wangbenjun5 #41 给你点个 star, 持续关注
    breezeFP
    breezeFP
    Sep 23, 2020
    43
    工作不饱和啊
    baobao1270
    baobao1270
    Sep 23, 2020
    44
    楼主可以编译出一个 DLL,把 API 暴漏出来吗
    这样我可以做个 Windows 下的图形客户端出来
    wangbenjun5
    wangbenjun5
    OP
    Sep 23, 2020 via Android
    45
    @baobao1270 不会编译,不过你要做 Windows 客户端也不难,小米的接口很简单,主要是登录,登录完成之后有一个 token,带着 token 就行了
    yingqi7
    yingqi7
    Sep 23, 2020 via iPhone
    46
    @liukangxu 自己人才 251,外人直接律师函一条龙服务
    wangbenjun5
    wangbenjun5
    OP
    Sep 26, 2020
    47
    最新的版本新增了相册下载功能,可以下载小米手机云服务所有相册,便于本地备份:

    https://github.com/wangbjun/go-micloud/releases/tag/1.3
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3007 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    ♥ Do have faith in what you're doing.