{"id":28000381,"url":"https://github.com/swedishmike/twitter_dm_parser","last_synced_at":"2025-10-13T12:40:51.450Z","repository":{"id":291762818,"uuid":"222906153","full_name":"swedishmike/twitter_dm_parser","owner":"swedishmike","description":"A Jupyter Notebook that helps you import and parse DM's from a Twitter backup","archived":false,"fork":false,"pushed_at":"2019-11-20T16:05:00.000Z","size":23,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-21T00:43:07.670Z","etag":null,"topics":["jupyter-notebook","osint","osint-python","python","twitter"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","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/swedishmike.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":"2019-11-20T09:59:24.000Z","updated_at":"2025-07-24T10:55:02.000Z","dependencies_parsed_at":"2025-05-06T12:50:51.649Z","dependency_job_id":"1cc0c079-5904-40d1-a10c-668664602bcf","html_url":"https://github.com/swedishmike/twitter_dm_parser","commit_stats":null,"previous_names":["swedishmike/twitter_dm_parser"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/swedishmike/twitter_dm_parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swedishmike%2Ftwitter_dm_parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swedishmike%2Ftwitter_dm_parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swedishmike%2Ftwitter_dm_parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swedishmike%2Ftwitter_dm_parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swedishmike","download_url":"https://codeload.github.com/swedishmike/twitter_dm_parser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swedishmike%2Ftwitter_dm_parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015055,"owners_count":26085643,"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-10-13T02:00:06.723Z","response_time":61,"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":["jupyter-notebook","osint","osint-python","python","twitter"],"created_at":"2025-05-08T23:16:49.831Z","updated_at":"2025-10-13T12:40:51.429Z","avatar_url":"https://github.com/swedishmike.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Twitter DM Parser\n\n### Background\nFor, _ahem_, a specific reason I found myself wanting/needing to be able to import DM data from a Twitter backup.\n\nThe file format was a bit weird, it looked a bit like Json but it wouldn't import straight in like that.\n\nFirst I tried to ask for help on [Twitter](https://twitter.com/swedishmike/status/1196750124636147712) but that didn't really work out so I went Googling...\n\nI found the following [blog](http://www.farleyforensics.com/2018/10/01/twitter-archive-parser-analysis/) which lead me the the accompanying [GitHub Repo](https://github.com/jfarley248/Twitter-Archive-Parser).\n\nThe code was for Python 2 and I also wanted to get this into a Pandas dataframe for further analysis and data wrangling so I happily stole the code and changed it to suit my needs. Another decision I made was to move it into a Jupyter Notebook in order to be able to play with data on the fly a bit easier.\n\nBig thanks to [Jack Farley](https://twitter.com/jackfarley248) for the original idea and code!\n\n### What does it do?\nNot much really. But what it does do it seems to do fairly well.\n\nIt will parse the **direct-message.js** and **direct-message-group.js** files from a Twitter backup. The end product(s) you'll end up with are the combined data in a Pandas dataframe as well as in a exported csv file.\n\nIt also will try and match the Twitter ID's to the correct account name.\n\nThe location of the archive files as well as the name and location of the exported csv file are defined as variables in the Notebook so you can customise that fairly easily.\n\n### Feedback\n\nIf you have any feedback/bugs/improvements etc - open an Issue here on Github or submit a pull request. As we all know: _Sharing is caring!_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswedishmike%2Ftwitter_dm_parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswedishmike%2Ftwitter_dm_parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswedishmike%2Ftwitter_dm_parser/lists"}