How to get the total amount of contributors to a GitHub repository?












5















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









share|improve this question




















  • 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
















5















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









share|improve this question




















  • 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














5












5








5


1






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









share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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














  • 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












1 Answer
1






active

oldest

votes


















1














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





share|improve this answer
























  • 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" 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











  • 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











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
});


}
});














draft saved

draft discarded


















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









1














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





share|improve this answer
























  • 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" 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











  • 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
















1














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





share|improve this answer
























  • 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" 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











  • 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














1












1








1







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





share|improve this answer













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






share|improve this answer












share|improve this answer



share|improve this answer










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" 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











  • 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











  • 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











  • 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




















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

How to fix TextFormField cause rebuild widget in Flutter