扇贝还是很不错的背单词系统,但是我一直不理解为什么官方提供的批量添加单词页面每次限制10个= =。 美剧党随手挤了很多单词准备导入的时候,还有从有道单词本导入的时候,都很尴尬。。查了一下,还没有人写过这方面的东西,所以尝试着用python写了个。

下载地址:http://pan.baidu.com/s/1bn93yft

github:https://github.com/yuchenlin/shanbayAddWords

扇贝API文档:http://www.shanbay.com/developer/wiki/intro/

基本思路:

1.请求用户授权

2.循环查词 获取词的ID

3.循环添加到词库 (需要词的ID)

功能很简单,思路也很清晰,但是第一次接触有关API的东西还是有点无从下手,于是看到了廖雪峰写过的一个新浪微博API的小demo,理解了具体的原理。

A.关于获取用户授权

A.1 设置参数

demo创建了一个类叫做APIclient来集成了各种属性,和各种get post方法的源头,方便使用。

其中几个重要的参数都可以简单的搞定,比如app_key secret redirect_url  然后给用户生成一个固定的引导授权地址。

A.2  获取code

当用户授权后,系统会自动根据回调地址回调code参数,如果设置成扇贝默认的回调地址,code部分直接显示在url中,让用户copy回来给我就好了。。虽然不够友好,但是也只能这样了,毕竟要想自动的接收,最开始就要用python调用浏览器来打开这个授权网页,这个感觉好像很麻烦。。

A.3 根据code生成token。

这个也直接写在类里了,不过很简单,按照文档就一步,之后的所有操作都是根据token来和服务器进行身份识别的,所以很重要,而且每一步都要确认token是否过期。

B.get查词

这个就很简单了,不多说,主要的亮点是json的数据格式很好,import json之后,系统自动处理为dict类型,特别方便调用。

C.post填词

更简单,但是要判断是否添加成功,毕竟不是每个词都在词库里记录了。

D.界面

tkinter 还是比较方便吧 但是在win和mac下尺寸不好调成一致,还有mac下输入框中文不能输入很闹心。如果哪一天出现了和vs搞winform那么简单无脑的IDE 我大概就离不开python了~

E.

也同时了解到了一个比较惊艳的python高级技巧,郁闷的是我不知道这个东西学名叫什么,从功能上来说,它实现了动态解析函数名的作用。

比如:

bdc_body = client.get.bdc__search(word=w)

这里的client.get 是这样的

def __getattr__(self, attr):
    def wrap(**kw):
        if self.client.is_expires():
            raise APIError('21327', 'expired_token', attr)url = '%s%s/' % (self.client.api_url, attr.replace('__', '/'))#print(url)
        return _http_call(url, self.method, self.client.access_token, **kw)return wrap

它以「__」作为分节符把函数名中的bdc和search作为字符串处理添加到了url中,把参数word=w当做attr字典传入,进行调用http_call去进行连接。 这里完全把函数当做一个变量来处理,可以返回,这样的操作使语言十分简洁,漂亮~~

转载于:https://www.cnblogs.com/yuchenlin/p/4379257.html

【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)相关推荐

  1. 扇贝python_【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)

    扇贝还是很不错的背单词系统,但是我一直不理解为什么官方提供的批量添加单词页面每次限制10个= =. 美剧党随手挤了很多单词准备导入的时候,还有从有道单词本导入的时候,都很尴尬..查了一下,还没有人写过 ...

  2. python电脑怎么打开任务管理器_利用Python调用Windows API,实现任务管理器功能

    任务管理器具体功能有: 1. 列出系统当前所有进程. 2. 列出隶属于该进程的所有线程. 3. 如果进程有窗口,可以显示和隐藏窗口. 4. 强行结束指定进程. 通过Python调用Windows AP ...

  3. 利用Python调用Windows API,实现任务管理器功能

    任务管理器具体功能有: 1. 列出系统当前所有进程. 2. 列出隶属于该进程的所有线程. 3. 如果进程有窗口,可以显示和隐藏窗口. 4. 强行结束指定进程. 通过Python调用Windows AP ...

  4. 利用Python调用云Api实现多地域同步运行TAT命令

    0.准备工作 ​ ​ 使用本代码请先进行子用户创建并授权云API与轻量应用服务器全部权限 请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删 ...

  5. android输入法可以删掉吗,搜狗输入法功能科普二:如何添加或删除词库里的词(安卓篇)...

    原标题:搜狗输入法功能科普二:如何添加或删除词库里的词(安卓篇) 小伙伴们大家好,我们又见面了今天给大家分享下如何来使用输入法的各种词库.目前搜狗输入法是有很多词库的呢,比如系统词库.个人词库.细胞词 ...

  6. CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)

    CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array) 目录 输出结果 设计思路 核 ...

  7. os如何读取图片_CV:基于face库利用cv2调用摄像头根据人脸图片实现找人

    CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array) 目录 输出结果 设计思路 核 ...

  8. 利用Python调用ECMWF欧洲中心API批量下载数据

    前段时间由于需要下载ECMWF(欧洲中期天气预报中心)的再分析数据,学习了如何利用Python调用ECMWF欧洲中心API进行批量下载.这种下载ECMWF数据的方法在官网上有非常详细的介绍.我只是对这 ...

  9. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

最新文章

  1. WEB前端性能优化小结
  2. html title 不显示_第2天:HTML 结构
  3. WinForm 清空界面控件值的小技巧
  4. spring5高级编程_Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
  5. 发布ASP.NET程序至IIS7
  6. FZOJβ #31.字符串
  7. VueSummary_note
  8. 问题记录:既然MAC能唯一标识一台设备,那为什么我们还需要IP呢?
  9. Kettle数据源连接配置
  10. php mysql含引号报错,执行sql双引号
  11. 处理 Win 10 开机后输入法不加载问题
  12. asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息
  13. Mac CAD2018 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
  14. 360度不停旋转动画demo效果示例(整理)
  15. php网站整合ck播放器,帝国cms整合CKplayer播放器代码教程
  16. Metso定位器的参数及调试步骤
  17. 计算机用固态硬盘无法启动不了,windows10系统安装固态硬盘开启AHCI后开不了机怎么办...
  18. 然爸读书笔记(2013-2)----格鲁夫给经理人的第一课
  19. 基于联邦学习中毒攻击的防御策略
  20. 英语48个常见语法点(未完待续)

热门文章

  1. 调用图灵机器人API实现简单聊天
  2. node 常用的一些终端的命令的快捷键
  3. 2017.5.5上午
  4. a+=b 是什么意思?
  5. 软件工程项目冲刺第二天
  6. MIX 2008与ASP.NET MVC框架的Road-Map
  7. js实现复制html页面
  8. Ranger知识地图
  9. mysql8.0.12url_使用最新版本MySQL8.0.12报错记录
  10. Java 面向对象:instanceof和类型转换的理解