PageRenderTime 47ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/todoist_backup.php

https://bitbucket.org/icebowie/todoist-backup
PHP | 43 lines | 34 code | 2 blank | 7 comment | 0 complexity | 8ef5641b830cc26d642cb8bc141d0cd8 MD5 | raw file
  1. <?PHP
  2. /// Simple Exporter for Todoist
  3. /// Put API token in todoist_apitoken.txt file
  4. ini_set('memory_limit', '-1');
  5. set_time_limit(0);
  6. error_reporting(-1);
  7. // wrapper function for scraping API
  8. function todoistAPICall($method, $arguments){
  9. global $base_url, $login_token;
  10. $arguments = is_null($arguments) ? array() : $arguments;
  11. return file_get_contents("{$base_url}/{$method}?token={$login_token}&".http_build_query($arguments));
  12. }
  13. // concatenate to output string
  14. function backupConcat($string){
  15. global $backup;
  16. $backup = $backup.$string;
  17. }
  18. // token is found in Preferences>Account
  19. $login_token = trim(file_get_contents("todoist_apitoken.txt"));
  20. $base_url = "http://www.todoist.com/API";
  21. $backup = "";
  22. $projects_all = todoistAPICall("getProjects", null);
  23. // Suboptimal, but decoding JSON can be troublesome for PHP
  24. preg_match_all('|"id":(.+?)[}\s,]|is', $projects_all, $matches);
  25. backupConcat("### PROJECTS, TASKS, and LABELS ###\n");
  26. foreach($matches[1] as $project_id){
  27. $project_id = trim($project_id);
  28. backupConcat("### PROJECT ###\n");
  29. backupConcat(todoistAPICall('getProject', array('project_id' => $project_id))."\n");
  30. backupConcat("\t### TASKS ###\n");
  31. backupConcat("\t".todoistAPICall('getUncompletedItems', array('project_id' => $project_id))."\n");
  32. backupConcat("\t".todoistAPICall('getCompletedItems', array('project_id' => $project_id))."\n");
  33. backupConcat("\t### LABELS ###\n");
  34. backupConcat("\t".todoistAPICall('getLabels', array('project_id' => $project_id))."\n");
  35. }
  36. $backup_time = date('YmdHis');
  37. backupConcat("### BACKUP DONE {$backup_time} ###\n");
  38. echo "### BACKUP DONE {$backup_time} ###\n";
  39. // write output string to file
  40. file_put_contents("todoistbackup_{$backup_time}.txt", $backup);
  41. ?>