Python快速调用Teambition接口
Python快速调用Teambition接口
需求描述:
Teambition是一个简单、高效的项目协作工具,是一款企业协作软件,很多企业用来作为任务跟踪管理和BUG管理工具.
2019年阿里收购了Teambition,不知道未来使用的企业会不会越来越多.
Teambition有导入导出功能,可以导入导出excel,csv文件,在工作中很方便.一般来说,除了一开始使用时会批量导入任务,其他时候很少使用批量导入,任务直接创建就可以了.
企业在定期(如每周)跟踪任务进度时,会经常需要批量导出.但批量导出的格式比较固定,有时候可能不符合我们的要求,如需要按老板指定的格式,或者需要将数据添加到其他平台上等.
Teambition提供了API接口,我们可以注册成为开发者,然后通过接口获取Teambition的数据,按照需求的格式保存和分析.
一、注册Teambition开发者
1.登录Teambition,要有管理员的权限,点击左上角的菜单按钮,然后点击进入企业的"管理后台".
2.然后点击"应用管理"
3.在应用管理页面点击"立即创建"创建应用,弹出创建应用的窗口
4.在应用创建窗口中填写"应用名称",所属企业为当前管理员用户所在的企业,然后点击确定,就会进入teambition开发者中心的"基本信息"界面
5.在"基本信息"界面,已经默认生成了当前应用的Client ID和Client Secret,我们在调用Teambition API时,会使用到这两个值
6.在teambition开发者中心的"OAuth 2配置"页面,填入回调地址,这里的回调地址填企业首页的地址就可以了,然后点保存,下方的"OAuth 2介绍"里介绍了通过Client_id和redirect_url获取一次性code,然后根据code获取access_token的步骤,Teambition所有的API都要通过access_token来调用
7.在teambition开发者中心的"Webhook 配置"页面填写teambition服务器地址,点击保存
完成以上步骤后,就可以根据Client ID,Client Secret,redirect_url获取到access_token,然后调用Teambition的API
二、获取Teambition access_token
这一步是调用Teambition API最重要的步骤,需要花点时间完成.直接上代码,在注释里说明每步的作用
发送请求通过强大的requests库,因为获取code是通过回调URL携带回来的,登录过程需要点击"授权登录"按钮,所以会使用selenium库模拟浏览器输入内容和点击按钮,具体的使用方法考:
https://mp.csdn.net/postedit/89527113
sleep是因为Teambition登录时会有加载过程,用sleep来等待页面加载.
完整伪代码如下,记得下载对应浏览器版本的chromedriver.exe到代码所在目录下,然后把company_id, client_id, client_secret, user_email, user_password换成自己的值,然后运行就可以了获得token了.
打印出token后,将token值赋值给__init__()下的self.token,后面的方法就直接使用token值了.
import requests
from selenium import webdriver
import timeclass GetTeamBitionEvents(object):def __init__(self):# 进入teambition企业首页的url,可以通用,后面拼接不同的企业id即进入不同企业的首页self.company_url = 'https://www.teambition.com/organization/'# 登录Teambition默认进入您的企业首页,url中有企业的id,复制到此,企业创建后id不会改变self.company_id = 'xxxxxxxxxxxxxxxxxxxxxx'# 在开发者中心OAuth2配置处填的回调地址,与这里拼接的回调地址保持一致self.callback_url = self.company_url + self.company_id# 在teambition开发者中心,创建应用时的Client ID,复制到此self.client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'# 在teambition开发者中心,创建应用时的Client Secret,复制到此self.client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'# 获取一次性code的urlself.auth_url = 'https://account.teambition.com/oauth2/authorize?client_id=' + self.client_id + '&redirect_uri=' + self.callback_url# 具有管理员权限的用户邮箱,填您的登录邮箱self.user_email = 'wuyazi@alibaba.cn'# 您的登录密码self.user_password = 'qwert!@#$%'# 获取token的urlself.token_url = 'https://account.teambition.com/oauth2/access_token'self.token = ''def get_code(self):"""模拟浏览器获取code"""# 声明一个浏览器对象,指定使用chrome浏览器browser = webdriver.Chrome()try:# get打开指定的url,传入要打开的urlbrowser.get(self.auth_url)browser.find_element_by_name('email').send_keys(self.user_email)browser.find_element_by_name('password').send_keys(self.user_password)browser.find_element_by_class_name('anim-blue-all').click()time.sleep(2)browser.find_element_by_class_name('authorize-btn').click()code = browser.current_url.split('=')[1]time.sleep(10)browser.close()return codeexcept Exception as e:print("模拟登录获取code失败:{}".format(e))browser.close()def get_token(self):"""根据code获取token"""code = self.get_code()access_data = {'client_id': self.client_id, 'client_secret': self.client_secret, 'code': code}result = requests.post(self.token_url, data=access_data)return result.textif __name__ == '__main__':tb = GetTeamBitionEvents()token = tb.get_token()print(token)
三、根据access_token调用Teambition API
Teambition API decumentation: https://docs.teambition.com/
Teambition接口文档中提供了所有可以调用的接口,如果有更新,调用的时候以最新的为准就可以了.
在上面的代码后面(同一个类里),加入如下两个类方法,分别是根据url获取数据的方法,根据项目id获取项目中所有事件的方法.这里面的参数all=ture是联系Teambition后台开发人员后加的.所以,按照接口文档调用时有问题可以与他们联系.
def get_by_url(self, url):"""根据url获取结果"""params = {'access_token': self.token['access_token']}try:result = requests.get(url, params=params)return result.textexcept Exception as e:print(e)returndef get_event_by_project(self, project_id):"""根据项目id获取项目中的events"""url = 'https://api.teambition.com/api/projects/' + project_id + '/tasks'params = {'access_token': self.token['access_token'], 'all': 'true'}try:result = requests.get(url, params=params)return result.textexcept Exception as e:print(e)return
可以看到,调用非常简单,直接使用requests发送请求,就会返回json数据,从数据中解析我们需要的数值即可.
然后根据自己需要的值到接口文当中找到适合的API,如法炮制~~~
(事实上,python有一个第三方库就叫teambitiom,对接口做了封装,但亲自试用了,很多接口反而不通,所以直接掉Teambition API)
Python快速调用Teambition接口相关推荐
- 后端调用python_【后端开发】python如何调用api接口
python调用api接口的方式: 接口协议:http.webservice.rpc等. 请求方式:get.post方式 请求参数格式: a. get请求都是通过url?param=xxx&p ...
- python 如何调用远程接口
在python中我们可以使用requests模块来实现调用远程接口 一.安装requests模块 pip install requests 二.使用requests模块实现get方式调用远程接口 使用 ...
- 两步快速调用微信接口,活字格就是这么强
众所周知,微信早已开放了公众平台开发者接口,第三方平台在获取公众号授权后,可调用该接口进行配置,为最终用户提供微信端的即时查询.自动回复.信息推送等功能,极大的提高用户体验和运营效率. 以往,要调用微 ...
- python学习-调用邮件接口发送邮件
一.需求 每日发送服务器利用率信息,通过邮件方式发到指定联系人 二.分享脚本内容如下 #!/usr/bin/env python #-*-coding:utf-8-*- import sys from ...
- 如何在Python中调用RNAfold接口,即RNA扩展包
最近在做RNA蛋白质位点结合方向的研究,复现大佬代码的过程中,发现其用到了RNAfold的python接口包,其中主要用到了根据RNA序列生成二级结构的功能. RNAfold官网 链接: https: ...
- Python调用OpenCV接口播放本地视频文件、本地和网络摄像头
1 前言 上篇文章介绍了在WIN10系统上, C++调用OpenCV接口,播放本地视频文件.本地和网络摄像头视频.本篇我们来看一下,Python如何调用OpenCV接口,做同样的事情. 序号 视频来源 ...
- python如何调用图片-python调用图片
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行 ...
- Python快速使用jira模块调用Jira接口
Python快速使用jira模块调用Jira接口 JIRA介绍: JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作 ...
- 树莓派+python flask 调用天气api接口实现天气数据web
*注:树莓派我用的是在Win10上面的虚拟机镜像 * 文章目录 前言 一.flask是什么? 二.使用步骤 1.引入库 2.写一个简单的flask 3.实验准备 4.实验开始 5.结尾调试 总结 前言 ...
最新文章
- 修改android studio中的avd sdk路径、avd sdk找不到的解决方案
- Servlet中使用RequestDispatcher调派请求--include
- android日常开发60条经验
- 对象存储S3访问姿势
- 如何读懂并写出装逼的函数式代码 1
- gitlab将分支代码合并到master上
- win10改成ubundu主题_如何将ubuntu引导win10,修改为win10引导ubuntu
- RUNOOB python练习题44
- JConsole的使用手册 JDK1.5(转)
- 打印机如何共享多台电脑_多台电脑打印机共享的方法
- WebServic调用天气预报服务
- 上三角矩阵法Matlab,在MATLAB中重塑/变换上三角矩阵
- 微信小程序直播电脑端OBS推流直播教程
- 7-3 皮球反弹高度 (10 分)
- 【HEVC】CTU,CU,PU,TU的划分
- 【数据分析实例】 7000 条北京的租房数据分析
- 免费专业的linux web应用防火墙国内排名推荐
- 如何将3d文件在网页中显示(webGL,three.js)
- html内容被背景图片遮住怎么办_div被iframe遮住的几种情况及解决方法
- mri计算机系统,MRI的一些基本介绍
热门文章
- LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树
- 云时代企业如何保护共享文档数据安全?
- 网页统计所用到的名词解析
- 底层软件工程师的一次冒险经历
- Visual Studio Code预览版Ver 0.3.0试用体验
- 在web3上搭建ecshop网上商城
- ural(Timus) 1019 Line Painting
- 隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注
- Git 的安装及配置
- JavaScript性能优化【中】-- Performance 工具