Skip to main content

Turn your GitHub star growth into a scrolling video.

Project description

star-growth

PyPI Release pipeline

Turn your GitHub star growth into a scrolling MP4 or GIF animation with a single command-line tool.

Install

pip install star-growth

FFmpeg is pulled in automatically through imageio-ffmpeg, but make sure your platform can build wheels for Pillow and MoviePy.

Quick start

Run the CLI after installing the package:

star-growth --owner esubaalew --repo run

Short flags are available too. For example, the following writes a GIF preview:

star-growth -u esubaalew -r run -o stars.gif -f gif

The command fetches the latest stargazers, renders a GitHub-style card, and writes star_growth.mp4 in the working directory.

By default the tool creates an MP4. Pass -f gif / --format gif (or end the --output value with .gif) to write an animated GIF instead. Only MP4 and GIF are currently supported.

Popular options

  • -o stars.mp4 / --output stars.mp4 – customise the export path (a numeric suffix prevents overwrites)
  • -f gif / --format gif – export an animated GIF instead of an MP4
  • -s 2024-01-01 / --start-date 2024-01-01 – only include stars on/after this UTC date (supports ISO 8601 timestamps)
  • -E 2024-01-31 / --end-date 2024-01-31 – only include stars on/before this UTC date (full-day ranges when you omit a time)
  • -d 8 / --duration 8 and -p 24 / --fps 24 – tune animation pacing
  • -m 30 / --max-entries 30 – limit the number of rows rendered
  • -t "My stars" / --title "My stars" – override the header label
  • -e linear / --easing linear – swap the easing curve
  • -F frames/ / --frames-dir frames/ – specify a directory for intermediate PNGs
  • -k / --keep-frames – keep the intermediate PNGs after rendering
  • -T $TOKEN / --token $TOKEN – use a GitHub personal access token
  • -w 5 / --timeout 5 – shrink the GitHub request timeout
  • -R 5 / --max-retries 5 – increase retry attempts
  • -b 1.5 / --retry-backoff 1.5 – adjust retry backoff seconds
  • -a 8 / --avatar-workers 8 – change avatar download concurrency
  • -q / --no-progress – hide the frame rendering progress bar

Run star-growth --help or star-growth --version for more details.

Sample output

Sample star growth animation

Watch the full MP4 generated from the latest stargazers on esubaalew/run.

Use it from Python

from star_growth import StarsAnimationConfig, generate_scrolling_stars

config = StarsAnimationConfig(
	owner="octocat",
	repo="Hello-World",
	output="stars.mp4",
)

video_path = generate_scrolling_stars(config)
print(f"Video saved to {video_path}")

Frames are written to a temporary directory and cleaned up automatically. Pass cleanup_frames=False (or --keep-frames on the CLI) to inspect them.

Set output_format="gif" (or --format gif) if you want to generate an animated GIF instead of an MP4. Other containers aren't supported today, so choose whichever suits the platform you're sharing on.

Develop locally

python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
pytest

The editable install keeps the CLI (star-growth) in sync with your workspace changes.

Release automation

Tags that follow the v* pattern trigger the Release GitHub Actions workflow. To publish to PyPI, add a repository secret named PYPI_API_TOKEN containing an API token created in your PyPI account ("Publish" scope). The workflow will build the wheel and source tarball and upload them to https://pypi.org/project/star-growth/.

Troubleshooting

  • Missing avatars – GitHub occasionally rate-limits avatar requests; initials placeholders are rendered when that happens.
  • Fonts look off – Install DejaVuSans locally or update the font paths inside star_growth/generator.py.
  • Large repositories – Provide a personal access token and raise --max-retries / --retry-backoff when you expect heavy traffic.

Be mindful of GitHub's terms of service and the privacy expectations of your stargazers when sharing renders.

License

Released under the Apache License 2.0 by Esubalew Chekol. See the upstream copy at github.com/esubaalew/star-growth for the canonical license record.

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

star_growth-0.2.0.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

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

star_growth-0.2.0-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file star_growth-0.2.0.tar.gz.

File metadata

  • Download URL: star_growth-0.2.0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for star_growth-0.2.0.tar.gz
Algorithm Hash digest
SHA256 098a3dc76cbe5fb58924448d2c71e8c268b752f1513f9f302c982c2b6fdfb59c
MD5 c12d78a27b6da9f7a39f87494fefb8c4
BLAKE2b-256 fcf075fb68c6ab489ca135f8da4058a87b3fae078cc42cebc527b4921e9a3ebc

See more details on using hashes here.

File details

Details for the file star_growth-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: star_growth-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for star_growth-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2dfc6eb05509f139055eec0807c59898abf47fb5d26bb9345bfc1c859b185b9
MD5 ceb82a10907b5dcb023f8a079fe6961b
BLAKE2b-256 1b66dbb283956608f62b72fa49a14962cd28de4c87bd84111be359087a278317

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