2017-02-12 70 views
1

我有一个GitHub存储库的链接,我使用Python的github3为了尝试和搜索它。GitHub存储库重定向,并试图通过GitHub搜索API找到它

拿这个链接,例如:

https://github.com/GabrielGrimberg/OOP-Assignment1-UI 

如果你去,你会看到它重定向到

https://github.com/GabrielGrimberg/RuneScape-UI 

就这样,我无法弄清楚如何构建一个搜索查询将会找到这个特定的回购。

我已经试过:

GabrielGrimberg/OOP-Assignment1-UI in:url 
GabrielGrimberg/OOP-Assignment1-UI 
GabrielGrimberg/OOP-Assignment1-UI in:full_name 
+0

Gabriel Grimberg没有任何名为“OOP-Assignment1-UI”的回购协议。回购被重新命名,因此其以前的地址被重定向到其新地址。 https://github.com/blog/1508-repository-redirects-are-here –

回答

1

根据Github blog如果回购改名为旧地址重定向到新的地址!

我们很高兴地宣布,从今天开始,我们将自动为以前的仓库地点的所有请求重定向到在这种情况下他们的新家园。没有什么特别的,你必须做的。只是重新命名,我们会照顾其余的。

而且你可以检查加布里埃尔Grimberg没有名为 “OOP-分配1-UI” 任何回购协议。

更正答案:

如果我们能先检查回购的细节,以确保它的存在/它已经感动了! 看看下面的查询:

curl -i https://github.com/GabrielGrimberg/OOP-Assignment1-UI 

你可以得到它从

HTTP/1.1 301 Moved Permanently 
Server: GitHub.com 
Date: Sun, 12 Feb 2017 18:19:25 GMT 
Content-Type: text/html; charset=utf-8 
Transfer-Encoding: chunked 
Status: 301 Moved Permanently 
Cache-Control: no-cache 
Vary: X-PJAX 
Location: https://github.com/GabrielGrimberg/RuneScape-UI 
X-UA-Compatible: IE=Edge,chrome=1 

如果回购已经存在有它会给你的内容,而不是报头中的标头移动的网址! 例如,试试这个:

curl -i https://github.com/GabrielGrimberg/RuneScape-UI 
+0

据我所知,但我如何找到新的存储库与GitHub API的查询? – Majiick

+0

@Majiick没有查询会找到“OOP-Assignment1-UI”。它总是会找到/重定向到新的“RuneScape-UI”。你试图查询什么是新的存储库或什么?请澄清! –

+1

我正在使用GitHub API v3尝试查询用户GabrielGrimberg的“OOP-Assignment1-UI”回购。显然,它不再存在,所以查询不会返回任何结果。但是,我知道它重定向到新的回购。那么,如何使用旧名称构建查询来查找新回购? – Majiick

0

基本上你需要做一个请求,自己和检查重定向,如果第一搜索没有提供结果。

def get_redirection(full_name): 
    try: 
     json_object = json.loads(urllib.request.urlopen('https://api.github.com/repos/{0}'.format(full_name)).read().decode('utf-8')) 
    except urllib.error.HTTPError: 
     return None 

    return json_object["full_name"] # Will return the new full-name of the project