{"id":30216023,"url":"https://github.com/entorb/analyze-activities","last_synced_at":"2026-04-13T02:02:06.566Z","repository":{"id":296625796,"uuid":"993877787","full_name":"entorb/analyze-activities","owner":"entorb","description":"merge activity data from git, calendar, strava into a single json report, for LLM parsing","archived":false,"fork":false,"pushed_at":"2025-07-06T11:26:18.000Z","size":51,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-06T12:32:21.910Z","etag":null,"topics":["ai","calendar","deepseek","diary","git","journal","lama","llm","ollama","oura","strava"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/entorb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-31T18:03:21.000Z","updated_at":"2025-07-06T11:26:21.000Z","dependencies_parsed_at":"2025-07-06T12:28:25.018Z","dependency_job_id":"a48b96c6-fc59-4639-9529-2413fa32013c","html_url":"https://github.com/entorb/analyze-activities","commit_stats":null,"previous_names":["entorb/analyze-activities"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/entorb/analyze-activities","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Fanalyze-activities","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Fanalyze-activities/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Fanalyze-activities/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Fanalyze-activities/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/entorb","download_url":"https://codeload.github.com/entorb/analyze-activities/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Fanalyze-activities/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270352346,"owners_count":24569498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","calendar","deepseek","diary","git","journal","lama","llm","ollama","oura","strava"],"created_at":"2025-08-14T02:43:48.736Z","updated_at":"2026-04-13T02:02:06.554Z","avatar_url":"https://github.com/entorb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# analyze-activities\n\nactivity data from different hobbies/source are converted into a common json format:\nkey: date, value=list(title)\n\n```json\n{\n  \"2025-01-01\": [\n    \"00:00 New Year\",\n    \"09:47 Wake up\",\n    \"09:34 Jogging in the Snow (65 min)\",\n    \"Some text without a time.\"\n  ]\n}\n```\n\n## Calender appointments\n\n1. export your calendar in ics format to `data/cal.ics`\n2. run [cal.py](src/cal.py) to convert into `output/cal.json`\n\nformat: `HH:MM TITLE`\n\n## Git commits\n\nAssuming all your local git repositories are in the same directory that this clone.\n\n1. run [git_1_export_history.sh](src/git_1_export_history.sh) to extract commit data from all local repos to `data/git/*.log`\n2. run [git_2.py](src/git_2.py) to convert into  `output/git.json`\n\nformat: `HH:MM Coding at REPO: COMMIT_TITLE`\n\n## LifeLog (Diary/Journal)\n\nIf you write a free text diary.\n\n1. copy/paste from source document to `data/lifelog.md`\n2. run [lifelog.py](src/lifelog.py) to convert into `output/lifelog.json`\n\n## Oura ring sleep times\n\nIf you have an [Oura ring](https://ouraring.com) device, to measure you sleep.\n\n1. download [sleep.csv](https://cloud.ouraring.com/account/export/sleep/csv) to `data/oura/sleep.csv`\n2. or use my [Oura download script](https://github.com/entorb/analyze-oura)\n3. run [oura.py](src/oura.py) to convert into `output/oura.json`\n\nformat: `HH:MM Start sleep` and `HH:MM Wake up`\n\n## Strava activities\n\nIf you are using [Strava](https://www.strava.com) to share you sports activities.\n\n1. export ics list of activities via my [Strava analysis app](https://entorb.net/strava-streamlit/) -\u003e \"Cal Export\" to `data/strava/Strava_Activity_Calendar.ics`\n2. run [strava.py](src/strava.py) to convert into `output/strava.json`\n\nformat: `HH:MM TYPE: TITLE (MINUTES)`\n\n## Remember the Milk (To-do list)\n\nIf you are organizing your tasks via [Remember the Milk](https://www.rememberthemilk.com).\n\n1. from my [rememberthemilk](https://github.com/entorb/rememberthemilk/) repo, run [tasks_completed.py](https://github.com/entorb/rememberthemilk/blob/main/src/tasks_completed.py)\n2. copy/pase from source to `data/rtm_tasks_completed.csv`\n3. run [rtm.py](src/rtm.py) to convert into `output/rtm.json`\n\nformat: `HH:MM Task LIST: TITLE (ESTIMATION)`\n\n## Join all\n\nrun [join.py](src/join.py) to generate `output/join.json`\n\n## Run all\n\nrun [run-all.sh](src/run-all.sh) to do all in one step\n\n## Tools\n\n### Pytest unit tests\n\n```sh\nuv run pytest tests/ --cov --cov-report=html:coverage_report\n```\n\n### Ruff formatter and linter\n\n```sh\nuv run ruff format\nuv run ruff check --fix\n```\n\n### Pre-commit code checker\n\n(also runs Ruff and CSpell)\n\n```sh\nuv run pre-commit run --all-files\n```\n\n### GitHub Action Workflow\n\n[check.yml](.github/workflows/check.yml) runs pytest, pre-commit, sonarqube\n\n### SonarQube Code Analysis\n\nSee report at [sonarcloud.io](https://sonarcloud.io/summary/overall?id=entorb_analyze-activities\u0026branch=main)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentorb%2Fanalyze-activities","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fentorb%2Fanalyze-activities","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentorb%2Fanalyze-activities/lists"}