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接口相关推荐

  1. 后端调用python_【后端开发】python如何调用api接口

    python调用api接口的方式: 接口协议:http.webservice.rpc等. 请求方式:get.post方式 请求参数格式: a. get请求都是通过url?param=xxx&p ...

  2. python 如何调用远程接口

    在python中我们可以使用requests模块来实现调用远程接口 一.安装requests模块 pip install requests 二.使用requests模块实现get方式调用远程接口 使用 ...

  3. 两步快速调用微信接口,活字格就是这么强

    众所周知,微信早已开放了公众平台开发者接口,第三方平台在获取公众号授权后,可调用该接口进行配置,为最终用户提供微信端的即时查询.自动回复.信息推送等功能,极大的提高用户体验和运营效率. 以往,要调用微 ...

  4. python学习-调用邮件接口发送邮件

    一.需求 每日发送服务器利用率信息,通过邮件方式发到指定联系人 二.分享脚本内容如下 #!/usr/bin/env python #-*-coding:utf-8-*- import sys from ...

  5. 如何在Python中调用RNAfold接口,即RNA扩展包

    最近在做RNA蛋白质位点结合方向的研究,复现大佬代码的过程中,发现其用到了RNAfold的python接口包,其中主要用到了根据RNA序列生成二级结构的功能. RNAfold官网 链接: https: ...

  6. Python调用OpenCV接口播放本地视频文件、本地和网络摄像头

    1 前言 上篇文章介绍了在WIN10系统上, C++调用OpenCV接口,播放本地视频文件.本地和网络摄像头视频.本篇我们来看一下,Python如何调用OpenCV接口,做同样的事情. 序号 视频来源 ...

  7. python如何调用图片-python调用图片

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行 ...

  8. Python快速使用jira模块调用Jira接口

    Python快速使用jira模块调用Jira接口 JIRA介绍: JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作 ...

  9. 树莓派+python flask 调用天气api接口实现天气数据web

    *注:树莓派我用的是在Win10上面的虚拟机镜像 * 文章目录 前言 一.flask是什么? 二.使用步骤 1.引入库 2.写一个简单的flask 3.实验准备 4.实验开始 5.结尾调试 总结 前言 ...

最新文章

  1. 修改android studio中的avd sdk路径、avd sdk找不到的解决方案
  2. Servlet中使用RequestDispatcher调派请求--include
  3. android日常开发60条经验
  4. 对象存储S3访问姿势
  5. 如何读懂并写出装逼的函数式代码 1
  6. gitlab将分支代码合并到master上
  7. win10改成ubundu主题_如何将ubuntu引导win10,修改为win10引导ubuntu
  8. RUNOOB python练习题44
  9. JConsole的使用手册 JDK1.5(转)
  10. 打印机如何共享多台电脑_多台电脑打印机共享的方法
  11. WebServic调用天气预报服务
  12. 上三角矩阵法Matlab,在MATLAB中重塑/变换上三角矩阵
  13. 微信小程序直播电脑端OBS推流直播教程
  14. 7-3 皮球反弹高度 (10 分)
  15. 【HEVC】CTU,CU,PU,TU的划分
  16. 【数据分析实例】 7000 条北京的租房数据分析
  17. 免费专业的linux web应用防火墙国内排名推荐
  18. 如何将3d文件在网页中显示(webGL,three.js)
  19. html内容被背景图片遮住怎么办_div被iframe遮住的几种情况及解决方法
  20. mri计算机系统,MRI的一些基本介绍

热门文章

  1. LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树
  2. 云时代企业如何保护共享文档数据安全?
  3. 网页统计所用到的名词解析
  4. 底层软件工程师的一次冒险经历
  5. Visual Studio Code预览版Ver 0.3.0试用体验
  6. 在web3上搭建ecshop网上商城
  7. ural(Timus) 1019 Line Painting
  8. 隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注
  9. Git 的安装及配置
  10. JavaScript性能优化【中】-- Performance 工具