54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
# Parse timelogs for upload
|
|
|
|
A script for converting basic timelogs to the formats for timetracking import.
|
|
|
|
Initially for [Pomodoro Prompt](https://gitlab.com/agaric/python/pomodoroprompt) to Harvest and [Business Tracker](https://gitlab.com/novawebdevelopment/business-tracker)
|
|
|
|
Pmodoro Prompt is extremely simplistic, and only has a description field and automatically saves the date. The time unit for each entry is half an hour.
|
|
|
|
## Installation
|
|
|
|
```
|
|
mkdir -p ~/Projects/agaric/python
|
|
git clone git@gitlab.com:agaric/python/parse-timelogs-for-upload.git
|
|
cd parse-timelogs-for-upload
|
|
python3 -m pip install --user -r requirements.txt
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
python3 pomodoro_to_harvest.py
|
|
```
|
|
|
|
## Background notes
|
|
|
|
To import into a timetracking system of any sophistication, we need to parse our description and
|
|
|
|
Harvest allows CSV import, with a bunch of annoying fields.
|
|
|
|
If project doesn't exist it will create a new project.
|
|
|
|
# Learning from this script and continuing development
|
|
|
|
Rather than having to type out all 40 plus lines of data processing, you can also run the whole script in the interactive shell and play with it:
|
|
|
|
After typing `python3` to get the interactive Python shell in this directory, you can do this line:
|
|
|
|
```python
|
|
exec(open('pomodoro_to_harvest.py').read())
|
|
```
|
|
|
|
And now you can interact with the resulting timelog DataFrame:
|
|
|
|
```python
|
|
timelog.query("time>30").loc[:100,["description","time","orig_desc"]].tail(50)
|
|
```
|
|
|
|
Or the slightly more processed tl DataFrame, for example to get the hours worked per project:
|
|
|
|
```python
|
|
tl.groupby("project").agg({"time": "sum"})["time"]/60
|
|
```
|
|
|
|
And yeah you can just sort of tack on the column you want to mess with and do an operation like that!
|