# Wakatime integration

**URL:** <https://forum.beeminder.com/t/wakatime-integration/3429>\
**Category:** Tech\
**Created:** [August 13, 2017, 6:24pm UTC](https://forum.beeminder.com/t/wakatime-integration/3429 "2017-08-13T18:24:02Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![narthur](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/narthur/32/5113_2.png) [@narthur](https://forum.beeminder.com/u/narthur)\
**Post date:** [September 29, 2020, 6:24pm UTC](https://forum.beeminder.com/t/wakatime-integration/3429/14 "2020-09-29T18:24:56Z")

</div>

For a while I used some custom python to connect wakatime with beeminder, feel free to take whatever you like:

Wakatime wrapper:

```auto
import requests
import datetime

class WakaTime:
    _key = "[your api key here]"

    def get_projects(self):
        date_string = datetime.datetime.now().strftime("%Y-%m-%d")
        base = "https://wakatime.com/api/v1/users/current/"
        endpoint = f"{base}summaries?start={date_string}&end={date_string}&api_key={self._key}"
        response = requests.get(endpoint)

        return response.json()['data'][0]['projects']

```

Sync job:

```auto
from pyminder.beeminder import Beeminder

from airtimer.croniter import Croniter
from airtimer.job import Job
from airtimer.python import Python
from airtimer.wakatime import WakaTime

class Script(Job):
    # Every hour
    _schedule = '0 * * * *'

    _beeminder: Beeminder
    _wakatime: WakaTime

    def __init__ (
            self,
            beeminder: Beeminder,
            croniter: Croniter,
            python: Python,
            wakatime: WakaTime
    ):
        super(). __init__ (croniter, python)

        self._beeminder = beeminder
        self._wakatime = wakatime

    def run(self):
        projects = self._wakatime.get_projects()
        goals = self._beeminder.get_goals()
        goal_names = [g['slug'] for g in goals]
        filtered_projects = [p for p in projects if f"waka-{p['name']}" in goal_names]

        for project in filtered_projects:
            self._beeminder.create_datapoint(
                f"waka-{project['name']}",
                project['total_seconds'] / 60 / 60,
                self._python.time_now()
            )

```

---

_[View the full topic](https://forum.beeminder.com/t/wakatime-integration/3429)._
