golang访问Github热门仓库和开发者数据插件库go-trending的使用
Golang访问Github热门仓库和开发者数据插件库go-trending的使用
简介
go-trending是一个用Go语言编写的包,用于从Github获取热门仓库和开发者数据。
功能特性
- 获取热门仓库
- 获取热门开发者
- 获取Github支持的所有编程语言
- 支持按时间和编程语言筛选
- 支持GitHub Enterprise
安装
使用go get命令安装:
$ go get github.com/andygrunwald/go-trending
或者安装/更新到最新master版本:
$ go get -u github.com/andygrunwald/go-trending@master
使用示例
获取今日所有语言的热门仓库
package main
import (
"fmt"
"github.com/andygrunwald/go-trending"
)
func main() {
trend := trending.NewTrending()
// 获取今日项目
projects, err := trend.GetProjects(trending.TimeToday, "")
if err != nil {
panic(err)
}
for index, project := range projects {
i := index + 1
if len(project.Language) > 0 {
fmt.Printf("%d: %s (written in %s with %d ★ )\n", i, project.Name, project.Language, project.Stars)
} else {
fmt.Printf("%d: %s (with %d ★ )\n", i, project.Name, project.Stars)
}
}
}
获取本周Go语言的热门仓库
package main
import (
"fmt"
"github.com/andygrunwald/go-trending"
)
func main() {
trend := trending.NewTrending()
// 获取本周Go项目
projects, err := trend.GetProjects(trending.TimeWeek, "go")
if err != nil {
panic(err)
}
for index, project := range projects {
i := index + 1
if len(project.Language) > 0 {
fmt.Printf("%d: %s (written in %s with %d ★ )\n", i, project.Name, project.Language, project.Stars)
} else {
fmt.Printf("%d: %s (with %d ★ )\n", i, project.Name, project.Stars)
}
}
}
获取本月Swift语言的趋势开发者
package main
import (
"fmt"
"github.com/andygrunwald/go-trending"
)
func main() {
trend := trending.NewTrending()
developers, err := trend.GetDevelopers(trending.TimeMonth, "swift")
if err != nil {
panic(err)
}
for index, developer := range developers {
i := index + 1
fmt.Printf("%d: %s (%s)\n", i, developer.DisplayName, developer.FullName)
}
}
获取可用语言列表
package main
import (
"fmt"
"github.com/andygrunwald/go-trending"
)
func main() {
trend := trending.NewTrending()
// 获取语言列表
languages, err := trend.GetLanguages()
if err != nil {
panic(err)
}
for index, language := range languages {
i := index + 1
fmt.Printf("%d: %s (%s)\n", i, language.Name, language.URLName)
}
}
许可证
该项目采用MIT许可证发布。
更多关于golang访问Github热门仓库和开发者数据插件库go-trending的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang访问Github热门仓库和开发者数据插件库go-trending的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用go-trending访问Github热门仓库和开发者数据
go-trending是一个Golang库,用于获取Github上的热门仓库和开发者数据。它提供了简单易用的API来查询Github的trending页面内容。
安装
首先安装go-trending库:
go get github.com/andygrunwald/go-trending
基本使用
1. 获取今日热门仓库
package main
import (
"fmt"
"github.com/andygrunwald/go-trending"
)
func main() {
client := trending.NewClient()
// 获取今日热门仓库
repos, err := client.GetTrendingRepos(trending.TimeToday, "")
if err != nil {
panic(err)
}
fmt.Println("今日热门仓库:")
for i, repo := range repos {
fmt.Printf("%d. %s (%s)\n", i+1, repo.Name, repo.URL)
fmt.Printf(" 描述: %s\n", repo.Description)
fmt.Printf(" 语言: %s, 星标: %d\n", repo.Language, repo.Stars)
fmt.Println("----------------------------------------")
}
}
2. 获取本周热门开发者
func getTrendingDevelopers() {
client := trending.NewClient()
// 获取本周热门开发者
devs, err := client.GetTrendingDevelopers(trending.TimeWeek, "")
if err != nil {
panic(err)
}
fmt.Println("\n本周热门开发者:")
for i, dev := range devs {
fmt.Printf("%d. %s (%s)\n", i+1, dev.DisplayName, dev.URL)
fmt.Printf(" 用户名: %s\n", dev.UserName)
if dev.Repo.Name != "" {
fmt.Printf(" 热门仓库: %s (%s)\n", dev.Repo.Name, dev.Repo.Description)
}
fmt.Println("----------------------------------------")
}
}
高级用法
1. 按语言过滤
func getTrendingReposByLanguage() {
client := trending.NewClient()
// 获取Go语言的今日热门仓库
repos, err := client.GetTrendingRepos(trending.TimeToday, "go")
if err != nil {
panic(err)
}
fmt.Println("\n今日Go语言热门仓库:")
for i, repo := range repos {
fmt.Printf("%d. %s (%s)\n", i+1, repo.Name, repo.URL)
fmt.Printf(" 语言: %s, 星标: %d\n", repo.Language, repo.Stars)
}
}
2. 获取不同时间段的趋势
func getTrendingWithDifferentTimeSpans() {
client := trending.NewClient()
// 可用的时间段选项
timeSpans := []trending.TimeSpan{
trending.TimeToday,
trending.TimeWeek,
trending.TimeMonth,
}
for _, span := range timeSpans {
repos, err := client.GetTrendingRepos(span, "")
if err != nil {
panic(err)
}
fmt.Printf("\n%s的热门仓库(共%d个):\n", span, len(repos))
for i := 0; i < 3 && i < len(repos); i++ {
fmt.Printf(" %d. %s\n", i+1, repos[i].Name)
}
}
}
完整示例
package main
import (
"fmt"
"github.com/andygrunwald/go-trending"
)
func main() {
client := trending.NewClient()
// 1. 获取今日热门仓库
fmt.Println("=== 今日热门仓库 ===")
repos, err := client.GetTrendingRepos(trending.TimeToday, "")
if err != nil {
panic(err)
}
printRepos(repos, 5)
// 2. 获取Go语言本周热门仓库
fmt.Println("\n=== Go语言本周热门仓库 ===")
goRepos, err := client.GetTrendingRepos(trending.TimeWeek, "go")
if err != nil {
panic(err)
}
printRepos(goRepos, 5)
// 3. 获取本月热门开发者
fmt.Println("\n=== 本月热门开发者 ===")
devs, err := client.GetTrendingDevelopers(trending.TimeMonth, "")
if err != nil {
panic(err)
}
printDevelopers(devs, 5)
}
func printRepos(repos []trending.Repository, max int) {
if max > len(repos) {
max = len(repos)
}
for i := 0; i < max; i++ {
repo := repos[i]
fmt.Printf("%d. %s (%s)\n", i+1, repo.Name, repo.URL)
fmt.Printf(" 描述: %s\n", repo.Description)
fmt.Printf(" 语言: %s, 星标: %d, 今日新增: %d\n",
repo.Language, repo.Stars, repo.StarsToday)
fmt.Println("----------------------------------------")
}
}
func printDevelopers(devs []trending.Developer, max int) {
if max > len(devs) {
max = len(devs)
}
for i := 0; i < max; i++ {
dev := devs[i]
fmt.Printf("%d. %s (%s)\n", i+1, dev.DisplayName, dev.URL)
fmt.Printf(" 用户名: %s\n", dev.UserName)
if dev.Repo.Name != "" {
fmt.Printf(" 热门仓库: %s - %s\n", dev.Repo.Name, dev.Repo.Description)
}
fmt.Println("----------------------------------------")
}
}
注意事项
- go-trending是通过爬取Github的trending页面实现的,不是官方API
- 如果Github的页面结构发生变化,可能需要更新库版本
- 频繁请求可能会被Github限制,建议适当控制请求频率
- 返回的数据结构与Github页面展示的内容一致
这个库非常适合需要获取Github趋势数据但又不想使用复杂API的项目。通过简单的几行代码,你就可以获取到Github上最热门的项目和开发者信息。