2021-08-28 20:03:45 +00:00
|
|
|
# Nomie Habit Migrator
|
|
|
|
|
|
|
|
Can take an export of nomie habits in json format and convert it to be importable in Loop Habit Tracker.
|
|
|
|
|
|
|
|
Confirmed working for nomie version 5.6.4 and Loop Habit Tracker version 2.0.2.
|
|
|
|
Presumably works for other nomie 5.x versions and other Loop 2.x versions as well, but is untested.
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Currently takes a single argument, the nomie database file, and will output to `output.db` in present working directory.
|
2021-08-28 21:07:30 +00:00
|
|
|
Can also take an existing Loop Habit database (exported from the application),
|
|
|
|
and add the nomie exported habits and checkmarks to it.
|
|
|
|
Simply put the exported Loop database in the same directory and call it `output.db`,
|
|
|
|
it will not (should not) overwrite anything.
|
2021-08-28 20:03:45 +00:00
|
|
|
|
|
|
|
Invoked like: `python migrate.py nomie-export.json`
|
|
|
|
|
2021-08-26 21:13:56 +00:00
|
|
|
# Schemas
|
|
|
|
|
|
|
|
A collection of the schemas of Loop habit sqlite database for later migration
|
|
|
|
|
|
|
|
# Loop Habit Tracker
|
|
|
|
|
|
|
|
## Repetitions - 2021-08-26 -- seems to replace the older Chains table?
|
|
|
|
|
|
|
|
id|habit|timestamp|value
|
|
|
|
1|1|1629936000000|2
|
|
|
|
2|2|1629936000000|2
|
|
|
|
3|2|1629676800000|2
|
|
|
|
|
|
|
|
|
|
|
|
## Habits - from 2021-07-23
|
|
|
|
|
|
|
|
id | archived | color | description | freq_den | freq_num | highlight | name | position | reminder_hour | reminder_min | reminder_days | type | target_type | target_value | unit | question | uuid
|
|
|
|
1 | 0 | 4 | | 1 | 1 | 0 | mood | 0 | | | 0 | 1 | 0 | 10.0 | | How do you feel today? | d183a7dd755e44ce9a5782f518b402b4
|
|
|
|
2 | 0 | 1 | | 1 | 1 | 0 | reading | 1 | | | 0 | 0 | 0 | 0.0 | | Did you read today? | 6b361353e0914a698e896798d5ebca6e
|
|
|
|
3 | 0 | 15 | | 1 | 1 | 0 | sex 💏 | 2 | | | 0 | 0 | 0 | 0.0 | | Did you have sex today? | 41b646162dc542b3ba223993847d861b
|
|
|
|
|
|
|
|
## Habits - from 2021-08-26
|
|
|
|
|
|
|
|
id | archived | color | description | freq_den | freq_num | highlight | name | position | reminder_hour | reminder_min | reminder_days | type | target_type | target_value | unit | question | uuid
|
|
|
|
1 | 0 | 11 | | 1 | 1 | 0 | Gt | 0 | | | 0 | 0 | 0 | 0.0 | | | cfed6f97b67e435d8461ba1accf7457e
|
|
|
|
2 | 0 | 15 | And note | 3 | 1 | 0 | Iamtrack | 1 | 23 | 0 | 127 | 0 | 0 | 0.0 | | And have all fields? | 1ebe2d429e0d4cd293b1ea038c2b079a
|
|
|
|
|
|
|
|
## Chains - habit maps to habit table ID - 2021-07-23
|
|
|
|
|
|
|
|
id|habit|timestamp|value
|
|
|
|
1|1|1627257600000|5000
|
|
|
|
2|2|1627257600000|2
|
|
|
|
3|2|1627171200000|2
|
|
|
|
4|2|1626998400000|2
|
|
|
|
5|1|1626912000000|10000
|
|
|
|
6|1|1626998400000|3000
|
|
|
|
7|3|1627171200000|2
|
|
|
|
|
|
|
|
## EVENTS -- empty?
|
|
|
|
|
|
|
|
|
|
|
|
# Nomie
|
|
|
|
|
2021-08-27 08:11:00 +00:00
|
|
|
## Schema translation
|
|
|
|
|
|
|
|
trackers: nomie -> loop
|
|
|
|
|
|
|
|
? | id (primary key increasing id for each tracker, should autoincrement)
|
|
|
|
hidden | archived
|
|
|
|
color | color (but nomie: `#369DD3`, loop `2` of available selection)
|
|
|
|
label + emoji | name
|
|
|
|
? | description (a little one-liner extended description)
|
|
|
|
? | freq_den (frequency denominator, either 7 for per week or 30 for per month)
|
|
|
|
? | freq_num (frequency numerator, how often per week/month. Has to be one for ranges afaik?)
|
|
|
|
? | highlight (function ??)
|
|
|
|
? | position (which vertical position on screen tracker takes. must be unique?)
|
|
|
|
? | reminder_hour (simple int)
|
|
|
|
? | reminder_min (simple int)
|
|
|
|
? | reminder_days (simple int, but i'm not sure how, saw 127)
|
|
|
|
type | type (range,counter [more in nomie]; string in nomie, int in loop)
|
|
|
|
? | target_type (??)
|
2021-08-28 20:03:45 +00:00
|
|
|
? | target_value (maximum value for range habits afaik)
|
2021-08-27 08:11:00 +00:00
|
|
|
uom | unit (text description of value, in nomie set values with `num` being no-value count)
|
|
|
|
? | question (text question tracker asks)
|
|
|
|
id | uuid (unique id, must be unique surprisingly)
|
|
|
|
|
|
|
|
nomie has no concept of 'ideal' repetitions (i.e. success if.. once a day; twice a week; 4 miles a month; ...)
|
|
|
|
nomie has no concept of reminder times for trackers
|
|
|
|
loop has no concept of 'score' associated to trackers (when e.g. tracking bad things)
|
|
|
|
|
2021-08-26 21:13:56 +00:00
|
|
|
## Nomie trackers
|
|
|
|
|
|
|
|
{
|
|
|
|
'mood': {
|
|
|
|
'tag': 'mood',
|
|
|
|
'id': '02283493c7ed0b8dd08de38ae5ca4944',
|
|
|
|
'type': 'range',
|
|
|
|
'color': '#369DD3',
|
|
|
|
'math': 'mean',
|
|
|
|
'ignore_zeros': False,
|
|
|
|
'uom': 'num',
|
|
|
|
'emoji': '😉',
|
|
|
|
'default': '3',
|
|
|
|
'max': '10',
|
|
|
|
'min': '1',
|
|
|
|
'score': 'custom',
|
2021-08-27 08:11:00 +00:00
|
|
|
'score_calc': [{'if': 'value', 'is': 'gt', 'v': 5, 'sc': '1'}, {'if': 'value', 'is': 'lt', 'v': 5, 'sc': '-1'}],
|
2021-08-26 21:13:56 +00:00
|
|
|
'goal': None,
|
|
|
|
'one_tap': False,
|
|
|
|
'include': '',
|
|
|
|
'hidden': False,
|
|
|
|
'label': 'Mood'
|
|
|
|
},
|
|
|
|
'cigarette':
|
|
|
|
{
|
|
|
|
'tag': 'cigarette',
|
|
|
|
'id': '551faae2c5d865ca81e20d00c952b679',
|
|
|
|
'type': 'tick',
|
|
|
|
'color': '#EB144C',
|
|
|
|
'math': 'su m',
|
|
|
|
'ignore_zeros': False,
|
|
|
|
'uom': 'num',
|
|
|
|
'emoji': '🚬',
|
|
|
|
'default': None,
|
|
|
|
'score': '-1',
|
|
|
|
'one_tap': True,
|
|
|
|
'incl ude': '',
|
|
|
|
'hidden': False,
|
|
|
|
'label': 'Cigarette'
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
## DataFrame sample from Nomie
|
|
|
|
|
|
|
|
_id note end start score lat lng location offset modified source
|
|
|
|
0 a1a85aac2f #mood(7) #social #date #cigarette #alcohol #go... 1546282800000 1546282800000 0 NaN NaN -60 False importer
|
|
|
|
1 d717092fbd #mood(7) #reading #social #cigarette #good_mea... 1546209780000 1546209780000 0 NaN NaN -60 False importer
|
|
|
|
2 311a54f23e #mood(7) #work #social #date #cigarette #relax 1530381900000 1530381900000 0 NaN NaN -60 False importer
|
|
|
|
3 7f40cce690 #mood(7) #work #cigarette #good_meal #surfing 1530308340000 1530308340000 0 NaN NaN -60 False importer
|
|
|
|
4 d75e110fdc #mood(7) #reading #work #cigarette #good_meal ... 1530293580000 1530293580000 0 NaN NaN -60 False importer
|