V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangbenjun5
V2EX  ›  程序员

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

  •  3
     
  •   wangbenjun5 · 2020-09-22 22:04:11 +08:00 · 5141 次点击
    这是一个创建于 1527 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    这个网盘类似百度云网盘,但是不能对外分享,可以算是私有网盘,但是其 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

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


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

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

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

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

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

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

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

    https://github.com/wangbjun/go-micloud/releases/tag/1.3
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1205 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:23 · PVG 07:23 · LAX 15:23 · JFK 18:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.