用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水平都一般 ...
随机推荐
- rabbitMQ 重试
rabbitMQ 重试机制 spring.rabbitmq.listener.simple.retry.max-attempts=5 最大重试次数spring.rabbitmq.listener.si ...
- RMAN备份脚本执行遇到RMAN-03002,06091问题处理
一 问题描述 客户说RMAN备份脚本执行有的时候报错,有的时候正常!!! 远程登陆客户环境,查询最后一次备份的日志报错信息,得到 RMAN-03002: failure of delete comma ...
- 雷达无线电系列(三)经典CFAR算法门限因子alpha计算(matlab)
前言 本文汇集CA.SO.GO.OS.杂波图等恒虚警算法的门限因子求解方法及其函数 1,CA-CFAR [非常简单,可以直接求解] %% 均值恒虚警_门限因子计算公式 %% 版本:v1 %% 时间:2 ...
- 应用程序池优化配置方案(IIS7、IIS7.5)
定义: 是将一个或多个应用程序链接到一个或多个工作进程集合的配置,该池中的应用程序与其他应用程序被工作进程边界分隔, 一.一般优化方案 1.基本设置 [1]队列长度:默认1000,将原来的队列长度65 ...
- OpenCvSharp 图像旋转
/// <summary> /// 图像旋转 /// </summary> private Mat MatRotate(Mat src, float angle) { Mat ...
- stm32和cortex M3学习内核简单总结
1.stm32综述 2.寄存器组 3.操作模式和特权级别 4.存储器映射 5.中断和异常 6.其他 Stm32综述 这可以说是我第一款认真学习的单片机了,学完这个就要开启我通往arm9的大门了,接下来 ...
- win10 系统解决mysql中文乱码问题
问题: 向mysql 数据库插入数据是,出现中文乱码(中文均显示为‘??’) 原因: mysql 默认的字符集是latin1,所以我么需要改为ut8编码才可以 解决: 1.以管理员权限运行cmd窗口 ...
- ubuntu18.04安装wine
wine是一个兼容层,可以从多平台(linux,macos,等)运行windows应用. Wine (Wine Is Not an Emulator)[即Wine不是一个模拟器]是一个在Linux和U ...
- 记录java+testng运行selenium(一)
整体的流程为下图 整体思路为: 1. 由程序开始运行时去读取ini文件中存储的浏览器及需要打开的url 2. test运行时通过description实现数据驱动,主要做两件事 2.1 第一件事为:读 ...
- 协议形式化安全分析 Scyther 并非所有协议可以照抄就搬
1.Scyther 形式化分析工具可以对协议进行形式化描述,验证协议的机密性和可认证性是否存在安全威胁.在攻击时支持会话轮数无限次执行,同时支持在强安全模型和Delov-Yao模型.在对要形式化分析的 ...