2017-02-12 98 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