Fetch and track GitHub stargazers and followers
Project description
watchy
Python library and CLI tool for fetching and tracking GitHub stargazers and followers.
Features
- Fetch stargazers for GitHub repositories
- Fetch followers for GitHub users or organizations
- Save data to simple text files (one username per line)
Installation
pip install -e .
Usage
Command Line Interface
Fetch Repository Stargazers
# Single repository
watchy stars owner/repo
# Multiple repositories
watchy stars owner/repo1 owner/repo2 another-user/repo3
# All repositories for a user/org
watchy stars username
watchy stars orgname
# Mixed targets
watchy stars owner/repo username orgname
Fetch User/Organization Followers
# Single user
watchy follows username
# Multiple users
watchy follows user1 user2 user3
# Mix users and orgs
watchy follows user1 orgname user2
Output
watchy always:
- saves usernames to text files under
.watchy/ - prints usernames to stdout (first 5, ..., last 5 if >10 total)
- shows counts in log messages (to stderr)
File locations:
- Stargazers:
.watchy/github/stars/<owner>/<repo>.txt - Followers:
.watchy/github/follows/<user>.txt
Example output:
42 stargazers for owner/repo
alice
bob
charlie
david
emily
...
user38
user39
user40
user41
user42
Authentication
Watchy automatically loads GitHub tokens from:
--tokencommand line argumentGITHUB_TOKENenvironment variable.tokenfile in current directorygh auth token(GitHub CLI)
# Using environment variable
export GITHUB_TOKEN=your_personal_access_token
watchy stars owner/repo
# Using command line argument
watchy --token your_token stars owner/repo
# Using .token file
echo "your_token" > .token
watchy stars owner/repo
# Using GitHub CLI (if logged in)
gh auth login
watchy stars owner/repo # Automatically uses gh token
Rate Limiting
# Add delay between requests when fetching multiple repos
watchy stars myorg -s 1.0 # 1 second delay between repos
Python API
from watchy.github import GitHubClient
from watchy.storage import save_logins_to_txt
from pathlib import Path
# Create client (auto-detects token)
client = GitHubClient()
# Fetch stargazers
stargazers = list(client.get_stargazers("owner", "repo"))
logins = save_logins_to_txt(iter(stargazers), Path("stargazers.txt"))
# Fetch followers
followers = list(client.get_followers("username"))
Development
# Install with dev dependencies
pip install -e .[dev]
# Lint
ruff check src/watchy/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
watchy-0.0.3.tar.gz
(5.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file watchy-0.0.3.tar.gz.
File metadata
- Download URL: watchy-0.0.3.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d579f45b585b90401d9bc92fc3de4e2531e7059c34bbfd68c09cf4c69fad6966
|
|
| MD5 |
03793a0bf9af21d9b226ef91f3ff8b15
|
|
| BLAKE2b-256 |
eab58df28ec1aa2811f5b674195cd59c101175b2cb5af70a6f76699e26d0ef94
|
File details
Details for the file watchy-0.0.3-py3-none-any.whl.
File metadata
- Download URL: watchy-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
881ab6c6f746fab7e695f02bb34ad0b8150f7d0108f2d28ab5e8aac28e6cf95d
|
|
| MD5 |
e958e7081cdfd0930f0f512e95c286e2
|
|
| BLAKE2b-256 |
5753684ffbd81751672d4874d279cfdd2ffb1d9fb58c5c8983bd3fca2745f515
|