How to get the total amount of contributors to a GitHub repository?
How can I get the total amount of contributors of a GitHub repository? The API makes it quite difficult because of the pagination.
This is what I tried so far using Python:
contributors = "https://api.github.com/repos/JetBrains/kotlin-web-site/contributors"
x = requests.get(contributors)
y = json.loads(x.text)
len(y) # maximum 30 because of pagination
python python-requests github-api
add a comment |
How can I get the total amount of contributors of a GitHub repository? The API makes it quite difficult because of the pagination.
This is what I tried so far using Python:
contributors = "https://api.github.com/repos/JetBrains/kotlin-web-site/contributors"
x = requests.get(contributors)
y = json.loads(x.text)
len(y) # maximum 30 because of pagination
python python-requests github-api
1
/repos/:owner/:repo/stats/contributors
(documented here) has weekly statistics, but if you're interested in the overall total, that isn't a big help, either.
– das-g
Nov 22 '18 at 13:51
Maybe the GraphQL API allows such aggregation. Might be worth investigating.
– das-g
Nov 22 '18 at 14:43
add a comment |
How can I get the total amount of contributors of a GitHub repository? The API makes it quite difficult because of the pagination.
This is what I tried so far using Python:
contributors = "https://api.github.com/repos/JetBrains/kotlin-web-site/contributors"
x = requests.get(contributors)
y = json.loads(x.text)
len(y) # maximum 30 because of pagination
python python-requests github-api
How can I get the total amount of contributors of a GitHub repository? The API makes it quite difficult because of the pagination.
This is what I tried so far using Python:
contributors = "https://api.github.com/repos/JetBrains/kotlin-web-site/contributors"
x = requests.get(contributors)
y = json.loads(x.text)
len(y) # maximum 30 because of pagination
python python-requests github-api
python python-requests github-api
edited Nov 22 '18 at 14:04
Max
asked Nov 22 '18 at 12:52
MaxMax
447
447
1
/repos/:owner/:repo/stats/contributors
(documented here) has weekly statistics, but if you're interested in the overall total, that isn't a big help, either.
– das-g
Nov 22 '18 at 13:51
Maybe the GraphQL API allows such aggregation. Might be worth investigating.
– das-g
Nov 22 '18 at 14:43
add a comment |
1
/repos/:owner/:repo/stats/contributors
(documented here) has weekly statistics, but if you're interested in the overall total, that isn't a big help, either.
– das-g
Nov 22 '18 at 13:51
Maybe the GraphQL API allows such aggregation. Might be worth investigating.
– das-g
Nov 22 '18 at 14:43
1
1
/repos/:owner/:repo/stats/contributors
(documented here) has weekly statistics, but if you're interested in the overall total, that isn't a big help, either.– das-g
Nov 22 '18 at 13:51
/repos/:owner/:repo/stats/contributors
(documented here) has weekly statistics, but if you're interested in the overall total, that isn't a big help, either.– das-g
Nov 22 '18 at 13:51
Maybe the GraphQL API allows such aggregation. Might be worth investigating.
– das-g
Nov 22 '18 at 14:43
Maybe the GraphQL API allows such aggregation. Might be worth investigating.
– das-g
Nov 22 '18 at 14:43
add a comment |
1 Answer
1
active
oldest
votes
As a last resort you can scrape required value from GitHub HTML page (lxml.html lib required):
import requests
from lxml import html
r = requests.get('https://github.com/JetBrains/kotlin-web-site')
xpath = '//span[contains(@class, "num") and following-sibling::text()[normalize-space()="contributors"]]/text()'
contributors_number = int(html.fromstring(r.text).xpath(xpath)[0].strip())
print(contributors_number)
# 338
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
@Max , try to replace"contributors"
with"commits"
inxpath
and usecommits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431480%2fhow-to-get-the-total-amount-of-contributors-to-a-github-repository%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As a last resort you can scrape required value from GitHub HTML page (lxml.html lib required):
import requests
from lxml import html
r = requests.get('https://github.com/JetBrains/kotlin-web-site')
xpath = '//span[contains(@class, "num") and following-sibling::text()[normalize-space()="contributors"]]/text()'
contributors_number = int(html.fromstring(r.text).xpath(xpath)[0].strip())
print(contributors_number)
# 338
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
@Max , try to replace"contributors"
with"commits"
inxpath
and usecommits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
|
show 1 more comment
As a last resort you can scrape required value from GitHub HTML page (lxml.html lib required):
import requests
from lxml import html
r = requests.get('https://github.com/JetBrains/kotlin-web-site')
xpath = '//span[contains(@class, "num") and following-sibling::text()[normalize-space()="contributors"]]/text()'
contributors_number = int(html.fromstring(r.text).xpath(xpath)[0].strip())
print(contributors_number)
# 338
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
@Max , try to replace"contributors"
with"commits"
inxpath
and usecommits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
|
show 1 more comment
As a last resort you can scrape required value from GitHub HTML page (lxml.html lib required):
import requests
from lxml import html
r = requests.get('https://github.com/JetBrains/kotlin-web-site')
xpath = '//span[contains(@class, "num") and following-sibling::text()[normalize-space()="contributors"]]/text()'
contributors_number = int(html.fromstring(r.text).xpath(xpath)[0].strip())
print(contributors_number)
# 338
As a last resort you can scrape required value from GitHub HTML page (lxml.html lib required):
import requests
from lxml import html
r = requests.get('https://github.com/JetBrains/kotlin-web-site')
xpath = '//span[contains(@class, "num") and following-sibling::text()[normalize-space()="contributors"]]/text()'
contributors_number = int(html.fromstring(r.text).xpath(xpath)[0].strip())
print(contributors_number)
# 338
answered Nov 22 '18 at 14:57


AnderssonAndersson
38.9k103468
38.9k103468
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
@Max , try to replace"contributors"
with"commits"
inxpath
and usecommits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
|
show 1 more comment
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
@Max , try to replace"contributors"
with"commits"
inxpath
and usecommits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Gives me just what I wanted, thank you.
– Max
Nov 22 '18 at 15:37
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
Well know I'm wondering how to get the amount of commits. I'm experimenting around but I don't get it.
– Max
Nov 22 '18 at 16:10
@Max , try to replace
"contributors"
with "commits"
in xpath
and use commits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
@Max , try to replace
"contributors"
with "commits"
in xpath
and use commits_number = int(html.fromstring(r.text).xpath(xpath)[0].strip().replace(',', ''))
– Andersson
Nov 22 '18 at 16:13
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
Nice! Thanks once again.
– Max
Nov 22 '18 at 16:18
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
I just ran into it so I share it: Sometimes it happens that a repository has more than 1000 contributors and the number will include a comma again, so the replace() method has to be used again to get rid of it.
– Max
Nov 23 '18 at 10:52
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431480%2fhow-to-get-the-total-amount-of-contributors-to-a-github-repository%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
/repos/:owner/:repo/stats/contributors
(documented here) has weekly statistics, but if you're interested in the overall total, that isn't a big help, either.– das-g
Nov 22 '18 at 13:51
Maybe the GraphQL API allows such aggregation. Might be worth investigating.
– das-g
Nov 22 '18 at 14:43