{"id":13621209,"url":"https://github.com/PetengDedet/WhatsApp-Analyzer","last_synced_at":"2025-04-15T01:31:38.229Z","repository":{"id":39642022,"uuid":"163696506","full_name":"PetengDedet/WhatsApp-Analyzer","owner":"PetengDedet","description":"Analyze Whatsapp chat","archived":false,"fork":false,"pushed_at":"2023-08-31T16:32:51.000Z","size":1142,"stargazers_count":214,"open_issues_count":5,"forks_count":45,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-09T12:06:28.878Z","etag":null,"topics":["chat-analysis","whatsapp","whatsapp-analysis","whatsapp-analytics","whatsapp-analyzer","whatsapp-chat","whatsapp-chat-parser","whatsapp-parser","whatsapp-statistics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PetengDedet.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}},"created_at":"2018-12-31T20:44:51.000Z","updated_at":"2025-03-29T19:42:38.000Z","dependencies_parsed_at":"2022-07-29T02:19:07.737Z","dependency_job_id":"727e9bef-9b7b-42e7-ba24-a26aba1be4ff","html_url":"https://github.com/PetengDedet/WhatsApp-Analyzer","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/PetengDedet%2FWhatsApp-Analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PetengDedet%2FWhatsApp-Analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PetengDedet%2FWhatsApp-Analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PetengDedet%2FWhatsApp-Analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PetengDedet","download_url":"https://codeload.github.com/PetengDedet/WhatsApp-Analyzer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248989221,"owners_count":21194548,"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":["chat-analysis","whatsapp","whatsapp-analysis","whatsapp-analytics","whatsapp-analyzer","whatsapp-chat","whatsapp-chat-parser","whatsapp-parser","whatsapp-statistics"],"created_at":"2024-08-01T21:01:03.606Z","updated_at":"2025-04-15T01:31:37.965Z","avatar_url":"https://github.com/PetengDedet.png","language":"Python","funding_links":["https://www.buymeacoffee.com/PetengDedet"],"categories":["W"],"sub_categories":[],"readme":"# WhatsApp-Analyzer\nAnalyze WhatsApp chat\n\nThe script reads an exported WhatsApp chat and then extracts the data. You may need to install some packages before running it.\n\n##### Supported Analysis\n----------------------\n- Chat Count\n- Chat Average\n- Member/Sender Rank\n- Website/URL/Link Domain Rank\n- Word Count and Rank\n- Most Used Word by Sender\n- Emoji Usage Rank\n- Most Used Emoji by Sender\n- Timestamp Heatmap\n- Attachment Classification (In Android, there is no difference pattern for attachment. But in iOS we can actually classify between Image, Video, Audio, GIF, Sticker, Document and Contact Card)\n\n### Preview\n----------------------\n- Sender Rank\n![Sender rank](https://i.imgur.com/5MnQRhV.png)\n- Domain rank\n![Domain rank](https://i.imgur.com/jASt34p.png)\n- Word Rank\n![Word rank](https://i.imgur.com/NmfWGSa.png)\n- Most used word by sender\n![Most used word by sender](https://i.imgur.com/GdtzLFy.png)\n- Emoji rank\n![Emoji rank](https://i.imgur.com/PqCVcej.png)\n- Most used emoji by sender\n![Most used emoji by sender](https://i.imgur.com/DauFsMx.png)\n- Chat activity heatmap\n![Heatmap](https://i.imgur.com/6KyNJF2.png)\n\n### Requirements\n----------------------\n- Python 3.6+\n```python\npip install -r requirements.txt\n```\n### Usage\n----------------------\n```\n$ git clone https://github.com/PetengDedet/WhatsApp-Analyzer.git\n\n$ cd WhatsApp-Analyzer\n$ python whatsapp_analyzer.py chat_example.txt --stopword indonesian \n```\n\n```shell\nusage: python whatsapp_analyzer.py FILE [-h] [-d] [-s] [-c]\n\nRead and analyze whatsapp chat\n\npositional arguments:\n  FILE                  Chat file path\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -d, --debug           Debug mode. Shows details for every parsed line.\n  -s , --stopword       Stop Words: A stop word is a commonly used word (such\n                        as 'the', 'a', 'an', 'in'). In order to get insightful\n                        most common word mentioned in the chat, we need to\n                        skip these type of word. The Allowed values are:\n                        arabic, bulgarian, catalan, czech, danish, dutch,\n                        english, finnish, french, german, hebrew, hindi,\n                        hungarian, indonesian, italian, malaysian, norwegian,\n                        polish, portuguese, romanian, russian, slovak,\n                        spanish, swedish, turkish, ukrainian, vietnamese\n  -c , --customstopword \n                        Custom Stop Words. File path to stop word. File must a\n                        raw text. One word for every line\n```\n### Stop Words\n----------------------\nI've included stop words for several languages from https://github.com/Alir3z4/stop-words.\nYou can use your own stop word file.\nJust use `-c` argument followed by filepath.\nOne word for each file like below\n```\nable\nableabout\nabout\nabove\nabroad\nabst\n```\n\n\n### Notes\n----------------------\n- This script uses regex to extract the data.\n- Currently supports the chat pattern below:\n ```python\n    \"14/10/18, 11:16 - Contact Name: this is a message\"\n    \"2/30/18, 2:07 AM - Contact Name:  Test👌\"\n    \"[30/12/18 4.59.25 PM] Nama User: 🙏test\"\n    \"[06/07/17 13.23.30] ‪+62 123-456-78910‬: image omitted\"\n  ```\n- Some date formats may not be supported\n\n\n## Flowchart\n----------------------\nDescribe how the script identify and classify the chat\n```\n           +------------------+\n      +----+    Empty line?   +----+\n      |    +------------------+    |\n      |                            |\n      |                            |\n  +---v---+                   +----v---+\n  |  Yes  | +-----------------+   No   |\n  +-------+ |                 +---+----+\n            |                     |\n  +---------+-+             +-----v-----+\n  | Event Log |        +----+    Chat   +----+\n  +-----------+        |    +-----------+    |\n                       |                     |\n                +------v-----+         +-----v------+   +--------------------+\n          +-----+Regular Chat+----+    | Attachment +--\u003e+ Clasify Attachment |\n          |     +------------+    |    +------------+   +-------+------------+\n          v                       v                             |\n+---------+---------+   +---------+----------+                  |\n|   Starting Line   |   |   Following Line   |                  |\n+------+------------+   +-+------------------+                  |\n       |                  |                                     |\n       |                  |                                     |\n       |           +------v-------+                             |\n       |           | COUNTER      |                             |\n       |           | 1 Chat       |                             |\n       +----------\u003e+ 2 Timestamp  +\u003c----------------------------+\n                   | 3 Sender     |\n                   | 4 Domain     |\n                   | 5 Words      |\n                   | 6 Attachment |\n                   | 7 Emoji      |\n                   +-----+--------+\n                         |\n                         |\n                         |\n                         v\n              +----------+----------------+\n              |          Visualize        |\n              +---------------------------+\n```\n\n\n### Getting chat source\n#### Android:\n- Open a chat/group chat\n- Tap on three dots on the top right\n- Tap \"More\"\n- Choose \"Export chat\"\n- Choose \"Without Media\"\n\n#### iOS\n- Open a chat/group chat\n- Tap on contact name/group name on the top to see the details\n- Scroll down to find \"Export Chat\" menu\n- Choose \"Without Media\"\n\n## Other Tech Port\n----------------------\n- Web: Coming soon\n- Jupyter Notebook: Coming soon\n- NodeJS: Coming soon\n\n### Help Needed\n----------------------\n- Need contributor to rearrange directory structure to match python best practice.\n- iOS exported example needed \n\n#### Buy me a coffee\n\u003ca href=\"https://www.buymeacoffee.com/PetengDedet\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/lato-orange.png\" alt=\"Buy Me A Coffee\" style=\"height: 22px !important;\" \u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPetengDedet%2FWhatsApp-Analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPetengDedet%2FWhatsApp-Analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPetengDedet%2FWhatsApp-Analyzer/lists"}