{"id":20686036,"url":"https://github.com/gruns/gitsnitch","last_synced_at":"2025-04-22T13:42:13.950Z","repository":{"id":262243665,"uuid":"857320529","full_name":"gruns/gitsnitch","owner":"gruns","description":"🕵️ A simple tool that finds a GitHub user's email addresses","archived":false,"fork":false,"pushed_at":"2025-03-07T05:00:50.000Z","size":32,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T15:34:56.994Z","etag":null,"topics":[],"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/gruns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2024-09-14T10:43:27.000Z","updated_at":"2025-03-07T05:00:54.000Z","dependencies_parsed_at":"2024-11-11T11:51:48.165Z","dependency_job_id":"c2b6b8b2-5be9-4510-823f-c969f9da79e5","html_url":"https://github.com/gruns/gitsnitch","commit_stats":null,"previous_names":["gruns/gitsnitch"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruns%2Fgitsnitch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruns%2Fgitsnitch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruns%2Fgitsnitch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruns%2Fgitsnitch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gruns","download_url":"https://codeload.github.com/gruns/gitsnitch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250250608,"owners_count":21399667,"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":[],"created_at":"2024-11-16T22:29:59.742Z","updated_at":"2025-04-22T13:42:13.937Z","avatar_url":"https://github.com/gruns.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"logo.svg\" width=\"234px\" height=\"300px\" alt=\"GitSnitch\"\u003e\n\u003c/div\u003e\n\n# GitSnitch\n\n`gitsnitch` is a simple tool that finds and prints a GitHub user's email\naddresses.\n\nGive `gitsnitch` a GitHub username or profile URL, like `gruns` or\nhttps://github.com/gruns, and it finds and prints that user's email\naddresses by examining commits across their GitHub repos.\n\n### How GitSnitch Works\n\nTo use, provide `gitsnitch` with a GitHub username or profile URL and\nlet it go to work. `gitsnitch` will, in turn:\n\n  1. Get a list of that user's repos via the GitHub API.\n  2. Iterate through each of those repos, prioritizing non-forked repos\n     are forked repos.\n  3. For each repo, iterate through that repo's commits via the GitHub\n     API and examine the committers' email addresses.\n  4. Collate a list of each repo's committers and, notably, their\n     email addresses.\n  5. Output a nicely formatted summary of committers and their email\n     addresses, sorted by number of commits.\n\nExample:\n\n```shell\n$ gitsnitch https://github.com/gruns\nhttps://github.com/gruns/autokey-to-espanso\nAnsgar Grunseid  grunseid@gmail.com  2 commits, latest on Jan 07, 2023\n\nhttps://github.com/gruns/furl\nAnsgar Grunseid  grunseid@gmail.com   23 commits, latest on Jun 28, 2022\nBen Greiner      code@bnavigator.de    3 commits, latest on Mar 29, 2021\nTim Gates        tim.gates@iress.com   1 commits, latest on Jul 30, 2022\n\nhttps://github.com/gruns/fallout-sonora-translation\nAnsgar Grunseid  grunseid@gmail.com  7 commits, latest on Sep 22, 2023\n\n...\n```\n\nThat's it. Simple.\n\nBy default, this script does not need a GitHub API token because GitHub\nAPI endpoints, like https://api.github.com/users/gruns/repos, can be\naccessed without an API token at a low rate limit. However, if you\nencounter API rate limits, like\n\n```python\nException: Error fetching repositories: {\"message\":\"API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)\", \"documentation_url\": \"https://docs.github.com/rest/...\"}\n```\n\nyou'll need to create an API token and add it your environment. To\ncreate an API token for `gitsnitch`:\n\n   1. Head to https://github.com/ and log in to your account.\n   2. Open your profile picture in the top-right corner and click `Settings`.\n   3. Click `Developer settings` in the left-hand sidebar.\n   4. Under `Developer settings`, click `Personal access\n      tokens`-\u003e`Tokens (classic)`.\n   5. Click `Generate new token`. Then select at least `read:user` and\n      `user:email` under `user`.\n   6. Click `Generate token`.\n   7. Copy the generated token. Be sure to save it; you won't be able\n      to view it again.\n\nThen add this token to your environment with\n\n```shell\nexport GITHUB_TOKEN=\u003cyour_api_token\u003e\n```\n\nFinally, re-run `gitsnitch` as normal. Boom.\n\n\n### Installation\n\nInstalling GitSnitch with pip is easy.\n\n```\n$ pip3 install gitsnitch\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgruns%2Fgitsnitch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgruns%2Fgitsnitch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgruns%2Fgitsnitch/lists"}