From: Florian Forster Date: Sun, 4 Feb 2018 08:27:56 +0000 (+0100) Subject: Package gfit: Add a list of activities. X-Git-Url: https://git.octo.it/?p=kraftakt.git;a=commitdiff_plain;h=0a346a38e86f8c40df7ab4e871b3a416e0783b39 Package gfit: Add a list of activities. --- diff --git a/gfit/activities.go b/gfit/activities.go new file mode 100644 index 0000000..02b424e --- /dev/null +++ b/gfit/activities.go @@ -0,0 +1,150 @@ +package gfit + +var Activities = map[string]int64{ + "Aerobics": 9, + "Archery": 119, + "Awake (during sleep cycle)": 112, + "Back-country skiing": 66, + "Badminton": 10, + "Baseball": 11, + "Basketball": 12, + "Biathlon": 13, + "Biking": 1, + "Boxing": 20, + "Calisthenics": 21, + "Circuit training": 22, + "Cricket": 23, + "Cross-country skiing": 67, + "Crossfit": 113, + "Cross skating": 63, + "Curling": 106, + "Dancing": 24, + "Deep sleep": 110, + "Diving": 102, + "Downhill skiing": 68, + "Elevator": 117, + "Elliptical": 25, + "Ergometer": 103, + "Escalator": 118, + "Fencing": 26, + "Football (American)": 27, + "Football (Australian)": 28, + "Football (Soccer)": 29, + "Frisbee": 30, + "Gardening": 31, + "Golf": 32, + "Gymnastics": 33, + "Handball": 34, + "Handbiking": 14, + "HIIT": 114, + "Hiking": 35, + "Hockey": 36, + "Horseback riding": 37, + "Housework": 38, + "Ice skating": 104, + "Indoor skating": 105, + "Inline skating (rollerblading)": 64, + "Interval Training": 115, + "In vehicle": 0, + "Jogging": 56, + "Jumping rope": 39, + "Kayaking": 40, + "Kettlebell training": 41, + "Kickboxing": 42, + "Kite skiing": 69, + "Kitesurfing": 43, + "Light sleep": 109, + "Martial arts": 44, + "Meditation": 45, + "Mixed martial arts": 46, + "Mountain biking": 15, + "Nording walking": 94, + "On foot": 2, + "Other (unclassified fitness activity)": 108, + "P90X exercises": 47, + "Paragliding": 48, + "Pilates": 49, + "Polo": 50, + "Racquetball": 51, + "REM sleep": 111, + "Road biking": 16, + "Rock climbing": 52, + "Roller skiing": 70, + "Rowing": 53, + "Rowing machine": 54, + "Rugby": 55, + "Running": 8, + "Running on sand": 57, + "Running (treadmill)": 58, + "Sailing": 59, + "Scuba diving": 60, + "Skateboarding": 61, + "Skating": 62, + "Skiing": 65, + "Sledding": 71, + "Sleeping": 72, + "Snowboarding": 73, + "Snowmobile": 74, + "Snowshoeing": 75, + "Softball": 120, + "Spinning": 17, + "Squash": 76, + "Stair climbing": 77, + "Stair-climbing machine": 78, + "Stand-up paddleboarding": 79, + "Stationary biking": 18, + "Still (not moving)": 3, + "Strength training": 80, + "Surfing": 81, + "Swimming": 82, + "Swimming (open water)": 84, + "Swimming (swimming pool)": 83, + "Table tennis (ping pong)": 85, + "Team sports": 86, + "Tennis": 87, + "Tilting (sudden device gravity change)": 5, + "Treadmill (walking or running)": 88, + "Unknown (unable to detect activity)": 4, + "Utility biking": 19, + "Volleyball": 89, + "Volleyball (beach)": 90, + "Volleyball (indoor)": 91, + "Wakeboarding": 92, + "Walking": 7, + "Walking (fitness)": 93, + "Walking (stroller)": 116, + "Walking (treadmill)": 95, + "Waterpolo": 96, + "Weightlifting": 97, + "Wheelchair": 98, + "Windsurfing": 99, + "Yoga": 100, + "Zumba": 101, +} + +var fitbitMapping = map[string]string{ + "Bike": "Biking", + "Cross Country Skiing": "Cross-country skiing", + "Football": "Football (Soccer)", + "Hike": "Hiking", + "Mountain Bike": "Mountain biking", + "Run": "Running", + "Sport": "Other (unclassified fitness activity)", + "Swim": "Swimming", + "Treadmill": "Treadmill (walking or running)", + "Ultimate frisbee": "Frisbee", + "Walk": "Walking", + "Weights": "Weightlifting", + "Workout": "Other (unclassified fitness activity)", +} + +func ParseFitbitActivity(s string) int64 { + if a, ok := Activities[s]; ok { + return a + } + if name, ok := fitbitMapping[s]; ok { + return Activities[name] + } + + return Activities["Unknown (unable to detect activity)"] +} diff --git a/gfit/activities_test.go b/gfit/activities_test.go new file mode 100644 index 0000000..1e8c175 --- /dev/null +++ b/gfit/activities_test.go @@ -0,0 +1,13 @@ +package gfit + +import ( + "testing" +) + +func TestFitbitMapping(t *testing.T) { + for _, v := range fitbitMapping { + if _, ok := Activities[v]; !ok { + t.Errorf("Activities[%q] does not exist", v) + } + } +}