Skip to content

RepoPulse 是一个 GitHub Trending 仓库分析工具,能够自动抓取 GitHub 上最热门的仓库,并根据仓库的名称和描述进行智能分类,计算出当前最热门的技术话题。

License

Notifications You must be signed in to change notification settings

lemonmindyes/RepoPulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RepoPulse - GitHub Trending Topics Analyzer

Python License Visitors

RepoPulse 是一个 GitHub Trending 仓库分析工具,能够自动抓取 GitHub 上最热门的仓库,并根据仓库的名称和描述进行智能分类,计算出当前最热门的技术话题。

🌟 功能特性

  • 自动抓取 GitHub Trending 仓库:从多个编程语言分类中获取最新的热门仓库
  • 智能话题分类:使用 TF-IDF 算法对仓库进行自动分类
  • 热度计算:基于仓库的每日星数和总星数计算话题热度
  • 美观的终端界面:使用 Rich 库展示漂亮的终端界面
  • 多语言支持:支持 Python、Go、C、C++ 等多种编程语言的仓库
  • 异步爬取:使用 asyncio 和 aiohttp 实现高效并发爬取,大幅提升数据获取速度
  • 代理支持:支持通过代理访问 GitHub(默认配置为 http://127.0.0.1:7890)以提高爬取稳定性

📊 话题分类

项目目前支持以下技术话题分类:

  • LLM_Infra: 大语言模型基础设施
  • Multimodal_AI: 多模态人工智能
  • Agent_MCP: 智能代理和模型上下文协议
  • Database_Storage: 数据库和存储系统
  • System_Kernel: 系统内核开发
  • Embedded_Firmware: 嵌入式系统和固件
  • Networking_Security: 网络安全
  • DevTool_Testing: 开发工具和测试
  • CLI_Editor: 命令行工具和编辑器
  • WebApp_Monitoring: Web 应用和监控
  • Game_Physics: 游戏引擎和物理引擎
  • Collection_Edu: 教程和教育资源
  • FinTech: 金融科技

🛠️ 安装

依赖要求

pip install requests lxml fake_useragent scikit-learn rich aiohttp certifi

安装步骤

  1. 克隆项目:
git clone https://github.com/your-username/RepoPulse.git
cd RepoPulse
  1. 安装依赖:
pip install -r requirements.txt

如果项目根目录没有 requirements.txt 文件,可以手动安装依赖:

pip install requests lxml fake_useragent scikit-learn rich aiohttp certifi

🚀 使用方法

直接运行

python main.py

命令行参数

你可以使用以下命令行参数来自定义分析:

  • --time-range: 设置分析时间范围,可选值为 daily (每日)、weekly (每周)、monthly (每月),默认为 daily
  • --languages: 指定要分析的编程语言列表,默认为 python c++ c java javascript typescript go rust

例如:

# 分析每日趋势,仅包含Python和Go语言
python main.py --time-range daily --languages python go

# 分析每周趋势,包含多种语言
python main.py --time-range weekly --languages python java javascript

各模块功能

  • crawler.py: 抓取 GitHub Trending 仓库数据(支持异步并发和代理访问)
  • analysis.py: 分析仓库并进行话题分类
  • topic.py: 计算话题热度
  • cli.py: 在终端中展示结果
  • main.py: 主程序入口

📁 项目结构

RepoPulse/
├── main.py          # 主程序入口
├── crawler.py       # GitHub Trending 仓库爬虫
├── analysis.py      # 仓库分析与话题分类
├── topic.py         # 话题热度计算
├── cli.py           # 终端界面展示
├── trending.json    # 抓取的仓库数据存储
└── README.md        # 项目说明文档

🔍 工作原理

  1. 数据抓取:从 GitHub Trending 页面抓取热门仓库信息
  2. 文本分析:使用 TF-IDF 算法分析仓库名称和描述
  3. 话题分类:将仓库归类到预定义的技术话题
  4. 热度计算:基于每日星数和总星数计算话题热度
  5. 结果展示:在终端中以表格形式展示热门话题和相关仓库

📈 输出示例

运行程序后,你将看到类似以下的输出:

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│                          🔥 GitHub Trending Topics                          │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  🔥 Agent_MCP                                                               │
│  Heat: 906.79   Repos: 17   AvgScore: 0.216                                 │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
   # │ Repository                   │  Lang  │ ⭐ Stars │ 🚀 Daily │ Score 
═════╪══════════════════════════════╪════════╪══════════╪══════════╪═══════
   1 │ BloopAI/vibe-kanban          │  Rust  │    9,838 │     1573 │ 0.429 
   2 │ anthropics/skills            │ Python │   30,670 │      914 │ 0.268 
   3 │ timescale/pg-aiguide         │ Python │      922 │      321 │ 0.306 
   4 │ openai/codex                 │  Rust  │   54,989 │       60 │ 0.300 
   5 │ LaurieWired/GhidraMCP        │  Java  │    6,887 │       48 │ 0.150 

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  🔥 DevTool_Testing                                                         │
│  Heat: 549.25   Repos: 11   AvgScore: 0.232                                 │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
   # │ Repository                   │  Lang  │ ⭐ Stars │ 🚀 Daily │ Score 
═════╪══════════════════════════════╪════════╪══════════╪══════════╪═══════
   1 │ pathwaycom/pathway           │ Python │   52,781 │      564 │ 0.157 
   2 │ looplj/axonhub               │   Go   │    1,145 │       71 │ 0.111 
   3 │ gohugoio/hugo                │   Go   │   85,690 │       38 │ 0.313 
   4 │ cloudwego/eino               │   Go   │    8,892 │       32 │ 0.222 
   5 │ google/perfetto              │  C++   │    5,323 │       17 │ 0.222 

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  🔥 WebApp_Monitoring                                                       │
│  Heat: 535.28   Repos: 7   AvgScore: 0.228                                  │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
   # │ Repository                   │    Lang    │ ⭐ Stars │ 🚀 Daily │ Score 
═════╪══════════════════════════════╪════════════╪══════════╪══════════╪═══════
   1 │ sansan0/TrendRadar           │   Python   │   41,686 │      338 │ 0.118 
   2 │ alexta69/metube              │   Python   │   11,686 │      330 │ 0.481 
   3 │ louislam/uptime-kuma         │ JavaScript │   80,623 │      263 │ 0.373 
   4 │ henrygd/beszel               │     Go     │   18,168 │       79 │ 0.118 
   5 │ swc-project/swc              │    Rust    │   33,100 │        7 │ 0.167 

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  🔥 Game_Physics                                                            │
│  Heat: 518.52   Repos: 5   AvgScore: 0.356                                  │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
   # │ Repository                   │    Lang    │ ⭐ Stars │ 🚀 Daily │ Score 
═════╪══════════════════════════════╪════════════╪══════════╪══════════╪═══════
   1 │ jrouwe/JoltPhysics           │    C++     │    9,097 │      172 │ 0.403 
   2 │ godotengine/godot            │    C++     │  104,607 │       51 │ 0.413 
   3 │ 4ian/GDevelop                │ JavaScript │   18,937 │       45 │ 0.377 
   4 │ facebook/hermes              │ JavaScript │   10,699 │       22 │ 0.327 
   5 │ NVIDIA/open-gpu-kernel-modu… │     C      │   16,562 │        7 │ 0.259 

┌─────────────────────────────────────────────────────────────────────────────┐
│                                                                             │
│  🔥 Collection_Edu                                                          │
│  Heat: 463.22   Repos: 8   AvgScore: 0.220                                  │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
   # │ Repository                   │    Lang    │ ⭐ Stars │ 🚀 Daily │ Score 
═════╪══════════════════════════════╪════════════╪══════════╪══════════╪═══════
   1 │ Shubhamsaboo/awesome-llm-ap… │   Python   │   85,638 │      312 │ 0.194 
   2 │ github/awesome-copilot       │ JavaScript │   15,936 │      100 │ 0.204 
   3 │ organicmaps/organicmaps      │    C++     │   12,432 │       40 │ 0.204 
   4 │ rossant/awesome-math         │   Python   │   12,584 │       16 │ 0.386 
   5 │ kunal-kushwaha/DSA-Bootcamp… │    Java    │   21,456 │       13 │ 0.144 

🤝 贡献

欢迎提交 Issue 和 Pull Request 来帮助改进这个项目!

📄 许可证

本项目采用 Apache 2.0 许可证 - 查看 LICENSE 文件了解详情。

🙏 鸣谢

  • 感谢所有开源贡献者
  • 使用了以下优秀的开源库:

About

RepoPulse 是一个 GitHub Trending 仓库分析工具,能够自动抓取 GitHub 上最热门的仓库,并根据仓库的名称和描述进行智能分类,计算出当前最热门的技术话题。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages