在GitHub上,用户可以拥有pinned repositories。
还有API的Repositories部分描述了如何发出涉及回购的请求。您还可以获取有关用户所参与的组织的信息,如another answer中所述(可以固定)。
但是,我想访问用户的固定存储库。例如,给出以下配置文件:
我希望能够做到以下几点:
$ curl -s <some endpoint with some parameters> | <some pipeline with some filtering>
str
liffy_diffy
spiralify
micro-twitter
kit
xdoc
所以我想知道:
我能够使用nokogiri gem来解析html。但是,似乎我应该用一个简单的HTTP请求来完成同样的事情:
$ ./get_user_pinned_repos mbigras
str
liffy_diffy
spiralify
micro-twitter
kit
xdoc
代码:
#!/usr/bin/env ruby
# get a user's pinned repos
require 'rubygems'
require 'nokogiri'
require 'open-uri'
if ARGV.length != 1
STDERR.puts "usage: get_user_pinned_repos <username>"
exit 1
end
username = ARGV.first
profile_url = "https://github.com/#{username}"
page = Nokogiri::HTML(open(profile_url))
page.css("span.repo").each { |repo| puts repo.text }
答案 0 :(得分:5)
您可以使用Github GrapQL API获取固定存储库:
{
repositoryOwner(login: "bertrandmartel") {
... on User {
pinnedRepositories(first:6) {
edges {
node {
name
}
}
}
}
}
}
您可以使用curl通过以下方式申请:
curl -H "Authorization: bearer TOKEN" --data-binary @- https://api.github.com/graphql <<EOF
{
"query": "query { repositoryOwner(login: \"bertrandmartel\") { ... on User { pinnedRepositories(first:6) { edges { node { name } } } } } }"
}
EOF
您可以使用jq
JSON解析器解析JSON输出:
username=bertrandmartel
curl -s -H "Authorization: bearer TOKEN" \
-d '{ "query": "query { repositoryOwner(login: \"'"$username"'\") { ... on User { pinnedRepositories(first:6) { edges { node { name } } } } } }" }' \
https://api.github.com/graphql | \
jq -r '.data.repositoryOwner.pinnedRepositories.edges[].node.name'
答案 1 :(得分:1)
原始答案的更新:
针对GitHub GraphQL模式(2019-03-30)的changelog提到,pinnedRepositories将在2019-07-01之前弃用或删除。要求GraphQL API用户使用ProfileOwner.pinnedItems。
使用ProfileOwner.pinnedItems检索固定存储库的示例:
示例1:
query {
user(login:"kranthilakum") {
pinnedItems(first: 5, types: [REPOSITORY, GIST]) {
totalCount
edges {
node {
... on Repository {
name
}
}
}
}
}
}
Try Example 1 in the GraphQL API Explorer
示例2:
query {
repositoryOwner(login: "kranthilakum") {
... on ProfileOwner {
pinnedItemsRemaining
itemShowcase {
items(first: 5) {
totalCount
edges {
node {
... on Repository {
name
}
}
}
}
hasPinnedItems
}
}
}
}
答案 2 :(得分:0)
转到此URL并输入您的用户名,然后单击“开始”按钮。在那里,您将看到固定的存储库作为JSON响应。
否则,您可以在下面的链接中替换您的用户名。
https://gh-pinned-repos-5l2i19um3.vercel.app/?username={Username}