美文网首页
对比多个GitHub库

对比多个GitHub库

作者: 数据工程师从入门到放弃 | 来源:发表于2018-12-01 15:18 被阅读0次

[TOC]

对比多个GitHub库

# -*- coding:utf-8 -*-
"""
@author: XueHaozhe
@file:快速对比多个github库信息.py
@time:2018/12/1  10:38
"""

"""
1、用哪些参考数值

生态值、star数、Fork数

2、如何获取数据

生态值 ---》搜索接口与参数

3、如何查询需要的数据
input模拟查询

"""
#https://api.github.com/search/repositories?q=django&sort=stars&order=desc
# https://api.github.com/search/repositories?q=django
# https://api.github.com/search/repositories?q=topic:django #生态


 #get_names ---check_repos

import requests

def get_names():
    print('Seprate each with space')
    names = input()
    return names.split()


def check_repos(names):
    repo_api = 'https://api.github.com/search/repositories?q='
    ecosys_api = 'https://api.github.com/search/repositories?q=topic:'
    for name in names:
        # 1/json --2/dict -- 3/dict['items'] -- list[0] -- django {name:django,star:123}
        repo_info = requests.get(repo_api+name).json()["items"][0]
        stars = repo_info['stargazers_count']
        forks = repo_info['forks_count']
        #生态值获取
        ecosys_info = requests.get(ecosys_api+name).json()['total_count']

        print(name)
        print('Stars:'+str(stars))
        print('Forks:'+str(forks))
        print('Ecosys:'+str(ecosys_info))
        print('----------')


names = get_names()
check_repos(names)

查找python小的项目

# -*- coding:utf-8 -*-
"""
@author: XueHaozhe
@file:找点 Python 小项目.py
@time:2018/12/1  14:19
"""

"""
从 GitHub 上选出符合这些条件的项目: 
1. 最近一周内发布的 
2. 语言是 Python 
3. size 小于200k的代码 
把这些项目的链接 print 出来。
"""

"""
问题拆解提示
筛选GitHub项目的问题可以拆解为以下若干子问题:
1.如何查找GitHub上的所有Python语言的项目?
2.如何判断项目创建时间是最近一星期?
3.如何查找满足条件的代码文件,并获取其网页地址?

问题解决提示:
1.利用GitHub提供的search接口"https://api.github.com/search/repositories?q=language:python",
该接口会返回指定语言为Python的所有项目。通过requests模块,对该网页接口进行访问。然后利用其中的json函数,将数据转变为dict类型。
2.根据数据中的"created_at"字段,提取项目创建时间。利用字符串比较,判断该时间是否大于某个值。
3.利用GitHub提供的code接口,查找满足条件的代码文件。其中“html_url”字段指定了该代码文件的页面链接。
"""

"""
api形式 /code?q=language:python+size:<200+repo:目录名
q参数:
    language:指定语言
    size:指定文件大小,如size:<200表示文件小于200KB
    repo:指定目录(必要参数)
示例:
    https://api.github.com/search/code?q=language:python+size:<200+repo:tensorflow/tensorflow
"""

import requests
get_code_api = "https://api.github.com/search/code?q="
get_repo_api = "https://api.github.com/search/repositories?q=language:python"

# 编写函数,实现在github某一目录下寻找code文件的功能
def get_code(language,size, repo):
    url = get_code_api+"language:"+language+"+size"+size+"+repo:"+repo
    info = requests.get(url).json()

    if 'items' in info:
        for i in info['items']:
            print(i['html_url'])


# 编写函数,查找更新时间在last_week之后的项目
def get_project(last_week):
    # 访问GitHub接口
    info = requests.get(get_repo_api).json()

    #print(info['items'])

    for i in info['items']:
        created_time = i['created_at']
        #print(created_time)

        if created_time > last_week:
            language = "python"
            size = "<200"

            # 从info数据中获取项目的目录
            repo = i['html_url'].replace("https://github.com/", "")

            # https: // github.com / donnemartin / system - design - primer
            # -------------------------
            # donnemartin / system - design - primer
            # 传入三个限制条件,调用查找code文件的函数
            get_code(language, size, repo)








#get_code("python","<200","tensorflow/tensorflow")

# 调用查找项目的函数,设定上个星期的时间
get_project("2016-11-3T00:00:00Z")

相关文章

网友评论

      本文标题:对比多个GitHub库

      本文链接:https://www.haomeiwen.com/subject/awqrcqtx.html