用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