2020 年 GitHub 上十大最火 Python 项目,看完之后我裂开了(一)

数据获取

如果你留心看过 GitHub 的文档的话,你就会知道关于 GitHub 上的大部分数据,GitHub 官方都是提供了接口了的。比如我们今天要获取的数据就可以从下面这个接口拿到。

https://api.github.com/search/repositories?q=language:python+created:%3E2019-12-31&sort=stars&order=desc&per_page=10

如上所示,我们只获取语言为 Python 的开源项目,且创建时间晚于 2019-12-31,也就是 2020 年新创建的开源项目才做统计,接下来我们按照 stars 数倒序排序,取前十条记录就拿到我们需要的数据啦。

由于该接口返回的开源项目信息过于庞大,我们只取项目名称,URL,fork 数,star 数以及 watch 数。

# 获取数据
def get_data():
    base_url = 'https://api.github.com/search/repositories?q=language:python+created:%3E2019-12-31&sort=stars&order=desc&per_page=10'
    response = requests.get(base_url)
    result = response.json()
    data = {}
    for item in result['items']:
        data[item['name']] = [item['html_url'], item['stargazers_count'], item['watchers_count'], item['forks']]
    return data

可视化

# 可视化
def show_img():
    data = get_data()
    names = list(data.keys())
    values = [data[name][1] for name in names]
    bar = (
        Bar()
            .add_xaxis(names[::-1])
            .add_yaxis("星标数", values[::-1])
            .reversal_axis()
            .set_series_opts(label_opts=opts.LabelOpts(position="right"))
            .set_global_opts(
            yaxis_opts=opts.AxisOpts(name_rotate=0, name="项目", axislabel_opts={'interval': -10, "rotate": 0}),
            title_opts=opts.TitleOpts(title="2020 GitHub Python TOP 10"))
    )
    bar.render_notebook()

将获取到的数据,按照 star 数从大到小生成柱状图,如下所示:


2020 年 GitHub 上十大最火 Python 项目,看完之后我裂开了(一)

00 Depix


2020 年 GitHub 上十大最火 Python 项目,看完之后我裂开了(一)


伴随着移动互联网的普及,我们的生活越来越便利,衣食住行一个手机全搞定,可手机在给我们带来便利的同时,也在威胁着我们的个人隐私安全。比如很多 App 动不动就要你实名认证,甚至人脸识别等。

以至于现在的我们都变得格外的小心翼翼,有时候发个朋友圈都要打马赛克,生怕泄漏一点点隐私。

可如果现在我告诉你,「打马赛克」已经不在安全了,你想要隐藏的信息,已犹如裸奔你会作何感想。

最近 GitHub 上出现了一个火的一塌糊涂的项目,它就是号称能抹去马赛克让原图重现的神器 Depix。截至目前,该项目的星标数已经超过 14K。

2020 年 GitHub 上十大最火 Python 项目,看完之后我裂开了(一)

上面是一个官方给出的示例图,我们可以看出使用 Depix 恢复后,基本上已经可以看清大部分内容了,太恐怖了。

01 diagrams

2020 年 GitHub 上十大最火 Python 项目,看完之后我裂开了(一)



作为程序员的我们可能平时画图比较少,顶多也就是写写文档。但画图可是架构师必备技能之一,熟话说不想当架构师的程序员不是合格的程序员,画图我们还是有必要学习一下的。

说到画图,你肯定想到的是各种在线离线工具等,你有试过用代码来画图吗?

没错,你没有听错,用代码来画图完全可行。利用 diagrams 库,我们就可以通过以代码的方式来绘制诸如阿里云、AWS、K8S 等系统架构图。

真正做到了图表即代码,代码即图表。

上一篇:线上公开课 | 数智新金融助力行业高质量发展


下一篇:Java - 基础 - 锁与线程 - 高并发前述