# py_dingtalk
**Repository Path**: cyrxdzj/py_dingtalk
## Basic Information
- **Project Name**: py_dingtalk
- **Description**: 调用Firefox浏览器启动钉钉,基于钉钉网页版
- **Primary Language**: Python
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-04-07
- **Last Updated**: 2022-01-06
## Categories & Tags
**Categories**: networklib
**Tags**: None
## README
禁止用作盈利目的。
如有问题,请提issue。
# 1,简介。
pyface将调用firefox浏览器,登录钉钉网页版,实现编程操纵钉钉钉钉。
# 2,运行环境
system:windows(Linux和Mac也可以,但必须修改源代码中的设置,因为源代码中的设置默认指向的geckodriver插件是windows版本。)
geckodriver下载地址:[https://npm.taobao.org/mirrors/geckodriver/v0.26.0/](https://npm.taobao.org/mirrors/geckodriver/v0.26.0/)
本程序需要安装firefox。
# 3,设置方法。
代码的前面:set_browser字典是浏览器的设置(永久保存)。
|属性名|属性值|
| --- | --- |
|geckodriver_path|指向geckodriver可执行文件路径。默认:w_geckodriver.exe。|
|is_headless|是否静默运行。True or False。|
|time_limit|刷新二维码的超时限制。单位是秒。数字。|
也可以这么设置(不会永久保存):
set_browser_dict["geckodriver_path/is_headless/time_limit"]==xx
也可以这样(这是函数原型,如何调用,自己领悟。也不会永久保存。):
~~~python
set_browser(geckodriver_path=None,is_headless=None,time_limit=None)
~~~
附geckodriver在三个平台上的可执行文件路径:
|平台|路径|
| --- | --- |
|Windows|./w/geckodriver.exe|
|Mac|./m/geckodriver|
|Linux|./l/geckodriver|
顺便说句,如果运行时报错,可尝试把相对路径改为绝对路径。绝对路径位置,请见:[6,附录](https://gitee.com/cyrxdzj/py_dingtalk/blob/master/README.md#6%E9%99%84%E5%BD%95)。如果还是报错,请把geckodriver所处的文件夹加入PATH变量中。
# 4,定义

# 5,使用
类名:Dingtalk。
首先,请初始化一个对象(无参调用初始化函数)。
- 调用get_qr()函数获取二维码的PIL对象(调用PIL对象.show()函数显示图片)。注意,此调用会使之前的二维码失效。
- 调用get_friends()函数获取所有联系人。
- 调用get_latest_msg(name)获取联系人name最后的消息。请参见:4,定义。注意,如果你刚刚发了消息,那返回的结果就是你发出去的消息。
- 调用get_latest_time(name)获取联系人name最后的消息的发送时间。
- 调用send_msg(name,msg)可向联系人name发送消息msg。
- 调用send_file(name,file_path)向联系人name发送路径是file_path的文件。
# 6,附录
#### 6,1 关于geckodriver。
geckodriver就在__init__.py的目录下的某个文件夹,视系统而定。
可以用以下方法快速获得__init__.py的位置:
~~~python
import py_dingtalk
print(py_dingtalk.__file__)
~~~
#### 6,2 关于异常。
异常名:PDError。
可用以下方法捕获异常:
~~~python
execpt PDError:
print("error")
#or
execpt (PDError),e:
print("error",e)
~~~