钉钉python接口对接,同步通讯录组织架构

python通过钉钉接口获取钉钉企业的信息。

1. 安装钉钉sdk

pip install dingtalk-sdk

例子:https://github.com/007gzs/dingtalk-django-example
文档:https://dingtalk-sdk.readthedocs.io/zh_CN/latest/client/index.html

可以通过 pip install dingtalk-sdk进行下载安装,然后就可以使用了。
在install dingtalk-sdk之前需要pip install cryptography>=0.8.2或者pip install pycrypto>=2.6.1

2. 代码

import json
import pymysql
from dingtalk import SecretClient, AppKeyClient

##定义变量
E_AppKey = "后台AppKey"
E_AppSecret ="后台AppSecret"

##连接
client = SecretClient(E_AppKey, E_AppSecret)  #新 access_token 获取方式
print(client)





 

def getdepartments(departmentid):
    '''
    :param departmentid: 部门id,默认是1,即是获取所有的部门
    :return:departmentid下所有部门的id,namehe parentid
    '''
    result = {}
    departmentid =[]
    responses = client.department.list(departmentid, fetch_child=True)

    for response in responses:
        result['id']= response.get('id')
        result['name']= response.get('name')
        result['parentid']= response.get('parentid')
        
        if result['parentid'] == None:
            result['parentid'] = 0
        print(result)
        #插入到数据库
        sql = "replace into dept (dept_id,name,parent_id)values(%s,%s,%s)"
        parent =(result['id'],result['name'],result['parentid'])
        
        try:
            cursor.execute(sql, parent) #提交
        except Exception as e:
            cursor.rollback()  #错误回滚
	
        departmentid.append(response.get('id'))
    print(departmentid)
    return departmentid


def getDepartmemtInfo(departmentid):
    '''
    :param departmentid:部门id
    :return: 部门信息
    '''
    responses = client.department.get(departmentid)
    #print(responses)
    return responses


def getuser(departmentid):
    '''
    :param departmentid: 获取部门下的用户(不包括子部门)
    :return: 用户信息
    '''
    res = {}
    userid =[]
    responses = client.user.list(departmentid)
    #print(responses)
    a = responses.get('userlist')
    
   
    for response in a:
        #print(response.get('department'))
        res['department']= response.get('department')
        res['userid']=response.get('userid')
        res['name']=response.get('name')
        res['mobile']=response.get('mobile')
        res['active']=response.get('active')
        res['unionid']=response.get('unionid')
        print(res)

        #插入到数据库
        
        #sql = "replace into user (department,userid,name,mobile,active,unionid)values(%s,%s,%s,%s,%s,%s)"
        table_name = 'user'
        sql_select_Query = """
        INSERT `{0}`  (department, userid, name, mobile, active, unionid)
        VALUES (%s,%s,%s,%s,%s,%s)
        ON DUPLICATE KEY UPDATE
          department=VALUES(department), name=VALUES(name), mobile=VALUES(mobile), active=VALUES(active), unionid=VALUES(unionid)
        """.format(table_name)

        parent =(
            res['department'],
            res['userid'],
            res['name'],
            res['mobile'],
            res['active'],
            res['unionid'],
            )
        try:
            cursor.execute(sql_select_Query, parent) #提交
        except Exception as e:
            cursor.rollback()  #错误回滚

        userid.append(response.get('userid')) #用户id列表

        
    #print(userid)
    return userid



def getEmployeeUserInfo(userid):
    '''
    :param userid:用户钉钉的userid 
    :return: 用户的花名册(详细信息)
    '''
    res = client.employeerm.get(userid)
    print(res)
    return res


if __name__ == '__main__':
        departmentid = getdepartments(1)
        useridlist =[]

        #用户表数据循环
        for x in departmentid:
                userid = getuser(x)
                useridlist.extend(userid)
        print("==================")
        print(useridlist)
        conn.commit()
        cur.close()
        conn.close()
        #for x in useridlist:
                #userid = getEmployeeUserInfo(x)
                #print(userid)

3.DLL建表指令

