[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")
网友评论