用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": ,
"msg": [
{
# 仓库名称
"repo": "Librefox",
# 项目语言
"language": "JavaScript",
# 项目拥有着
"user": "intika",
# 项目简介
"about": "Librefox: Firefox with privacy enhancements",
# 项目地址
"link": "https://github.com/intika/Librefox",
# 项目star数
"stars": "",
# 项目fork数
"forks": "",
# 新增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: ,
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": ,
"msg": [
"Zimpl",
"Zephir",
"YASnippet",
"YARA",
"YANG",
"YAML",
"Yacc",
"Xtend",
"XSLT",
"XS",
...
请求出错
当请求的lang或since不存在时,请求出错。错误结果为:
{
"success": false,
"count": ,
"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的更多相关文章
- 【Python】如何基于Python写一个TCP反向连接后门
首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...
- Python写一个自动点餐程序
Python写一个自动点餐程序 为什么要写这个 公司现在用meican作为点餐渠道,每天规定的时间是早7:00-9:40点餐,有时候我经常容易忘记,或者是在地铁/公交上没办法点餐,所以总是没饭吃,只有 ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)
昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- 用python写一个自动化盲注脚本
前言 当我们进行SQL注入攻击时,当发现无法进行union注入或者报错等注入,那么,就需要考虑盲注了,当我们进行盲注时,需要通过页面的反馈(布尔盲注)或者相应时间(时间盲注),来一个字符一个字符的进行 ...
- python写一个能变身电光耗子的贪吃蛇
python写一个不同的贪吃蛇 写这篇文章是因为最近课太多,没有精力去挖洞,记录一下学习中的收获,python那么好玩就写一个大一没有完成的贪吃蛇(主要还是跟课程有关o(╥﹏╥)o,课太多好烦) 第一 ...
- python写一个邮箱伪造脚本
前言: 原本打算学php MVC的思路然后写一个项目.但是贼恶心, 写不出来.然后就还是用python写了个邮箱伪造. 0x01 第一步先去搜狐注册一个邮箱 然后,点开设置,开启SMTP服务. 当然你 ...
- 如何Python写一个安卓APP
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...
随机推荐
- 音视频入门-13-使用开源库生成PNG图片
* 音视频入门文章目录 * RGB-to-PNG 回顾 上一篇 [手动生成一张PNG图片] 根据 [PNG文件格式详解] 一步一步地手动实现了将 RGB 数据生成了一张 PNG 图片. 有许多开源的 ...
- JQuery实现密码可见不可见
在Html页面上实现密码可见不可见,使用的阿里巴巴矢量图标库. html部分: <!doctype html> <html> <head> <meta cha ...
- 如何判断当前修改过的datatable的某一列值是否为int型或double类型
如何判断当前修改过的datatable的某一列值是否为int型或double类型 今天在做datatable数据验证时碰到要对datatable的列数据进行数据类型校验,因此记录一下本人校验的方法,如 ...
- textarea与标签组合,点击标签填入标签内容,再次点击删除内容(vue)
需求:将textarea与span标签组合,点击标签自动填入标签文本内容,再次点击删除标签文本对应内容 原理:点击标签时,将标签内容作为参数,将内容拼接在textarea的value后面,再次点击标签 ...
- win10如何安装mariadb
一.下载.安装 1.下载mariadb(https://downloads.mariadb.org/),解压 2.进入bin目录下执行(管理员模型-powershell) .\mysqld.exe - ...
- vue 将时间戳转换成日期格式 (一)
(1)创建一个处理时间格式的js,内容如下: ../../utils/formatDate.js export function formatDate(date, fmt) { if (/(y+)/. ...
- Vivado cordic IP求模求角教程
前言 当需要对复数求模的时候,用FPGA怎么求呢?怎么开根号? 方法1:先求幅值平方和,再使用cordic IP开根号.(蠢办法) 方法2:直接用cordic求取模值. 此处只介绍方法2,资源占用更少 ...
- 易优cms后台RCE以及任意文件上传漏洞
前言 EyouCms是基于TP5.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设.网络营销成本,致力于打造用户舒适的建站体验.易优cms ...
- Subversion和TortoiseSVN,VisualSVN图文教程
转自:http://www.veryhuo.com/a/view/156054.html 本文为大家介绍一下SVN使用教程,在开始之前,您有必要了解一下为什么要使用SVN?因为程序员在编写程序的过程中 ...
- py map reduce filter 总结
array=[1,3,4,71,2] ret=[] for i in array: ret.append(i**2) print(ret) #如果我们有一万个列表,那么你只能把上面的逻辑定义成函数 d ...