CREATE TABLE `user` (
`order` varchar(255) DEFAULT NULL COMMENT '部门订单',
`leader` varchar(255) DEFAULT NULL COMMENT '是否部门负责人',
`active` varchar(255) DEFAULT NULL COMMENT '钉钉状态',
`boss` varchar(255) DEFAULT NULL,
`unionid` varchar(255) DEFAULT NULL,
`exclusive_account` varchar(255) DEFAULT NULL,
`mobile` bigint(255) NOT NULL COMMENT '手机号',
`pwd` varchar(255) NOT NULL DEFAULT '123456' COMMENT '密码',
`admin` varchar(255) DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`telephone` varchar(255) DEFAULT NULL COMMENT '电话',
`avatar` varchar(255) DEFAULT NULL COMMENT '花名',
`hide_mobile` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`userid` varchar(255) NOT NULL DEFAULT '123456' COMMENT '用户id',
`work_place` varchar(255) DEFAULT NULL COMMENT '工作地点',
`department` varchar(255) DEFAULT NULL COMMENT '部门id列表',
`state_code` varchar(255) DEFAULT '+86' COMMENT '+86',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态,1 表示正常,0 表示禁用',
`roles` varchar(255) DEFAULT NULL COMMENT '用户角色 ID 集合,多个角色逗号分隔。',
`created` datetime DEFAULT NULL COMMENT '创建时间',
`updated` datetime DEFAULT NULL COMMENT '更新时间',
`last_login_time` datetime DEFAULT NULL COMMENT '上次登录时间',
PRIMARY KEY (`mobile`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `dept` (
`parent_id` int(20) NOT NULL DEFAULT '0' COMMENT '上级id',
`name` varchar(60) DEFAULT NULL COMMENT '部门名称',
`dept_id` int(20) NOT NULL COMMENT '部门id',
`create_dept_group` varchar(20) DEFAULT NULL COMMENT '创建部门组\n\n',
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `shop` (
`shopid` varchar(255) NOT NULL COMMENT '店铺id',
`name` varchar(255) DEFAULT NULL COMMENT '店铺名称',
`account` varchar(255) DEFAULT NULL COMMENT '主账号',
`mobile` varchar(255) DEFAULT NULL COMMENT '绑定手机号',
`zfb` varchar(255) DEFAULT NULL COMMENT '支付宝名称',
`bjx` varchar(255) DEFAULT NULL COMMENT '边界线',
`department` varchar(255) DEFAULT NULL COMMENT '部门id',
`pt` varchar(255) DEFAULT NULL COMMENT '平台',
`deptname` varchar(255) DEFAULT NULL COMMENT '部门名称',
PRIMARY KEY (`shopid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中实现开机自动登录钉钉可以通过以下步骤: 1. 首先,你需要安装Python的相关依赖库,如selenium和webdriver。你可以使用pip命令来安装它们: ``` pip install selenium pip install webdriver_manager ``` 2. 接下来,你需要下载对应浏览器的WebDriver。WebDriver是一个用于控制浏览器的工具,可以模拟用户在浏览器中的操作。你可以使用webdriver_manager库来自动下载和管理WebDriver,无需手动下载。例如,如果你使用的是Chrome浏览器,可以使用以下代码来下载ChromeDriver: ```python from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) ``` 3. 然后,你需要编写代码来实现自动登录钉钉。首先,导入selenium库和webdriver,并创建一个WebDriver对象: ```python from selenium import webdriver driver = webdriver.Chrome() ``` 4. 打开钉钉登录页面: ```python driver.get("https://www.dingtalk.com/") ``` 5. 定位到登录按钮,并点击进入登录页面: ```python login_button = driver.find_element_by_class_name("login-btn") login_button.click() ``` 6. 输入用户名和密码,并点击登录按钮: ```python username_input = driver.find_element_by_id("username") password_input = driver.find_element_by_id("password") username_input.send_keys("your_username") password_input.send_keys("your_password") login_button = driver.find_element_by_class_name("login-button") login_button.click() ``` 7. 最后,你可以将以上代码保存为一个Python脚本,并将该脚本添加到系统的开机启动项中,以实现开机自动登录钉钉

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值