1. 程式人生 > >用python寫一個GitHub Trending Api

用python寫一個GitHub Trending Api

時間 sin 所有 運行 返回 gap 文件 clone con

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