y-young / nazurin

🎉 Images collection done right. Telegram 图片收藏机器人 / A Telegram bot that helps you collect ACG illustrations.
http://nazurin.readthedocs.io
MIT License
263 stars 59 forks source link

Add OneDrive Storage Support #8

Closed weremexii closed 3 years ago

weremexii commented 3 years ago

Use msal and microsoftgraph-python to access OneDrive resources.

Because of the function realization limit of microsoftgraph-python, the code directly make requests by methods like _post provided by microsoftgraph-python. For further development the bot can directly use parts of its source code.

And if this PR can be accepted , I'm delighted to write a wiki for onedrive configuration.


Something unrelated to the PR:

这是我第一次交PR,有什么问题还请包涵

在给自己搭个bot的时候找到这个项目,觉得很厉害,因为自己有微软的E5订阅,于是想给项目写一下OneDrive的存储

自己是Python新手,代码风格是“沿袭”大大的

祝新年快乐

weremexii commented 3 years ago

I need to correct something...

y-young commented 3 years ago

你好~ 前几天偶然看到你在写这个Feature,原本我也正计划着适配OneDrive,但是还没开工,所以提前感谢你的贡献 代码看起来还是不错的,如果有细节问题我们可以在PR中修正 如果PR测试没通过的话可以继续向你的分支commit来进行修改,不必着急 此外我近期正在进行v2版本的编写,之后API方面可能有些小改动,但你可以先写,后面由我来修改

weremexii commented 3 years ago

感谢理解

我想先搬一下microsoftgraph-python的部分实现,毕竟就api而言它实现的功能和bot的需要是不对应的

另外保存在Firebase的token也许多不必要的信息,我想试着清理一下

PS: Open PR后的代码检查还会检查空行的吗...

y-young commented 3 years ago

感谢理解

我想先搬一下microsoftgraph-python的部分实现,毕竟就api而言它实现的功能和bot的需要是不对应的

另外保存在Firebase的token也许多不必要的信息,我想试着清理一下

PS: Open PR后的代码检查还会检查空行的吗...

这个代码风格检查是为了保证代码风格的统一性,因为可能存在误判的情况,所以有些细节即使没有通过检查也没有关系,我看看没有问题就行 当然比较常规的地方还是注意一下比较好,比如逗号后加个空格:

environ.get('OD_RF_TOKEN', None)
{"name": "Pictures", "folder": {}}
weremexii commented 3 years ago

别骂了别骂了.jpg

我去全部检查一遍

话说PR reopen后就可以跟踪新的commit了吧

y-young commented 3 years ago

别骂了别骂了.jpg

我去全部检查一遍

话说PR reopen后就可以跟踪新的commit了吧

应该是的,你可以试试(

y-young commented 3 years ago

好了,明天我会具体看一下代码然后测试一下功能

weremexii commented 3 years ago

刚才发现了一个很大的bug

文件是实现上传了,不过文件下载下来是无法打开的

可能是PUT的header里没有附带Content-Type

y-young commented 3 years ago

刚才发现了一个很大的bug

文件是实现上传了,不过文件下载下来是无法打开的

可能是PUT的header里没有附带Content-Type

可以把代码相关的API文档链接写在这边以供参考 印象中refresh_token确实需要手动获取,这个暂时不要紧 redirect_url麻烦你再确定一下,如果可以的话还是去掉这个环境变量比较好

weremexii commented 3 years ago

我回去测试一下

现在是打算保留msal吧

microsoftgraph我觉得还是去掉比较好

y-young commented 3 years ago

我回去测试一下

现在是打算保留msal吧

microsoftgraph我觉得还是去掉比较好

看看,如果msal用得不多而且实现简单的话也可以自己写,毕竟后面需要改成异步请求

weremexii commented 3 years ago

Update

参考了microsoftgraph的代码实现了refresh_token的更新,redirect_url是可以去掉的

修好了文件上传的bug

添加了api的文档链接

y-young commented 3 years ago

感谢你的贡献! 现在可以麻烦你在Wiki里补充一下使用指南吗?

weremexii commented 3 years ago

非常乐意!

我大概会在wiki里使用一个微软的sample来让用户获取refresh_token

weremexii commented 3 years ago

大致是这样的

https://raw.githubusercontent.com/weremexii/nazurin/master/wiki/OneDrive.md

y-young commented 3 years ago

大致是这样的

https://raw.githubusercontent.com/weremexii/nazurin/master/wiki/OneDrive.md

你可以试试能否直接在Wiki里编辑?Collaborator应该有权限

weremexii commented 3 years ago

大致是这样的 https://raw.githubusercontent.com/weremexii/nazurin/master/wiki/OneDrive.md

你可以试试能否直接在Wiki里编辑?Collaborator应该有权限

没有找到可以按的按钮🥲

y-young commented 3 years ago

大致是这样的 https://raw.githubusercontent.com/weremexii/nazurin/master/wiki/OneDrive.md

你可以试试能否直接在Wiki里编辑?Collaborator应该有权限

没有找到可以按的按钮🥲

原来是我理解错了,contributor不等于collaborator( 没事,我来添加吧 (后面要是有需求的话就考虑换readthedocs.io)

weremexii commented 3 years ago

大致是这样的 https://raw.githubusercontent.com/weremexii/nazurin/master/wiki/OneDrive.md

你可以试试能否直接在Wiki里编辑?Collaborator应该有权限

没有找到可以按的按钮🥲

原来是我理解错了,contributor不等于collaborator( 没事,我来添加吧 (后面要是有需求的话就考虑换readthedocs.io)

幸苦了😁