{"id":15355511,"url":"https://github.com/mattipv4/github-first-contributions","last_synced_at":"2025-04-15T06:29:22.882Z","repository":{"id":43931762,"uuid":"219149713","full_name":"MattIPv4/github-first-contributions","owner":"MattIPv4","description":"A little script that scrapes GitHub hovercards on PRs to see if they're first contributions.","archived":false,"fork":false,"pushed_at":"2025-02-15T00:14:31.000Z","size":325,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T17:06:03.231Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/MattIPv4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"MattIPv4","patreon":"IPv4","open_collective":null,"ko_fi":"MattIPv4","tidelift":null,"custom":"https://paypal.me/MattIPv4Cowley"}},"created_at":"2019-11-02T12:19:58.000Z","updated_at":"2025-03-16T08:21:22.000Z","dependencies_parsed_at":"2024-06-18T14:45:31.666Z","dependency_job_id":"a8f695a6-0771-4377-9148-c7773adaf487","html_url":"https://github.com/MattIPv4/github-first-contributions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"MattIPv4/template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fgithub-first-contributions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fgithub-first-contributions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fgithub-first-contributions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fgithub-first-contributions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MattIPv4","download_url":"https://codeload.github.com/MattIPv4/github-first-contributions/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249020291,"owners_count":21199529,"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-10-01T12:24:38.709Z","updated_at":"2025-04-15T06:29:22.858Z","avatar_url":"https://github.com/MattIPv4.png","language":"JavaScript","funding_links":["https://github.com/sponsors/MattIPv4","https://patreon.com/IPv4","https://ko-fi.com/MattIPv4","https://paypal.me/MattIPv4Cowley"],"categories":[],"sub_categories":[],"readme":"\u003c!-- Source: https://github.com/MattIPv4/template/blob/master/README.md --\u003e\n\n\u003c!-- Title --\u003e\n\u003ch1 align=\"center\" id=\"github-first-contributions\"\u003e\n    GitHub First Contributions\n\u003c/h1\u003e\n\n\u003c!-- Tag line --\u003e\n\u003ch3 align=\"center\"\u003eA little script that scrapes GitHub hovercards on PRs to see if they're first contributions.\u003c/h3\u003e\n\n\u003c!-- Badges --\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/users/MattIPv4/sponsorship\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GitHub%20Sponsors-MattIPv4-blue.svg?style=flat-square\" alt=\"GitHub Sponsors\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://patreon.mattcowley.co.uk/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Patreon-IPv4-blue.svg?style=flat-square\" alt=\"Patreon\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://slack.mattcowley.co.uk/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Slack-MattIPv4-blue.svg?style=flat-square\" alt=\"Slack\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n----\n\n\u003c!-- Content --\u003e\n## Why scraping, not the API?\n\nYou may have seen this on a user's hovercard in a PR before: \"their first in @org\" or \"their first ever\".\nThis information is readily available in the HTML view of the pull request, but GitHub doesn't reveal this data in the\n API response for the PR.\n\nI wanted to get this data for a program we run at work and so instead of making *loads* of API requests to GitHub to get\n all the PRs a user has ever made etc. to determine if the PR is a first, I simply wrote this script that just scrapes\n the HTML hovercard for the user in each PR.\n\n![Example of the program running](example.png)\n\n\u003c!-- Contributing --\u003e\n## Contributing\n\nContributions are always welcome to this project!\\\nTake a look at any existing issues on this repository for starting places to help contribute towards, or simply create your own new contribution to the project.\n\nPlease make sure to follow the existing standards within the project such as code styles, naming conventions and commenting/documentation.\n\nWhen you are ready, simply create a pull request for your contribution and I will review it whenever I can!\n\n### Donating\n\nYou can also help me and the project out by sponsoring me through [GitHub Sponsors](https://github.com/users/MattIPv4/sponsorship) (preferred), contributing through a [donation on PayPal](http://paypal.mattcowley.co.uk/) or by supporting me monthly on my [Patreon page](http://patreon.mattcowley.co.uk/).\n\u003cp\u003e\n    \u003ca href=\"https://github.com/users/MattIPv4/sponsorship\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GitHub%20Sponsors-MattIPv4-blue.svg?logo=github\u0026logoColor=FFF\u0026style=flat-square\" alt=\"GitHub Sponsors\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://patreon.mattcowley.co.uk/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Patreon-IPv4-blue.svg?logo=patreon\u0026logoColor=F96854\u0026style=flat-square\" alt=\"Patreon\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://paypal.mattcowley.co.uk/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/PayPal-Matt%20(IPv4)%20Cowley-blue.svg?logo=paypal\u0026logoColor=00457C\u0026style=flat-square\" alt=\"PayPal\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- Discussion \u0026 Support --\u003e\n## Discussion, Support and Issues\n\nNeed support with this project, have found an issue or want to chat with others about contributing to the project?\n\u003e Please check the project's issues page first for support \u0026 bugs!\n\nNot found what you need here?\n\n* If you have an issue, please create a GitHub issue here to report the situation, include as much detail as you can!\n* _or,_ You can join our Slack workspace to discuss any issue, to get support for the project or to chat with contributors and myself:\n\n\u003ca href=\"http://slack.mattcowley.co.uk/\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Slack-MattIPv4-blue.svg?logo=slack\u0026logoColor=blue\u0026style=flat-square\" alt=\"Slack\" height=\"30\"\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattipv4%2Fgithub-first-contributions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattipv4%2Fgithub-first-contributions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattipv4%2Fgithub-first-contributions/lists"}