GithubHelp home page GithubHelp logo

beeminder_toggl's Introduction

Toggl to Beeminder

Features

This is a toggl to beeminder integration. It will automatically update your beeminder goals when you add time entries in toggl corresponding to them.

  • All time entries that you want synchronized to a given beeminder goal should be part of a single toggl project. The names of the goal and the project may be different.

  • If you change a time entry in toggl (changing the amount of time, changing the project etc.) within 24 hours of creating it, the changes will be reflected in beeminder.

Install

This project requires python. No libraries should be necessary: the only non-standard library used is tendo.singleton, but I included it in the repo.

These installation steps should work for Mac OS X, Linux, or any other Unix system with python. For Windows, you will need to find a way to run the python script repeatedly.

Configuration

First, you need to create a config file:

cp data/toggl.cfg.example data/toggl.cfg

Then edit toggl.cfg. The first part involves setting which toggl projects correspond to which beeminder goals. You need to enumerate all projects and goals here even if they have the same name!!!

For example, if your toggl project is called "Be Productive" and your beeminder goal is called "prod", the "project_to_goal" section should contain "be productive": "prod". If you aren't familiar with the JSON format, please note that you should separate different "project": "goal" items with commas, but that the last item shouldn't be followed by a comma.

Also note that the beeminder goals should NOT be the user friendly goal names but should be the goal URL name. For example, if your goal is called "Be More Productive", but when you navigate to it you see https://www.beeminder.com/<your_username>/goals/prod in your browser's URL bar, you should use "prod" as your goal name here.

Then in the goal_to_time_unit section, include the unit of your various beeminder goals. For instance, if your "prod" goal is measured in seconds, you should have "prod": "s". Supported units include "s" (seconds), "m" (minutes), "h" (hours) and "d" (days).

Your beeminder_token can be found at https://www.beeminder.com/settings/advanced_settings

Your toggl_token can be found at https://www.toggl.com/app/profile

Your beeminder user name is whatever you use to log into beeminder (obviously). Write it in lowercase.

Initializing

The very first thing you absolutely need to do is run the script once.

python sync_toggl.py.

Any toogl entry that you created prior to running the script for the first time will be ignored. Every toggl entry that you subsequently create will be synchronized to beeminder.

Making the script run repeatedly

Add your script as a cron by using (in shell):

EDITOR=nano crontab -e

This will open an editor with a cron configuration file. Add the following line in the file:

* * * * * python <PATH_TO_THE_SCRIPT>/sync_toggl.py

Of course, replace <PATH_TO_THE_SCRIPT> with the path to the directory that contains sync_toggl.py (For example: /User/yourname/beeminder_toggl/).

Then save and exit.

You're all set. The script will run every minute, which means that every new entry in toggl will be reflected in beeminder within a minute.

beeminder_toggl's People

Contributors

adrienle avatar

Watchers

OIiver Mayor avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.