Skip to main content

A tool to 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:

  1. --token command line argument
  2. GITHUB_TOKEN environment variable
  3. .token file in current directory
  4. gh 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


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.1.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

watchy-0.0.1-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file watchy-0.0.1.tar.gz.

File metadata

  • Download URL: watchy-0.0.1.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for watchy-0.0.1.tar.gz
Algorithm Hash digest
SHA256 c5616336714e65997b882fc8d6d74b1a14ce452b3cdf2194e10153cf3511d924
MD5 ed09745e83e14f942d22fc594ee8cd81
BLAKE2b-256 079590eeb35461b028ea2c87e021ed608d413b7ac04d447cc84ac8b6a41f19e9

See more details on using hashes here.

File details

Details for the file watchy-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: watchy-0.0.1-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

Hashes for watchy-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ddc5a87a617821253a34f60aa1921f4b90206e0bb77636ccd046c6c6e5aa858
MD5 fb3703847997b6b907ecfcec15eb2ea4
BLAKE2b-256 6a96fc435f7a5e87335cf96921d91c81e020396cfce92369c85bdf2fba9851a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page