用python写一个GitHub Trending Api

Posted ngauerh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python写一个GitHub Trending Api相关的知识,希望对你有一定的参考价值。

 GitHub 给了开发者相当丰富的 API 接口 https://developer.github.com/v3/,包括认证,搜索,活动等接口,但就是没有提供获取 Trending 的接口。因此,需要自己来实现这个api

 Github地址: https://github.com/ngauerh/GithubTrendingApi (求个star),一下请求方式均为get请求。

获取热门项目

请求地址: http://132.232.132.144:8009/api

请求结果:

{
  "success": true,
  "count": 25,
  "msg": [
    {
      # 仓库名称
      "repo": "Librefox",
      # 项目语言
      "language": "javascript",
      # 项目拥有着
      "user": "intika",
      # 项目简介
      "about": "Librefox: Firefox with privacy enhancements",
      # 项目地址
      "link": "https://github.com/intika/Librefox",
      # 项目star数
      "stars": "495",
      # 项目fork数
      "forks": "14",
      # 新增star数
      "new_stars": "117 stars today",
      # 项目维护者头像地址
      "avatars": [
        "https://avatars2.githubusercontent.com/u/6892180?s=40&v=4",
        "https://avatars0.githubusercontent.com/u/152493?s=40&v=4",
        "https://avatars3.githubusercontent.com/u/2353785?s=40&v=4",
        "https://avatars3.githubusercontent.com/u/38463143?s=40&v=4"
      ]
    },
    ...

 

获取热门开发者

请求地址 http://132.232.132.144:8009/api/developers

{
success: true,
count: 25,
msg: [
  {
    # 开发者用户名
    username: "thunlp (THUNLP)",
    # 开发者头像
    avatar: "https://avatars1.githubusercontent.com/u/18389035?s=96&v=4",
    # 开发者主页
    userlink: "https://github.com/thunlp",
    # 开发者热门项目
    repo: "NRLPapers",
    # 热门项目简介
    repo_about: "Must-read papers on network representation learning (NRL) / network embedding (NE)"
  },

获取某种语言或开发者在某段时间内的trending

请求路径

  http://132.232.132.144:8009/api?lang=python&since=daily

  http://132.232.132.144:8009/api/developers?lang=python&since=daily

请求参数:

  • lang 语言, 参数来自config.py中的 GithubLanguages

  • since 日期,参数有 daily,weekly, monthly
    daily 每天     weekly 每周   monthly 每月

获取GitHub上的所有trending 语言。

请求地址: http://132.232.132.144:8009/api/languages

返回结果:

{
  "success": true,
  "count": 490,
  "msg": [
    "Zimpl",
    "Zephir",
    "YASnippet",
    "YARA",
    "YANG",
    "YAML",
    "Yacc",
    "Xtend",
    "XSLT",
    "XS",
    ...

请求出错

当请求的lang或since不存在时,请求出错。错误结果为:

{
  "success": false,
  "count": 0,
  "msg": "请求错误"
}

 

安装项目代码

1.  git clone https://github.com/ngauerh/GithubTrendingApi.git

2.  pip install -r requirements.txt

3 . 修改config.py 文件

   GithubLanguages:要抓取的语言(在http://132.232.132.144:8009/api/languages里进行选择)

   SinceDate: 不能更改

   DB:  数据库配置

   SERVER_PORT:  要运行的api服务的端口号

   CRAWL_INTERVAL:  抓取间隔时间(实际间隔时间会曾经一个多小时)

4.  运行models.py 生成数据表(数据库格式需要为utf8mb4,如果格式为utf8则数据存入时会出错)

5.  运行run.py

以上是关于用python写一个GitHub Trending Api的主要内容,如果未能解决你的问题,请参考以下文章

GitHub 官宣:弃用 trending 热榜,开发者炸锅了

GitHub 官宣:弃用 trending 热榜,开发者炸锅了

GitHub星数13200!用Python实现所有排序算法的开源项目你见过么?

突发!GitHub 将关闭 Trending 热榜,开发者不答应

突发!GitHub 将关闭 Trending 热榜,开发者不答应

突发!GitHub 将关闭 Trending 热榜,开发者不答应