GitHub存储库重定向并尝试通过GitHub搜索API

时间:2017-02-12 14:25:37

标签: python-3.x api github

我有一个GitHub存储库的链接,我正在使用github3和Python来尝试搜索它。

以此链接为例:

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

2 个答案:

答案 0 :(得分:1)

根据Github blog,如果重命名了一个仓库,旧地址会被重定向到新地址!

  

我们很高兴地宣布,从今天开始,在这些情况下,我们会自动将以前存储库位置的所有请求重定向到新家。你不需要做什么特别的事。只需重新命名,我们将照顾其余部分。

此外,您可以查看 Gabriel Grimberg 没有任何名为“OOP-Assignment1-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

答案 1 :(得分: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