滴答清单

0x01 介绍

滴答清单是我最近一直在用的待办事项管理软件,支持多平台,可以很便捷的添加提醒和代办事项,并且可以设置法定工作日重复事件,还有多种视图(要钱),待办事项也可以当作笔记来写,支持markdown格式,笔记和任务可以切换,是一款很值得推荐的软件。

滴答清单还可以生成日历链接,可以在自己的手机日历或着电脑上进行订阅,这样自己的待办事项等就可以同步到日历上,有的人可能习惯看手机日历,但是有些系统是不支持创建法定工作日的提醒的,可以通过在滴答清单上创建,然后同步日历订阅的形式实现,反之,日历上的内容也可以被同步到滴答清单上,大家可以自行下载感受一下,或者在网上找篇测评文章或视频看一下。

复制下面的邀请链接在微信里访问,可以免费领取7天的高级会员。

邀请链接:https://dida365.com/promotion/inviteFriends/wechatRefer?c=3&p=14mda37b&t=0&code=061fPf0w3hlFNZ27GX0w3Rn6B91fPf01&state=

网页版:https://dida365.com/webapp/

客户端下载:https://dida365.com/about/download

0x02 生成日历链接

直接去设置里面点日历、邮件与集成可以自行选择生成,这本身就是滴答清单的功能。

查看分组:(GET)https://api.dida365.com/api/v2/projects

生成日历:(POST)https://api.dida365.com/api/v2/calendar/feeds/code/new/xprojectidx

删除日历:(DELETE)https://api.dida365.com/api/v2/calendar/feeds/cancel/xprojectidx

日历链接格式:webcal://dida365.com/pub/calendar/feeds/日历生成id/basic.ics

针对分组生成日历链接的js代码,登陆滴答清单的网页版后,在页面打开开发者工具,在控制台粘贴下面的代码回车执行即可。

async function send(method,url,data="") {
    let retval = await $.ajax({
        "type":method,
        "url":url,
        "data":data,
        "headers":{
            "Content-Type":`application/json;charset=UTF-8`
        },
        "xhrFields":{
            "withCredentials":true
        }
    });
    return retval;
}

function getCalendar() {
    send("GET","https://api.dida365.com/api/v2/projects").then(function(data){
        let promptStr = "欢迎使用滴答清单日历链接生成脚本,请输入需要生成日历的索引:\n"
        let index = 0;
        for (let project of data) {
            promptStr = promptStr + `[${index}]`+ project["name"] + "\n";
            index = index + 1;
        }
        let i = parseInt(prompt(promptStr));
        if (i > 0 && i < index){
            let project = data[i];
            send("POST",`https://api.dida365.com/api/v2/calendar/feeds/code/new/${project["id"]}`).then(function (data) {
                let promptStr = "日历链接如下,请自行复制:\n";
                prompt(promptStr,`webcal://dida365.com/pub/calendar/feeds/${data}/basic.ics`)
            })
        }else{
            alert("索引不存在!")
        }
    })
}
getCalendar();