{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":420171873,"defaultBranch":"master","name":"google_takeout_parser","ownerLogin":"seanbreckenridge","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-10-22T16:37:56.000Z","ownerAvatar":"https://github.com/avatars/u/7804791?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726164894.0","currentOid":""},"activityList":{"items":[{"before":"5d4304da3341c4e91fa536e88449d7c7be5a8c01","after":"6746f9a00315a468193644172fa9502d8a47ea7e","ref":"refs/heads/master","pushedAt":"2024-09-13T05:40:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"chore: remove todo","shortMessageHtmlLink":"chore: remove todo"}},{"before":"60e230e55e4b3a51836f9207c20e167cbe128af2","after":"5d4304da3341c4e91fa536e88449d7c7be5a8c01","ref":"refs/heads/master","pushedAt":"2024-09-12T23:03:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"_parse_semantic_location_history: handle missing placeId in otherCandidateLocations (#71)\n\nshould resolve https://github.com/seanbreckenridge/google_takeout_parser/issues/57","shortMessageHtmlLink":"_parse_semantic_location_history: handle missing placeId in otherCand…"}},{"before":"887ab1f7c2fc023dbc250d4b16f2e464a92827dd","after":"60e230e55e4b3a51836f9207c20e167cbe128af2","ref":"refs/heads/master","pushedAt":"2024-09-12T23:02:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"path dispatch: support both \"Location History\" and \"Location History (Timeline)\" directories (#70)\n\n* path dispatch: support both \"Location History\" and \"Location History (Timeline)\" directories\r\n\r\nin my case, locations were present in\r\n\r\n- `Takeout/Location History/Location History.json` (since at least 2018)\r\n- `Takeout/Location History/Records.json` (circa Apr 2022)\r\n- `Takeout/Location History (Timeline)/Records.json` (circa Feb 2024)\r\n- \"Semantic Location History\" appeared around Jan 2020 and also present under both paths\r\n\r\npartially addresses https://github.com/seanbreckenridge/google_takeout_parser/issues/69","shortMessageHtmlLink":"path dispatch: support both \"Location History\" and \"Location History …"}},{"before":"80efc0555c3f0e82848fcabf568b539832f8ad0b","after":"887ab1f7c2fc023dbc250d4b16f2e464a92827dd","ref":"refs/heads/master","pushedAt":"2024-09-12T20:22:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"autoformat","shortMessageHtmlLink":"autoformat"}},{"before":"5779c8dcd517ba561848ef02489aa77e35990a2d","after":"80efc0555c3f0e82848fcabf568b539832f8ad0b","ref":"refs/heads/master","pushedAt":"2024-09-12T18:14:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"v0.1.11: performance improvements","shortMessageHtmlLink":"v0.1.11: performance improvements"}},{"before":"a3a402a49624ae16f57c592e0d6daff99a2295a4","after":"5779c8dcd517ba561848ef02489aa77e35990a2d","ref":"refs/heads/master","pushedAt":"2024-09-12T08:18:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"optimizations for GoogleEventSet, speeding up merging 20+% (#68)\n\n- add `add_if_not_present` method to avoid computing key twice (which is quite expensive!)\r\n\r\n This is intended to be used as a replacement for (e.g. in HPI)\r\n\r\n ```\r\n if event in emitted:\r\n continue\r\n emitted.add(event)\r\n yield event\r\n ```\r\n\r\n With this method, we could rewrite as:\r\n\r\n ```\r\n if emitted.add_if_not_present(event):\r\n yield event\r\n ```\r\n\r\n This could be introduced to hpi with backwards compatibility.\r\n\r\n- use type directly as key, types are hashable (very tiny speedup, but it also feels more natural anyway","shortMessageHtmlLink":"optimizations for GoogleEventSet, speeding up merging 20+% (#68)"}},{"before":"b79f5b3851c4e50ebd684c663d3c724cdcd2e594","after":"a3a402a49624ae16f57c592e0d6daff99a2295a4","ref":"refs/heads/master","pushedAt":"2024-09-11T01:44:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"parse_json._parse_location_history: speedup parsing about 50% (#67)\n\n* parse_json._parse_location_history: speedup parsing about 50%\r\n\r\n- use orjson (add as an optional dep) if it's available with fallback to builtin json\r\n- use builtin fromisoformat from python 3.11, it's much faster (and simpler!)\r\n\r\n- before:\r\n - parsing json 9.6s\r\n - processing data: 7.0s\r\n- after\r\n - parsing json: 5.7s\r\n - processing data: 3.1s\r\n\r\n---------\r\n\r\nCo-authored-by: Sean Breckenridge ","shortMessageHtmlLink":"parse_json._parse_location_history: speedup parsing about 50% (#67)"}},{"before":"9aea89ffeae29246c9c6e27a62dd9fad13b17abc","after":"b79f5b3851c4e50ebd684c663d3c724cdcd2e594","ref":"refs/heads/master","pushedAt":"2024-09-11T01:36:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"parse_html.activity: about 30% speedup for html parsing (#66)\n\nA few optimizations\r\n- using `.find` instead of `.select` is faster since it's not using CSS selectors\r\n- using `SoupStrainer` is faster since it only does partial parsing and avoids materializing parts of soup we don't actually use\r\n\r\nMeasurements on a big `Chrome/MyActivity.html` file\r\n\r\n- before\r\n - parsing (up to for loop over `outer_divs`: 17s\r\n - processing (everything in for loop): 16s\r\n\r\n- after\r\n - parsing: 13s\r\n - procesing: 11s","shortMessageHtmlLink":"parse_html.activity: about 30% speedup for html parsing (#66)"}},{"before":"a8aefac76d8e1474ca2275b4a7c78bbb962c7a04","after":"9aea89ffeae29246c9c6e27a62dd9fad13b17abc","ref":"refs/heads/master","pushedAt":"2024-05-08T23:53:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"doc updates","shortMessageHtmlLink":"doc updates"}},{"before":"f773bb65a12ca5e5bab72a03faf7f42bd00beeb1","after":"a8aefac76d8e1474ca2275b4a7c78bbb962c7a04","ref":"refs/heads/master","pushedAt":"2024-03-10T06:12:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"v0.1.10: add helpers for parsing csv youtube comments","shortMessageHtmlLink":"v0.1.10: add helpers for parsing csv youtube comments"}},{"before":"bb075f6ff317358504b68e96681df45b8f00eeec","after":"f773bb65a12ca5e5bab72a03faf7f42bd00beeb1","ref":"refs/heads/master","pushedAt":"2024-03-05T20:02:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"remove misleading comment","shortMessageHtmlLink":"remove misleading comment"}},{"before":"821b52f8f56544e1eed15ff781ebca3306ce50f4","after":"bb075f6ff317358504b68e96681df45b8f00eeec","ref":"refs/heads/master","pushedAt":"2024-03-05T03:48:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"update takeout examples","shortMessageHtmlLink":"update takeout examples"}},{"before":"65d62ce415e3d525992519f4f0561d8c7464cdc9","after":"821b52f8f56544e1eed15ff781ebca3306ce50f4","ref":"refs/heads/master","pushedAt":"2024-02-29T07:50:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"add helper functions to parse csv comment JSON","shortMessageHtmlLink":"add helper functions to parse csv comment JSON"}},{"before":"49739152005f8be2915dc1e51c87707a29226ef0","after":"65d62ce415e3d525992519f4f0561d8c7464cdc9","ref":"refs/heads/master","pushedAt":"2024-02-11T02:47:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"docs: link to chat JSON blob issue","shortMessageHtmlLink":"docs: link to chat JSON blob issue"}},{"before":"fccd8bea9e5522a4529d4a319c2bd419a71334ba","after":"49739152005f8be2915dc1e51c87707a29226ef0","ref":"refs/heads/master","pushedAt":"2024-02-11T01:45:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"v0.1.9: add CSV youtube/live chat parsing","shortMessageHtmlLink":"v0.1.9: add CSV youtube/live chat parsing"}},{"before":"372f002cdf1ed2ceea070dde788075dbb2085c05","after":null,"ref":"refs/heads/youtube-chats-csv","pushedAt":"2024-02-11T01:42:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"}},{"before":"78a2c5dddd6f4e68f9e5ae3533396ab70aaa6273","after":"fccd8bea9e5522a4529d4a319c2bd419a71334ba","ref":"refs/heads/master","pushedAt":"2024-02-11T01:42:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"add csv youtube/live chat parsing (#63)","shortMessageHtmlLink":"add csv youtube/live chat parsing (#63)"}},{"before":null,"after":"372f002cdf1ed2ceea070dde788075dbb2085c05","ref":"refs/heads/youtube-chats-csv","pushedAt":"2024-02-11T01:38:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"add csv youtube/live chat parsing","shortMessageHtmlLink":"add csv youtube/live chat parsing"}},{"before":"9cfdba930a4ab42828fd245081ab15a9047a5795","after":null,"ref":"refs/heads/v0.1.8","pushedAt":"2024-01-30T05:36:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"}},{"before":"ccc169207922558f16f372c3629a3a3ad14dcbd4","after":"78a2c5dddd6f4e68f9e5ae3533396ab70aaa6273","ref":"refs/heads/master","pushedAt":"2024-01-30T05:36:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"v0.1.8: bump required cachew version (#61)","shortMessageHtmlLink":"v0.1.8: bump required cachew version (#61)"}},{"before":null,"after":"9cfdba930a4ab42828fd245081ab15a9047a5795","ref":"refs/heads/v0.1.8","pushedAt":"2024-01-30T05:33:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"v0.1.8: bump required cachew version","shortMessageHtmlLink":"v0.1.8: bump required cachew version"}},{"before":"e6aebe490272f6cd9b240b3cd0e753ad1ea2264e","after":"ccc169207922558f16f372c3629a3a3ad14dcbd4","ref":"refs/heads/master","pushedAt":"2024-01-24T17:23:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"add missing assert to test","shortMessageHtmlLink":"add missing assert to test"}},{"before":"b9e47beebffcdb0e47c5af2985acd61a3ce7f9ca","after":"e6aebe490272f6cd9b240b3cd0e753ad1ea2264e","ref":"refs/heads/master","pushedAt":"2024-01-04T06:43:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"v0.1.7: update supported files for DE locale","shortMessageHtmlLink":"v0.1.7: update supported files for DE locale"}},{"before":"6561a6a4c89fc75766e83f624fb1a50fc4700b91","after":"b9e47beebffcdb0e47c5af2985acd61a3ce7f9ca","ref":"refs/heads/master","pushedAt":"2024-01-04T06:00:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"Update de locale (#59)\n\n* add additional paths for DE locale\r\n* update folder names\r\n* skip locale check on windows\r\n\r\n---------\r\n\r\nCo-authored-by: Sean Breckenridge ","shortMessageHtmlLink":"Update de locale (#59)"}},{"before":"23364a9684541b94564a9ed68f4bd6aee02b6adb","after":"6561a6a4c89fc75766e83f624fb1a50fc4700b91","ref":"refs/heads/master","pushedAt":"2023-11-07T21:25:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"location history: make some fields optional (often missing in pre-2015 history) (#56)","shortMessageHtmlLink":"location history: make some fields optional (often missing in pre-201…"}},{"before":"5e13bde65c7c99e39319e8715d5224625a149709","after":"23364a9684541b94564a9ed68f4bd6aee02b6adb","ref":"refs/heads/master","pushedAt":"2023-11-05T22:13:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"test: skip if input file doesnt exist","shortMessageHtmlLink":"test: skip if input file doesnt exist"}},{"before":"8e54b1b7408d66e23cc2be3dad4f8e989d1fa182","after":"5e13bde65c7c99e39319e8715d5224625a149709","ref":"refs/heads/master","pushedAt":"2023-11-03T20:23:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"fix testing instructions","shortMessageHtmlLink":"fix testing instructions"}},{"before":"2572ce0554c70f6bfe3c0d7d01afd8de82d1d94f","after":"8e54b1b7408d66e23cc2be3dad4f8e989d1fa182","ref":"refs/heads/master","pushedAt":"2023-10-30T15:56:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"remove useless test","shortMessageHtmlLink":"remove useless test"}},{"before":"30f7fd6c145cf16628a52b80b1e32c779b88a926","after":"2572ce0554c70f6bfe3c0d7d01afd8de82d1d94f","ref":"refs/heads/master","pushedAt":"2023-10-26T22:39:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"nicer error message for mismatched locales","shortMessageHtmlLink":"nicer error message for mismatched locales"}},{"before":"d6f83b637a12fa25b5ab44af14f1c47876a4bdc4","after":"30f7fd6c145cf16628a52b80b1e32c779b88a926","ref":"refs/heads/master","pushedAt":"2023-10-26T20:31:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"seanbreckenridge","name":null,"path":"/seanbreckenridge","primaryAvatarUrl":"https://github.com/avatars/u/7804791?s=80&v=4"},"commit":{"message":"mark pure function for interal use","shortMessageHtmlLink":"mark pure function for interal use"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEtR1ppAA","startCursor":null,"endCursor":null}},"title":"Activity · seanbreckenridge/google_takeout_parser"}