PyScript-GitHubRepo Logo PyScript-GitHubRepo
View on GitHub
PyScript-GitHubRepo Logo

Batch Download & Sync GitHub Repositories at Scale

A modern, high-performance Python CLI tool for cloning or archiving GitHub repositories concurrently with advanced language, star, and recency filtering.

bash - uv run main.py

$ uv run main.py --username tiangolo --max-workers 5 --min-stars 100 --language Python

🚀 PyScript-GitHubRepo v0.2.0

User: tiangolo | Token: *** | Mode: zip

🔍 Fetching repositories for: tiangolo...

✅ Found 12 repositories matching criteria.

📥 Starting download to: D:\Code\PyScript-GitHubRepo\repos

Concurrency: 5 threads

✅ Completed fastapi [====================] 100%

✅ Completed sqlmodel [====================] 100%

⏭️ Skipped tyro (No update) [====================] 100%

============================================================

✨ Sync Completed!

⏱️ Duration:
12.34 seconds
✅ Success:
11 (91.7%)
⏭️ Skipped:
1

Engineered for Velocity & Flexibility

Designed to handle high concurrency while keeping rate limits and bandwidth footprint minimal.

High Concurrency

Parallel downloads using configurable thread pools. Synchronizes hundreds of repositories in seconds.

Dual-Mode Download

Support for git clone (retains commit history) or lightweight zip archiving (fastest download, low disk usage).

Metadata Filtering

Filter target repositories locally by primary programming language, star threshold, and last updated timestamps.

Automated Reports

Generates unified summary logs and formatted reports in Markdown, CSV, or structured JSON configurations automatically.

Incremental Sync

Smart state checks query local metadata sync logs to skip redundant downloads of unmodified repositories.

Agent & CLI-First

Supports standardized --json mode pipelines and reliable exit codes suited for orchestration engines.

Get Started in Seconds

PyScript-GitHubRepo requires Python 3.11+. The easiest way to get started is using Astral's uv runner, which automates environment creation and fetches dependencies instantly.

1

Cloning the repository

git clone https://github.com/NotSleeply/PyScript-GitHubRepo.git
cd PyScript-GitHubRepo
2

Installing dependencies

uv pip install -e .
3

Running a query

uv run main.py --username tiangolo --max-repos 5

⚙️ Config File Example (config.yaml)

github:
  username: "octocat"
  token: "ghp_yourpersonalaccesstoken"

download:
  mode: "zip"          # "git" or "zip"
  save_path: "./repos"
  target_ref: "main"     # target branch/tag

filter:
  language: "Python"
  min_stars: 100
  max_repos: 50

concurrency:
  max_workers: 5        # thread limit
                        

Pass config location to CLI via --config config.yaml. Any command line arguments take priority over YAML keys.