这是一个用于自动同步 GitHub 用户 star 列表的 Python 工具。你可以通过它快速获取并同步其他 GitHub 用户的 star 列表,实现批量 star 操作。
- 🚀 异步请求:使用
aiohttp
实现高效的异步 HTTP 请求 - 📝 断点续传:通过进度文件记录已处理的仓库,支持中断后继续执行
- 📊 进度显示:使用
tqdm
提供友好的进度显示和预计剩余时间 - ⚡ 智能重试:遇到请求失败时自动重试,提高任务成功率
- 🔄 API 限制处理:自动处理 GitHub API 速率限制,避免请求失败
pip install aiohttp tqdm asyncio pathlib
- 运行脚本:
python star_following_repos.py <target_username> <your_username> <your_token>
参数说明:
target_username
: 要同步的目标用户名your_username
: 你的 GitHub 用户名your_token
: 你的 GitHub 访问令牌
示例:
python star_following_repos.py target_user your_user your_token
- 使用 Python 的
asyncio
和aiohttp
库实现异步操作 - 采用分页方式获取完整的 star 列表(每页 100 条数据)
- 实现 API 速率限制检测和等待机制
- 使用
pathlib
进行跨平台文件路径处理 - 使用
tqdm
提供实时进度显示和预计剩余时间 - 使用
json
进行数据持久化存储 - 支持断点续传,记录已处理的仓库列表
- 使用异步会话管理,避免频繁创建连接
- 实现智能重试机制,最多重试 3 次
- 每次请求后增加适当延迟,避免触发 API 限制
- 使用进度条提供友好的进度显示
- 支持优雅的错误处理和异常恢复
-
Token 获取:
- 访问 GitHub Settings -> Developer settings -> Personal access tokens
- 创建新的 token,确保勾选
public_repo
权限
-
API 限制:
- GitHub API 有速率限制,脚本会自动处理限制等待
- 认证用户每小时可以发起 5000 次请求
-
数据文件:
- 脚本会生成两个 JSON 文件:
{target_username}_starred_repos.json
: 存储目标用户的 star 列表{target_username}_progress.json
: 记录处理进度
- 脚本会生成两个 JSON 文件:
MIT License