{"id":17760535,"url":"https://github.com/fuco1/hangouts-reader","last_synced_at":"2026-04-29T19:03:24.697Z","repository":{"id":150147592,"uuid":"149360697","full_name":"Fuco1/hangouts-reader","owner":"Fuco1","description":"CLI utility to parse Google Hangouts Takeout data","archived":false,"fork":false,"pushed_at":"2019-10-17T21:58:32.000Z","size":30,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-30T17:49:58.233Z","etag":null,"topics":["google","hangouts","haskell","json","takeout"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fuco1.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}},"created_at":"2018-09-18T22:41:36.000Z","updated_at":"2019-10-17T21:58:34.000Z","dependencies_parsed_at":"2023-04-09T12:14:53.591Z","dependency_job_id":null,"html_url":"https://github.com/Fuco1/hangouts-reader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fuco1/hangouts-reader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fhangouts-reader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fhangouts-reader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fhangouts-reader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fhangouts-reader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fuco1","download_url":"https://codeload.github.com/Fuco1/hangouts-reader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fhangouts-reader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32439302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["google","hangouts","haskell","json","takeout"],"created_at":"2024-10-26T19:04:24.489Z","updated_at":"2026-04-29T19:03:24.669Z","avatar_url":"https://github.com/Fuco1.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hangouts-reader\n\nLittle CLI utility for parsing Google Hanougts Takeout json data.\n\n# Installation\n\nBuild with `stack install`.  This will install a system-wide binary\n`hangouts-reader` if your stack `.bin` directory is on the\n`$PATH`.  Otherwise refer to stack documentation.\n\n# Usage\n\nThe simplest way to use this is to pipe in the json data:\n\n``` shell\ncat Hangouts.json | hangouts-reader | less\n```\n\nYou can also store the processed output in a file for faster access:\n\n``` shell\ncat Hangouts.json | hangouts-reader \u003e hangouts-processed-data.txt\n```\n\nThe application provides several output formats listed below.\n\n## Line output\n\nThe output format is \"line-friendly\" so you can use `grep`, `awk` or\nwhatever else for filtering.  Fields are separated by tabs.  It is\nreasonably fast to just parse everything everytime (the parsed output\nis about 10 times smaller than the input file).\n\nOutput is prefixed with a list of all conversations and participants\nwith the format\n\n    conversationId\tparticipant1, participant2, ...\n\nfollowed by an empty line.  Then follows the conversation data\n(messages).  The messages printed are in the format:\n\n    conversationId\ttime\tauthor\tmessage\n\nThey are grouped by conversation and ordered by message time from the\noldest message per conversation at the top.  The conversatiosn are in\nno particular order.\n\n# Helpers\n\nThe helper script `parse.sh` can be used to operate on the transformed\ndata.  The first argument is name of the person in the conversation\n(first conversation with this name will be picked), the second is the\ndata file.  For example, if you want to print your conversation with\nEmily, use it as so:\n\n``` shell\n./parse.sh Emily hangouts-processed-data.txt\n```\n\nThis assumes there is only one conversation where Emily is present,\notherwise it picks the first one.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuco1%2Fhangouts-reader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuco1%2Fhangouts-reader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuco1%2Fhangouts-reader/lists"}