/todoist_backup.php
PHP | 43 lines | 34 code | 2 blank | 7 comment | 0 complexity | 8ef5641b830cc26d642cb8bc141d0cd8 MD5 | raw file
- <?PHP
- /// Simple Exporter for Todoist
- /// Put API token in todoist_apitoken.txt file
- ini_set('memory_limit', '-1');
- set_time_limit(0);
- error_reporting(-1);
- // wrapper function for scraping API
- function todoistAPICall($method, $arguments){
- global $base_url, $login_token;
- $arguments = is_null($arguments) ? array() : $arguments;
- return file_get_contents("{$base_url}/{$method}?token={$login_token}&".http_build_query($arguments));
- }
- // concatenate to output string
- function backupConcat($string){
- global $backup;
- $backup = $backup.$string;
- }
- // token is found in Preferences>Account
- $login_token = trim(file_get_contents("todoist_apitoken.txt"));
- $base_url = "http://www.todoist.com/API";
- $backup = "";
- $projects_all = todoistAPICall("getProjects", null);
- // Suboptimal, but decoding JSON can be troublesome for PHP
- preg_match_all('|"id":(.+?)[}\s,]|is', $projects_all, $matches);
- backupConcat("### PROJECTS, TASKS, and LABELS ###\n");
- foreach($matches[1] as $project_id){
- $project_id = trim($project_id);
- backupConcat("### PROJECT ###\n");
- backupConcat(todoistAPICall('getProject', array('project_id' => $project_id))."\n");
- backupConcat("\t### TASKS ###\n");
- backupConcat("\t".todoistAPICall('getUncompletedItems', array('project_id' => $project_id))."\n");
- backupConcat("\t".todoistAPICall('getCompletedItems', array('project_id' => $project_id))."\n");
- backupConcat("\t### LABELS ###\n");
- backupConcat("\t".todoistAPICall('getLabels', array('project_id' => $project_id))."\n");
- }
- $backup_time = date('YmdHis');
- backupConcat("### BACKUP DONE {$backup_time} ###\n");
- echo "### BACKUP DONE {$backup_time} ###\n";
- // write output string to file
- file_put_contents("todoistbackup_{$backup_time}.txt", $backup);
- ?>