{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":768849885,"defaultBranch":"main","name":"Strava-Running-Name-Automation","ownerLogin":"leoz0214","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-03-07T21:10:07.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/86931572?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1711296929.0","currentOid":""},"activityList":{"items":[{"before":"3a5b08baf96228880fabbce85edc677b56d42fc1","after":"69449157ce5356b71e229e832d67e385fe821a5e","ref":"refs/heads/main","pushedAt":"2024-03-24T15:58:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Bug fixes\n\nFix bug where missing cadence crashes instead of setting cadence to None. Also fix a major bug where for restrictions, null (inf) is not accepted as the upper and caused an error instead. These bugs were detected thanks to manual activity testing.","shortMessageHtmlLink":"Bug fixes"}},{"before":"ea5339775dce1753074eee6e944cc88a153c6e2a","after":"3a5b08baf96228880fabbce85edc677b56d42fc1","ref":"refs/heads/main","pushedAt":"2024-03-23T21:44:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Add Linux bin, fix BUGS\n\nLinux geo.so binary added (compiled on Linux Cloud Server. Fix bug where empty description detected as non-empty (consider whitespace only as empty). Also fixed a tragic bug where the lat/long count should be divided by 2 instead of 3 (each lat/long array is of length 2). It was causing issues matching routes as a result. Small but big changes.","shortMessageHtmlLink":"Add Linux bin, fix BUGS"}},{"before":"a333d21f2c9238c59da1af4cd4de74492a05dbe4","after":"ea5339775dce1753074eee6e944cc88a153c6e2a","ref":"refs/heads/main","pushedAt":"2024-03-20T23:01:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Finish up guide\n\nRunning program information and info on program files and source code. Good enough.","shortMessageHtmlLink":"Finish up guide"}},{"before":"b6759c116b4fc508802dd210fdd2b9df101561ef","after":"a333d21f2c9238c59da1af4cd4de74492a05dbe4","ref":"refs/heads/main","pushedAt":"2024-03-19T23:05:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Continue GUIDE\n\nWrite guide on the JSON schema (complex...). needs to be proofread and refined and clarified but a good general implementation to a brutal part of the writeup.","shortMessageHtmlLink":"Continue GUIDE"}},{"before":"f37a6f521c6dc3ce7cd408eedc9f3e6a458e70a6","after":"b6759c116b4fc508802dd210fdd2b9df101561ef","ref":"refs/heads/main","pushedAt":"2024-03-18T23:00:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Develop README, start GUIDE\n\nAdd startup script for convenience strava.py. Add requirements.txt (surprisingly short). Also add example config file which will be explained in guide.","shortMessageHtmlLink":"Develop README, start GUIDE"}},{"before":"a4ae0028d21cc2d42a53e5bc81bb5b1d4e72c80e","after":"f37a6f521c6dc3ce7cd408eedc9f3e6a458e70a6","ref":"refs/heads/main","pushedAt":"2024-03-18T01:02:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Implement API call to update Title/Desc\n\nPUT request to API activity URL successfully renames activity title and description (generated by program). Also minor code refinements. Testing and subsequent refinements should follow, but the core logic of the project is DONE! Likely 3-4 cleanup days to follow for project.","shortMessageHtmlLink":"Implement API call to update Title/Desc"}},{"before":"4dc914cee92983760216bda9b0a9ebeb4194bb14","after":"a4ae0028d21cc2d42a53e5bc81bb5b1d4e72c80e","ref":"refs/heads/main","pushedAt":"2024-03-17T22:02:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Implement HR/Weather strings\n\nBase heart rate string on time spent in each zone. Treat changes in HR between samples as straight lines. E.g. 140 -> 150 in 1 second is of line HR = 10t + 140 where 0 <= t <= 1. Weather string simply displays all weather info sensibly. Generation done for now. Need to call API to actually invoke the update. Still need to conduct live testing. Otherwise project close to completion.","shortMessageHtmlLink":"Implement HR/Weather strings"}},{"before":"171363ed3d37a4b2c44568de04edfffa48ae25c1","after":"4dc914cee92983760216bda9b0a9ebeb4194bb14","ref":"refs/heads/main","pushedAt":"2024-03-17T17:09:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Implement start time and date placeholder gen, fix stream fetch\n\nThe start time and date placeholder text generations have been implemented, so start_time.xxx and date.xxx placeholders have been handled as required. Also turns out the params passing as a list of streams to fetch was messed up - need to join with comma to create required Comma-Separated string param. Also need time stream alongside hr stream in order to properly determine duration in each zone (not suitable to assume heart rates in 1 second intervals for example). Next need to process and generate HEART RATE and WEATHER text given activity.","shortMessageHtmlLink":"Implement start time and date placeholder gen, fix stream fetch"}},{"before":"6c56feb091398d8849b91879439a9e6ae38465b6","after":"171363ed3d37a4b2c44568de04edfffa48ae25c1","ref":"refs/heads/main","pushedAt":"2024-03-17T01:51:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Start actual title/desc generation\n\nUses (list) of title/description placeholder strings from a viable template and renders a string based on the activity if possible. Placeholder string parsed and placeholders replaced with corresponding value. Start on numeric range metric title/desc gen - the simplestyet most broad (NEED TO TEST THOROUGHLY STILL). Also reinforce validation by disallowing hr_zones placeholder if heart rate zones not set in config file. Overall looking excellent now, core will likely done in a few days.","shortMessageHtmlLink":"Start actual title/desc generation"}},{"before":"4a45f3bd47918cf741cd6884142736b146c5614e","after":"6c56feb091398d8849b91879439a9e6ae38465b6","ref":"refs/heads/main","pushedAt":"2024-03-16T22:38:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Write C++ implementation for points checking\n\nFinding lat/longs in range of points takes quadratic time which is slow. Even though the program is unlikely to have extreme input, this ensures around x10 performance especially due to faster haversine calculation. code adapted accordingly","shortMessageHtmlLink":"Write C++ implementation for points checking"}},{"before":"2879539c6cc2e127d1910541dea9d3a2d2475ffa","after":"4a45f3bd47918cf741cd6884142736b146c5614e","ref":"refs/heads/main","pushedAt":"2024-03-16T01:17:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Start title/desc generation logic\n\nBegin by creating utils module. Implement a function to see if activity satisfies a (route) template restriction based on distance, pace and start time, alongide blacklisted points. Unfortunately, checking for any blacklisted points being touched takes O(n^2) worst case which is poor (tested - does not scale well and will add up for multiple route templates with blacklist for sure...). eeither port intensive code to C++ for some alleviation or better find a more suitable algorithm rather than brute force.","shortMessageHtmlLink":"Start title/desc generation logic"}},{"before":"e0a40d793d667c8a256ed8293eaa4b026edd29a8","after":"2879539c6cc2e127d1910541dea9d3a2d2475ffa","ref":"refs/heads/main","pushedAt":"2024-03-15T22:01:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Complete Config dataclass, set up title/desc generation\n\nAll relevant dataclasses have been included in the master Config dataclass including templates and associated restrictions. The config dataclass is done! Create generate.py module, which is where the title and description will be generated given the activity and config data. Looking good.","shortMessageHtmlLink":"Complete Config dataclass, set up title/desc generation"}},{"before":"98906e9b3aece5a15147d0ce89416c67bd4e5764","after":"e0a40d793d667c8a256ed8293eaa4b026edd29a8","ref":"refs/heads/main","pushedAt":"2024-03-14T23:00:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Implement + validate route templates.\n\nRoute templates extend standard templates by allowing input of list of lat/long points that need to be reached, with a set margin of error to accont for continuous nature of lat/long. Similarly, an additional restriction can be set - a blacklist of points where the route is mismatched if any of the points are reached with a set margin of error. Just need to serialise templates into data classes before the Config data implementation is done! Then can implement actual naming logic using strictly validated data.","shortMessageHtmlLink":"Implement + validate route templates."}},{"before":"644b20f8e04fd64630b06489399c517d2d065cfa","after":"98906e9b3aece5a15147d0ce89416c67bd4e5764","ref":"refs/heads/main","pushedAt":"2024-03-13T23:00:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Complete templates validation - Restrictions\n\nAllows the user to input distance/pace/start time restrictions so templates only activate under certain conditions. 2-arrays of min/max are expected, which can be standalone or multiple ranges can be provided (non-continuous). This concludes templates input and validation. Onto route templates now to take this a step further before finally starting the process to actually generate title/desc.","shortMessageHtmlLink":"Complete templates validation - Restrictions"}},{"before":"c35f7c99c6ad5d002fd5eeb60ee0ea0ba15cdcfe","after":"644b20f8e04fd64630b06489399c517d2d065cfa","ref":"refs/heads/main","pushedAt":"2024-03-12T22:58:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Begin templates validation\n\nAllow titles and description placeholder strings to be input, with {marker_type.key} curly brace placeholders (see code for clarification). Thorough validation as per usual. Good progress on a fairly complex task.","shortMessageHtmlLink":"Begin templates validation"}},{"before":"3c678e339965ecb98ee48f076ee0594b12c43f4d","after":"c35f7c99c6ad5d002fd5eeb60ee0ea0ba15cdcfe","ref":"refs/heads/main","pushedAt":"2024-03-11T22:58:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Complete marker input - start time / date\n\nTake in and validate start time ranges in the format HHMM (24h). Also take in and validate dates in the format YYYY-MM-DD with asterisk placeholders for year, month, date allowed e.g. *-12-25 will match any December 25th of any year. Create marker dataclass and pass in the markers by category into it. Add this marker to the config data class. Great!","shortMessageHtmlLink":"Complete marker input - start time / date"}},{"before":"d19dd274d5b273fccbd37bc87c596146b52249b9","after":"3c678e339965ecb98ee48f076ee0594b12c43f4d","ref":"refs/heads/main","pushedAt":"2024-03-11T01:13:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Generalise numeric marker input\n\nExtend distance markers validation to elapsed/moving time, elevation, cadence etc. It works well. Still need to separately handle date/time markers and start time markers. Otherwise looking good.","shortMessageHtmlLink":"Generalise numeric marker input"}},{"before":"1c1cac1992654b5dca6a2d84af10bd8f76081470","after":"d19dd274d5b273fccbd37bc87c596146b52249b9","ref":"refs/heads/main","pushedAt":"2024-03-10T22:33:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Continue config file input\n\nRefine validation for existing fields, add HR zones input (1-5, strictly ascending). Also start the marker input, doing distance markers first. The structure is markers: distance: {dict of markers}, where the dict is in the following format: {marker: array of categories}. See validation code for a better idea. The error messages also help document the code at the same time!","shortMessageHtmlLink":"Continue config file input"}},{"before":"8a23ef0aa4b4405fdbedbe08b8bb5445cd8e0119","after":"1c1cac1992654b5dca6a2d84af10bd8f76081470","ref":"refs/heads/main","pushedAt":"2024-03-10T16:35:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Complete activity data collection\n\nCollect stream data for latitude/longitude and HR where available. Link the BBC Weather scraper project to be able to access weather data collected by a separate program. Also, write a function to determine if an activity should be processed by the program (skipping if false). The criteria are: activity is a run, title is default, description is empty. Outstanding progress.","shortMessageHtmlLink":"Complete activity data collection"}},{"before":"5a6c4f5f8f92a027b46cbbd65b1a9d4cfb7d140c","after":"8a23ef0aa4b4405fdbedbe08b8bb5445cd8e0119","ref":"refs/heads/main","pushedAt":"2024-03-10T01:31:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Start activity data collection\n\nBasic code to query recent activites, fetch details of activities, and provide initial code to extract the data from the response. Still need to handle stream data etc. Not done, but Good start to this functionality. Also include seen activities feature - do not rescan already processed activities based on ID.","shortMessageHtmlLink":"Start activity data collection"}},{"before":"dedf7315ddf6d82a8f91df29a03ec9af9286cf91","after":"5a6c4f5f8f92a027b46cbbd65b1a9d4cfb7d140c","ref":"refs/heads/main","pushedAt":"2024-03-09T00:58:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Complete API auth workflow\n\nThis includes writing code to automatically refresh the access token upon expiration. A bit of integrity also added by storing an integrity hash in the credentials file to prevent modification of the credentials (which may cause malfunctioning).","shortMessageHtmlLink":"Complete API auth workflow"}},{"before":"9cc78dc02a662b3a2ca49c456c18fade8bcbb2c1","after":"dedf7315ddf6d82a8f91df29a03ec9af9286cf91","ref":"refs/heads/main","pushedAt":"2024-03-08T22:27:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Continue API auth progress\n\nComplete oauth authentication process code using flask local server - reasonably stable. Get first time access token - it works! Todo: renew access token as it expires.","shortMessageHtmlLink":"Continue API auth progress"}},{"before":"142e85d05cdd32b0e5f56a52a2f0cf9c13b30680","after":"9cc78dc02a662b3a2ca49c456c18fade8bcbb2c1","ref":"refs/heads/main","pushedAt":"2024-03-07T23:01:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Start project\n\nSome basic config inputs + validation. Start the API process by attempting to perform OAuth locally. Work in progress - API module in a mess right now.","shortMessageHtmlLink":"Start project"}},{"before":null,"after":"142e85d05cdd32b0e5f56a52a2f0cf9c13b30680","ref":"refs/heads/main","pushedAt":"2024-03-07T21:28:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"leoz0214","name":"Leo Zhang","path":"/leoz0214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86931572?s=80&v=4"},"commit":{"message":"Kick off project - write basic README","shortMessageHtmlLink":"Kick off project - write basic README"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEHfASAgA","startCursor":null,"endCursor":null}},"title":"Activity ยท leoz0214/Strava-Running-Name-Automation"}