{"id":19353540,"url":"https://github.com/elldritch/tweetogram","last_synced_at":"2026-07-11T00:32:16.787Z","repository":{"id":147785484,"uuid":"412997729","full_name":"elldritch/tweetogram","owner":"elldritch","description":"Show interesting statistics about your tweets and likes.","archived":false,"fork":false,"pushed_at":"2022-03-08T18:27:37.000Z","size":92,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-29T17:49:09.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elldritch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"2021-10-03T06:38:54.000Z","updated_at":"2021-10-24T09:37:24.000Z","dependencies_parsed_at":"2023-05-27T13:00:13.694Z","dependency_job_id":null,"html_url":"https://github.com/elldritch/tweetogram","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/elldritch/tweetogram","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elldritch%2Ftweetogram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elldritch%2Ftweetogram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elldritch%2Ftweetogram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elldritch%2Ftweetogram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elldritch","download_url":"https://codeload.github.com/elldritch/tweetogram/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elldritch%2Ftweetogram/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35347554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"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":[],"created_at":"2024-11-10T04:43:13.301Z","updated_at":"2026-07-11T00:32:16.778Z","avatar_url":"https://github.com/elldritch.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tweetogram\n\nTweetogram shows interesting statistics about your tweets and likes.\n\n## Usage\n\n### Quickstart\n\n```sh\n# First, download your tweets. This is a separate step because Twitter's API has\n# a really strict rate limit, so we download tweets first and then operate on\n# downloaded tweets.\n\n# Make a directory to hold the downloaded tweets.\nmkdir /tmp/tweetogram\n\n# Run the downloader. Use your own API keys and access tokens here. Use\n# https://developer.twitter.com/en/portal/dashboard to get your own set of keys.\ncabal run tweetogram -- download \\\n  --twitter-consumer-api-key AAAA \\\n  --twitter-consumer-api-key-secret BBBB \\\n  --twitter-access-token CCCC \\\n  --twitter-access-token-secret DDDD \\\n  --twitter-username YOUR_USERNAME \\\n  --data-dir /tmp/tweetogram\n\n# Now you can display interesting data about your tweets.\ncabal run tweetogram -- query likes --data-dir /tmp/tweetogram\ncabal run tweetogram -- query activity --data-dir /tmp/tweetogram\n```\n\n### Commands\n\nFor more options, see `--help`:\n\n```\n$ cabal run tweetogram -- --help\nUsage: tweetogram COMMAND\n  Compute statistics about your tweets\n\nAvailable options:\n  -h,--help                Show this help text\n\nAvailable commands:\n  download                 Download your tweets\n  query                    Show statistics about your tweets\n```\n\n#### Download tweets\n\n```\n$ cabal run tweetogram -- download --help\nUsage: tweetogram download --twitter-consumer-api-key ARG\n                           --twitter-consumer-api-key-secret ARG\n                           --twitter-access-token ARG\n                           --twitter-access-token-secret ARG\n                           --twitter-username ARG --data-dir ARG\n  Download your tweets\n\nAvailable options:\n  --twitter-consumer-api-key ARG\n                           Your \"Consumer Keys: API Key\" from the Twitter\n                           Developer Portal\n  --twitter-consumer-api-key-secret ARG\n                           Your \"Consumer Keys: API Key Secret\" from the Twitter\n                           Developer Portal\n  --twitter-access-token ARG\n                           Your \"Authentication Tokens: Access Token\" from the\n                           Twitter Developer Portal\n  --twitter-access-token-secret ARG\n                           Your \"Authentication Tokens: Access Token Secret\"\n                           from the Twitter Developer Portal\n  --twitter-username ARG   Username of the account to download liked tweets from\n  --data-dir ARG           Filepath to a directory to save downloaded tweets\n  -h,--help                Show this help text\n```\n\n#### Show liked tweets\n\n```\n$ cabal run tweetogram -- query likes --help\nUsage: tweetogram query likes --data-dir ARG [--top N] [--min-likes N]\n  Show liked tweets\n\nAvailable options:\n  --data-dir ARG           Filepath to a directory containing downloaded tweets\n  --top N                  Only show top N most liked accounts\n  --min-likes N            Only show accounts with at least N likes\n  -h,--help                Show this help text\n```\n\nHere's a truncated sample of what the output looks like:\n\n```\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| Rank | Liked tweets |     Handle      |                       Name                        | Verified? | NSFW*? | Followers | Following | Tweets | Likes  |         Created         |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 1    | 253          | GergelyOrosz    | Gergely Orosz                                     | False     | False  | 33267     | 647       | 8326   | 9943   | 2009-04-10 10:01:11 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 2    | 101          | TrungTPhan      | Trung Phan 🇨🇦                                     | False     | False  | 201756    | 3270      | 24646  | 49983  | 2017-12-27 00:42:32 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 3    | 77           | patio11         | Patrick McKenzie                                  | False     | False  | 111716    | 735       | 45179  | 21865  | 2009-02-14 12:26:59 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 4    | 64           | BretDevereaux   | Bret Devereaux                                    | False     | False  | 12660     | 256       | 9062   | 4122   | 2019-05-02 18:26:19 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 5    | 53           | joulee          | Julie Zhuo                                        | True      | False  | 122545    | 845       | 4603   | 7062   | 2008-11-25 03:58:28 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 6    | 52           | justinkan       | Justin Kan                                        | True      | False  | 211353    | 2065      | 13262  | 18401  | 2009-04-05 01:55:05 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 7    | 45           | paulg           | Paul Graham                                       | True      | False  | 1384437   | 645       | 26178  | 46957  | 2010-08-27 20:13:59 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 8    | 43           | dave_universetf | Dave Anderson                                     | False     | False  | 5145      | 236       | 8895   | 13231  | 2017-12-02 19:31:20 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 9    | 39           | FrogandToadbot  | Frog and Toad                                     | False     | False  | 110484    | 7         | 2676   | 367    | 2020-12-30 07:11:16 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 10   | 38           | chrishlad       | Chris Hladczuk                                    | False     | False  | 97193     | 349       | 5710   | 13954  | 2020-06-18 23:27:47 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 11   | 37           | sweatystartup   | Nick Huber                                        | False     | False  | 157577    | 1240      | 11592  | 25672  | 2018-11-28 23:46:15 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 12   | 36           | RomeenSheth     | Romeen Sheth                                      | False     | False  | 52694     | 1386      | 5725   | 22220  | 2012-10-20 18:59:34 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 13   | 36           | jspujji         | Jesse Pujji                                       | True      | False  | 50499     | 3588      | 8321   | 18612  | 2008-05-23 07:49:31 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 14   | 36           | rakyll          | Jaana Dogan ヤナ ドガン                                | True      | False  | 73260     | 1084      | 16159  | 86769  | 2007-12-03 13:08:02 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 15   | 33           | kevinleeme      | Kevin Lee                                         | False     | False  | 23688     | 570       | 5276   | 16647  | 2008-12-10 20:47:48 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 16   | 29           | hillelogram     | Hillel                                            | False     | False  | 14767     | 3         | 42183  | 44656  | 2011-10-25 04:31:15 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 17   | 27           | DeepLeffen      | Deep Leffen Bot                                   | False     | False  | 97739     | 86        | 529    | 1518   | 2020-03-22 23:25:32 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 18   | 27           | PossumEveryHour | Possum Every Hour                                 | False     | False  | 384747    | 1         | 27318  | 0      | 2018-07-25 12:01:37 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 19   | 26           | Codie_Sanchez   | Codie Sanchez 💥                                   | False     | False  | 71177     | 574       | 6166   | 10489  | 2011-02-27 22:07:36 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n| 20   | 26           | gentleeeeeeecat | GENTLECAT                                         | False     | False  | 117830    | 47        | 841    | 1445   | 2017-01-03 13:43:06 UTC |\n+------+--------------+-----------------+---------------------------------------------------+-----------+--------+-----------+-----------+--------+--------+-------------------------+\n```\n\n#### Show post activity\n\n```\n$ cabal run tweetogram -- query activity --help\nUsage: tweetogram query activity --data-dir ARG [--tz-offset +/-N]\n                                 [--time-mode ARG]\n  Show tweet activity\n\nAvailable options:\n  --data-dir ARG           Filepath to a directory containing downloaded tweets\n  --tz-offset +/-N         Timezone offset (+/-N from GMT) to check\n  --time-mode ARG          Time display mode (either \"24h\" or \"12h\")\n                           (default: 24h)\n  -h,--help                Show this help text\n```\n\nHere's some sample output:\n\n```\n+------------+--------------+-------+--------------------------------+\n| Time (UTC) | Time (UTC+2) | Count |              Bar               |\n+------------+--------------+-------+--------------------------------+\n| 02:00      | 04:00        | 1     |                                |\n+------------+--------------+-------+--------------------------------+\n| 03:00      | 05:00        | 3     |                                |\n+------------+--------------+-------+--------------------------------+\n| 04:00      | 06:00        | 13    | X                              |\n+------------+--------------+-------+--------------------------------+\n| 05:00      | 07:00        | 2     |                                |\n+------------+--------------+-------+--------------------------------+\n| 06:00      | 08:00        | 27    | XXX                            |\n+------------+--------------+-------+--------------------------------+\n| 07:00      | 09:00        | 66    | XXXXXXX                        |\n+------------+--------------+-------+--------------------------------+\n| 08:00      | 10:00        | 117   | XXXXXXXXXXXXXX                 |\n+------------+--------------+-------+--------------------------------+\n| 09:00      | 11:00        | 197   | XXXXXXXXXXXXXXXXXXXXXXX        |\n+------------+--------------+-------+--------------------------------+\n| 10:00      | 12:00        | 205   | XXXXXXXXXXXXXXXXXXXXXXXX       |\n+------------+--------------+-------+--------------------------------+\n| 11:00      | 13:00        | 201   | XXXXXXXXXXXXXXXXXXXXXXXX       |\n+------------+--------------+-------+--------------------------------+\n| 12:00      | 14:00        | 190   | XXXXXXXXXXXXXXXXXXXXXX         |\n+------------+--------------+-------+--------------------------------+\n| 13:00      | 15:00        | 191   | XXXXXXXXXXXXXXXXXXXXXXX        |\n+------------+--------------+-------+--------------------------------+\n| 14:00      | 16:00        | 229   | XXXXXXXXXXXXXXXXXXXXXXXXXXX    |\n+------------+--------------+-------+--------------------------------+\n| 15:00      | 17:00        | 177   | XXXXXXXXXXXXXXXXXXXXX          |\n+------------+--------------+-------+--------------------------------+\n| 16:00      | 18:00        | 193   | XXXXXXXXXXXXXXXXXXXXXXX        |\n+------------+--------------+-------+--------------------------------+\n| 17:00      | 19:00        | 216   | XXXXXXXXXXXXXXXXXXXXXXXXXX     |\n+------------+--------------+-------+--------------------------------+\n| 18:00      | 20:00        | 185   | XXXXXXXXXXXXXXXXXXXXXX         |\n+------------+--------------+-------+--------------------------------+\n| 19:00      | 21:00        | 249   | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |\n+------------+--------------+-------+--------------------------------+\n| 20:00      | 22:00        | 222   | XXXXXXXXXXXXXXXXXXXXXXXXXX     |\n+------------+--------------+-------+--------------------------------+\n| 21:00      | 23:00        | 220   | XXXXXXXXXXXXXXXXXXXXXXXXXX     |\n+------------+--------------+-------+--------------------------------+\n| 22:00      | 00:00        | 179   | XXXXXXXXXXXXXXXXXXXXX          |\n+------------+--------------+-------+--------------------------------+\n| 23:00      | 01:00        | 116   | XXXXXXXXXXXXX                  |\n+------------+--------------+-------+--------------------------------+\n| 00:00      | 02:00        | 43    | XXXXX                          |\n+------------+--------------+-------+--------------------------------+\n| 01:00      | 03:00        | 7     |                                |\n+------------+--------------+-------+--------------------------------+\n```\n\n## Development\n\nFor Haddock documentation, use:\n\n```sh\ncabal build --enable-documentation\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felldritch%2Ftweetogram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felldritch%2Ftweetogram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felldritch%2Ftweetogram/lists"}