前情提要: https://www.v2ex.com/t/453864 感谢大家指点,尤其是 @geelaw 指出可以使用 Extended Attributes 这样的黑科技,大大减少了算法的复杂度
锤这个奇迹的目的主要还是跟原来说的一样,解决自己 Linux 上面访问 OneDrive 不方便的问题。程序是用人生苦短写的,所以安装也很简单 pip install --user onedrive-sync-client
,安装完之后执行 onedrive --set-location ~/OneDrive
配置同步目录之后每次运行 onedrive
即可同步,同步是手动的,没有后台进程,算法的状态依前文所述是通过 xattr
存储的,外加一个默认在 $XDG_DATA_HOME/onedrive.sqlite
的数据库存储比如登录状态等等的其它必要信息
城市建在了 https://github.com/gzxu/onedrive-sync-client 这个地块,欢迎大家来和本城的所有者进行交谈~偷懒了没有写中文说明文件麻烦大家凑合着看吧
数据无价,虽然欢迎大家测试吐槽,但还是要建议大家不要用重要的网盘数据来测试
最后,祝自己生日快乐吧
1
safeoy 2018-06-02 22:04:09 +08:00
酷,已 star
|
2
coreos 2018-06-02 22:09:56 +08:00
生日快乐
|
3
elvisyao 2018-06-02 22:11:00 +08:00
生日快乐
|
4
UnknownR 2018-06-02 22:14:06 +08:00
cool, 生日快乐,最近刚遇到 onedrive 的问题,organization 的账户无法登陆 mac 版 onedrive,网页版每次都要登陆而且同步时也很麻烦
|
5
0915240 2018-06-02 23:30:48 +08:00 via iPhone
生日快乐
|
6
yaerda 2018-06-03 01:18:32 +08:00 via Android
快乐快乐哦
|
7
msg7086 2018-06-03 02:13:40 +08:00 4
生快。
我随便扫了一眼你的源码,sdk 里上传文件只写了简易上传,而不支持大文件(>10M )的上传。 大文件上传需要用 UploadSession。 https://github.com/msg7086/rb1drv/blob/master/lib/rb1drv/onedrive_dir.rb#L104 https://github.com/cnbeining/onedrivecmd/blob/master/onedrivecmd/utils/uploader.py#L69 https://github.com/OneDrive/onedrive-api-docs/blob/live/docs/rest-api/api/driveitem_createuploadsession.md 还有,商业版教育版的 OneDrive 用的是 QuickXorHash 而不是 SHA1,我看你代码里没有相应的处理逻辑。 https://rclone.org/onedrive/#modified-time-and-hashes https://docs.microsoft.com/en-us/onedrive/developer/code-snippets/quickxorhash |
8
DearTanker 2018-06-03 02:23:58 +08:00
生日快乐
|
10
huyinjie 2018-06-03 06:41:48 +08:00 via iPhone
生日快乐
|
11
zclHIT 2018-06-03 11:36:49 +08:00 via iPhone
生日快乐
|
12
masir 2018-06-03 17:39:52 +08:00
生日快乐~你昨天 我今天~哈哈~
|
13
gzxu OP @UnknownR #4 啊哈,只可惜我现在既没有加 macOS 的支持也没有加 organization 的支持(里面登录那块代码我记得我设置的是用组织账户登录会失败),虽然说里面依赖 Linux 的地方只有 local.py 前头几行默认的配置文件路径和 xattr 扩展属性两个
@msg7086 #7 谢谢提醒,这块我偷懒没写,在 README 最后的 Future Works 里面写了说之后加上专门负责上传下载的模块,sdk.py 里面那块留了一个函数虽然现在里面只有几行代码完成最基础的功能。目前我的逻辑是用 SHA1 检测文件是否有修改,要是改成用修改时间判断的话估计可以加上 QuickXor 的支持,因为这玩意不知道碰撞风险多大,代码里面也是留了之后加这块功能的地方的 2333 毕竟这些都不是锤太空船的核心零部件 最后,谢谢大家啦~ |
14
msg7086 2018-06-04 02:08:05 +08:00
@gzxu OAuth API 2.0 配上 Graph API 是可以登录 Business 版的。
旧版 OAuth 1.0 配旧版 API 才需要分开登录。 |
15
gzxu OP @msg7086 #14 https://github.com/gzxu/onedrive-sync-client/blob/0.1.2/onedrive/sdk.py#L87 这里我故意写的是 `/consumers/` 而不是 `/common/` 为的就是组织用户登录会失败 😂😂😂
|