奇妙清单(
Wunderlist
)是一个好用
To-do
应用,可以很方便地进行各种待办事项的创建和管理。它最大优势则在于跨平台性,支持所有主流平台:iPhone, iPad, Android, Windows Phone, Windows 8, Mac, Chromebook, Kindle Fire,甚至,你只需要能上网,就能使用奇妙清单的网页版。
但至今为止,奇妙清单还没有提供一个批量导入功能。如果手头有大量的任务数据需要导入,手动一个个去添加就太辛苦了。好在奇妙清单官方提供了很丰富的
API
接口。我们可以使用这些接口自己实现个批量导入功能。
一、准备工作
1,在官网上注册一下App
要使用
Wunderlist
的接口,首先我们需要到其开发者网站上新建一个App应用。
2,创建后我们可以得到这个应用的注册信息
3,获取授权
(1)我们可以在浏览器中出入如下格式的
url
,重定向到
Wunderlist
网站上获取
Wunderlist
帐号对这个应用的授权。
https://www.wunderlist.com/oauth/authorize?client_id=ID&redirect_uri=URL&state=RANDOM
其中
client_id
就是前面生成的
CLIENT ID
。
redirect_uri
是授权后要重定向的地址。
state
随便填。所以这里我们使用如下
url
地址:
https://www.wunderlist.com/oauth/authorize?client_id=1964b41c764e03988257&redirect_uri=http://www.hangge.com&state=RANDOM
(2)在跳转过来的登录页中输入 Wunderlist 的帐号密码后,点击登录。
(3)登录后询问是否需要授权,点击授权。
(4)授权后浏览器跳转,我们可以得到 code
4,将code转换成access token
我们将 client_id、client_secret、code 以 POST 的方式发送到:https://www.wunderlist.com/oauth/access_token
即可得到对应的 access token。
二、调用接口实现导入
我们有了 access tooken,加上前面的 client id。将它们放在 HTTP 请求头(HTTP request headers)就可以调用 Wunderlist 的各个接口了。
1,查询清单id
想要将任务导入到清单中,首先要得到这个清单的 id。这里先通过 a.wunderlist.com/api/v1/lists 获取所有清单信息。(注意:我在请求头中添加了 X-Client-ID 和 X-Access-Token 这两个参数属性。)
2,将数据导入到清单中
下面通过 php 代码将任务列表批量添加到“想看的电影”这个清单中(作为演示,这里要插入的任务列表我就直接使用在程序中定义的数组,其中有6条数据。实际使用中我们可以改成从外部文件读取。)
这里调用的接口是:
a.wunderlist.com/api/v1/tasks。(我们遍历任务,并调用这个接口一个个添加。)
//数值 0 表示没有执行时间的限制
ini_set('max_execution_time', '0');
**封装cURL的调用接口,post的请求方式。
function doCurlPostRequest($url, $requestString = "", $header = [], $timeout = 5){
if($url == '' || $timeout <=0){
return false;
$curl = curl_init((string)$url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestString);
curl_setopt($curl, CURLOPT_POST,true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_TIMEOUT,(int)$timeout);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //添加自定义的http header
return curl_exec($curl);
$url = "https://a.wunderlist.com/api/v1/tasks";
$header[] = "X-Client-ID:1964b41c764e03988257";
$header[] = "X-Access-Token:4effefebb064efa028a2f1f5cd79c7d74965436743858048f3c0cfc30508";
$header[] = "Content-Type: application/json"; //数据是raw形式的json格式数据
$arr = [
["肖申克的救赎","1994-09-10"],
["这个杀手不太冷","1994-09-14"],
["霸王别姬","1993-01-01"],
["阿甘正传","1994-06-23"],
["盗梦空间","2010-09-01"],
["千与千寻","2001-07-20"]
foreach($arr as &$value) {
$data = '{
"list_id": 267235055,
"title": "'.$value[0].'",
"due_date": "'.$value[1].'"
//执行添加操作
$resule = doCurlPostRequest($url, $data, $header);
//输出结果
echo $value[0]." -- ";
$obj = json_decode($resule);
if($obj == null || property_exists($obj, 'error')){
echo "失败<br>";
}else{
echo "成功<br>";
执行完毕后,页面上显示出执行结果:
打开奇妙清单,发现任务数据也已经添加成功了。
JS - Lodash工具库的使用详解7(Array数组函数4:数组排序、打乱)RequireJS - 使用 r.js 实现模块、项目的压缩合并(压缩js、css文件)Vue.js - 解决 npm install 时报 chromedriver 丢失错误纯CSS Tooltips边缘计算框架EdgeX Foundry使用详解6(将数据通过POST方式推送到服务器上)Linux下MongoDB数据库的安装、使用教程(以CentOS系统为例)jQuery - 动态添加、删除form表单项(附:新增项数据无法提交问题解决)Vue.js - 实现前端excel表格预览功能(Luckysheet+Luckyexcel)TIOBE - 2020年11月编程语言排行Kafka Connect的部署和使用详解1(安装配置、基本用法)