{"id":20913825,"url":"https://github.com/phikal/wastat","last_synced_at":"2025-05-13T09:31:23.157Z","repository":{"id":88443666,"uuid":"53207967","full_name":"phikal/wastat","owner":"phikal","description":"WhatsApp statistics toolkit mirror","archived":false,"fork":false,"pushed_at":"2019-03-24T21:11:03.000Z","size":158,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T22:03:06.649Z","etag":null,"topics":["gnuplot","plot","whatsapp","whatsapp-statistics"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phikal.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":"2016-03-05T15:25:26.000Z","updated_at":"2022-07-20T14:51:37.000Z","dependencies_parsed_at":"2023-03-13T18:24:35.424Z","dependency_job_id":null,"html_url":"https://github.com/phikal/wastat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phikal%2Fwastat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phikal%2Fwastat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phikal%2Fwastat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phikal%2Fwastat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phikal","download_url":"https://codeload.github.com/phikal/wastat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253913068,"owners_count":21983249,"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","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":["gnuplot","plot","whatsapp","whatsapp-statistics"],"created_at":"2024-11-18T15:22:56.071Z","updated_at":"2025-05-13T09:31:23.130Z","avatar_url":"https://github.com/phikal.png","language":"Shell","readme":"Wastat\n======\n\nWastat is a toolkit for analysing whatsapp chats, creating statistics\nand plotting pretty graphs.\n\nSetup\n=====\n\nIt is assumed that you are using a *nix system, such as Linux, a BSD or\nMacOS. You will require a POSIX compatible shell, perl, [AWK] and\n[Gnuplot]. Basic acquaintance with shell operations is also expected.\nGnuplot is not required if the user doesn't wish to create plots.\n\nTo work with a chat, one first has to receive in in Email format. Later\non, it might be possible to extract the necessary information from a\nSQLite database, which one can access when one's phone is rooted. Refer\nto the official WhatsApp FAQ to find out how to [Email a chat].\n\nOne should note that WhatsApp doesn't always allow exporting the full\nchat, due to the extension sizes. This is an external limitation this\nproject can't do anything about.\n\nParts\n=====\n\n`waconv`\n--------\n\nSince different whatsapp versions using different languages export chats\nin different ways, in a generally inconvenient format, the `waconv`\nscript standardizes different formats into a simple to parse [TSV]\nstructure. This means, that tools like [AWK] can easily process the\nchat structure from now on (`waextr` for example).\n\nCurrently, three different formats are recognized, with the following\nassociated codes:\n\n| Format | Code  | Date         | Time           |\n|--------|-------|--------------|----------------|\n| US     | `uk`  | `MM/DD/YYYY` | `AM/AM`        |\n| UK     | `uk`  | `DD/MM/YYYY` | `A.M./P.M.`    |\n| German | `de`  | `DD/MM/YYYY` | `vorm./nachm.` |\n\nSome of these might be out of date with newer versions, and will will be\nupdated with newer versions, as soon as possible.\n\nTo actually process a file, made up of lines like these (ie. the `uk`\nformat):\n\n\n\t24/01/2018, 9:49 p.m. - Faust: What meaning to these riddling words applies?\n\t24/01/2016, 10:20 p.m. - Mephisto: I am the spirit, ever, that denies!\n\tAnd rightly so: since everything created\n\tIn turn deserves the be annihilated.\n\none would write `./waconv uk [chatfile]`, and redirect the output. The\nabove example would thus become:\n\n\t24/01/2018\t21:49\tfaust\twhat meaning to these riddling words applies\n\t24/01/2016\t22:20\tmephisto\ti am the spirit ever that denies  and rightly so since everything created in turn deserves the be annihilated\n\nThis step is necessary if one wants to work with the following two tools.\n\n`waextr`\n--------\n\n`Waextr` is basically just a helper script for `wastat`. It requires one\nargument, which may contain one of the following letter, to enable the\noutput of certain columns. These are: `d` (to output the date), `t` (to\noutput the times), `u` (to output the user) and `m` (to update the\nmessages). So for example `waextr dm [chatfile]`, processing the example\nfrom above, would output:\n\n\t24/01/2018\tfaust\n\t24/01/2016\tmephisto\n\nIf one executes `wastat` using awk, setting the `usern` variable, only\nthose lines will be printed, if the value matches the name. Hence, to output\n\n\t24/01/2018\twhat meaning to these riddling words applies\n\none would run `awk -v usern=faust -f waextr dm`.\n\n`wastat`\n--------\n\nThis main script has multiple commands, and overview can be generated if\nit is called without any arguments or by calling the script with the\nargument `help`. The same list is also presented here:\n\n- `wastat wc`: counts how often words have been used in messages\n- `wastat wo`: prints all words used in messages, each on one line\n- `wastat uc`: counts how often a _user_ (ie. number) has sent a message\n- `wastat uwc`: counts how many \"words\" each user has used\n- `wastat pt`: plots how many messages have been sent per minute\n- `wastat put`: plots how many messages selected users have sent per\n  minute\n- `wastat pd`: plots how many messages have been sent each day\n- `wastat pud`: plots how many messages have been sent by selected users\n  each day\n\nThe axillary command `wastat clean` deletes all files and images\ngenerated by wastat.\n\nexamples\n--------\n\n- `wastat pt`:\n\n\t![`pt`](./.example_pt.png)\n- `wastat pd`:\n\n\t![`pd`](./.example_pd.png)\n\nLegal and other information\n===========================\n\nThis software has been placed into the public domain, or an approximation\nof it, under [CC0]. If there are any issues with the\nsoftware, contact the [author] or visit the [GitHub repository].\n\nThe chat extract from this document has been taken from A. S. Kline's\n[English Translation] of J. W. Goethe's _Faust_.\n\n[AWK]: https://en.wikipedia.org/wiki/AWK\n[Gnuplot]: http://www.gnuplot.info/\n[Email a chat]: https://faq.whatsapp.com/en/android/23756533/\n[TSV]: https://en.wikipedia.org/wiki/Tab-separated_values\n[CC0]: ./LICENSE\n[author]: https://dyst.ax.lt/~xat/\n[GitHub repository]: https://github.com/phikal/wastat\n[English Translation]: https://www.poetryintranslation.com/klinesfaust.php\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphikal%2Fwastat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphikal%2Fwastat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphikal%2Fwastat/lists"}